diff options
Diffstat (limited to 'src/pke-at-storage-interface.hpp')
| -rw-r--r-- | src/pke-at-storage-interface.hpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/pke-at-storage-interface.hpp b/src/pke-at-storage-interface.hpp new file mode 100644 index 0000000..f240974 --- /dev/null +++ b/src/pke-at-storage-interface.hpp @@ -0,0 +1,50 @@ +#ifndef PKE_AT_PKE_AT_STORAGE_INTERFACE_HPP +#define PKE_AT_PKE_AT_STORAGE_INTERFACE_HPP + +#include "pke-at-setlist-types.hpp" + +#include <pke/pke.hpp> + +enum pke_at_storage_interface_result_code { + pke_at_storage_interface_result_code_success = 0, + pke_at_storage_interface_result_code_err = 1, +}; + +struct pke_at_storage_interface_response { + enum pke_at_storage_interface_result_code result_code; +}; + +template <typename T> +struct pke_at_storage_interface_response_t { + enum pke_at_storage_interface_result_code result_code; + T *value; +}; + +/* 2025-10-09 JCB Why do you do this to yourself */ + +#define PASI(type,func) pke_at_storage_interface_##type##_##func + +#define PASIR_DEL(type) pke_at_storage_interface_response PASI(type,delete)(pk_uuid uuid) +#define PASIR_GET(type,T) pke_at_storage_interface_response_t<T> PASI(type,get)(pk_uuid uuid) +#define PASIR_UPS(type,T) pke_at_storage_interface_response PASI(type,upsert)(const T &val) + +struct pke_at_storage_interface { + pke_at_storage_interface() = default; + virtual ~pke_at_storage_interface() = default; + virtual void init() const = 0; + virtual void teardown() const = 0; + virtual PASIR_DEL(section) const = 0; + virtual PASIR_GET(section, pke_at_section_details) const = 0; + virtual PASIR_UPS(section, pke_at_section_details) const = 0; + virtual PASIR_DEL(setlist) const = 0; + virtual PASIR_GET(setlist, pke_at_setlist_details) const = 0; + virtual PASIR_UPS(setlist, pke_at_setlist_details) const = 0; + virtual PASIR_DEL(setlist_song) const = 0; + virtual PASIR_GET(setlist_song, pke_at_setlist_song_details) const = 0; + virtual PASIR_UPS(setlist_song, pke_at_setlist_song_details) const = 0; + virtual PASIR_DEL(song) const = 0; + virtual PASIR_GET(song, pke_at_song_details) const = 0; + virtual PASIR_UPS(song, pke_at_song_details) const = 0; +}; + +#endif /* PKE_AT_PKE_AT_STORAGE_INTERFACE_HPP */ |
