diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-10-10 17:07:45 -0400 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-10-10 17:07:45 -0400 |
| commit | 62dae6011db94dd52c3ac0fce517c6e9cc0abcf6 (patch) | |
| tree | 1700442c9b6648af7ec8781af0ec92856a93cecd /src/pke-at-storage-interface.hpp | |
| parent | cc8653536c499df4b85aae423ad6b27bb74544be (diff) | |
pke-at: first-pass storage interface
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 */ |
