summaryrefslogtreecommitdiff
path: root/src/pke-at-storage-interface.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/pke-at-storage-interface.hpp')
-rw-r--r--src/pke-at-storage-interface.hpp50
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 */