aboutsummaryrefslogtreecommitdiff
path: root/174bg/discord-bot/source/controllers/pocketbase.js
diff options
context:
space:
mode:
Diffstat (limited to '174bg/discord-bot/source/controllers/pocketbase.js')
-rw-r--r--174bg/discord-bot/source/controllers/pocketbase.js40
1 files changed, 40 insertions, 0 deletions
diff --git a/174bg/discord-bot/source/controllers/pocketbase.js b/174bg/discord-bot/source/controllers/pocketbase.js
new file mode 100644
index 0000000..4046391
--- /dev/null
+++ b/174bg/discord-bot/source/controllers/pocketbase.js
@@ -0,0 +1,40 @@
+/**
+ * Controller module for interacting with the PocketBase API.
+ */
+
+import PocketBase from "pocketbase";
+
+const { POCKETBASE_URL, POCKETBASE_SUPERUSER_EMAIL, POCKETBASE_SUPERUSER_PASSWORD } = process.env;
+
+/**
+ * Logs in to the PocketBase API using the superuser credentials.
+ * @returns {Promise<PocketBase>} A Promise that resolves to the authenticated PocketBase instance.
+ */
+export async function login() {
+ const pb = new PocketBase(POCKETBASE_URL);
+ await pb.collection("_superusers").authWithPassword(POCKETBASE_SUPERUSER_EMAIL, POCKETBASE_SUPERUSER_PASSWORD);
+ return pb;
+}
+
+/**
+ * Logs out of the PocketBase API by clearing the authentication store.
+ * @param {PocketBase} pb - The PocketBase instance to log out from.
+ * @returns {Promise<void>} A Promise that resolves when the logout is complete.
+ */
+export async function logout(pb) {
+ await pb.authStore.clear();
+}
+
+/**
+ * Retrieves the full list of records from a specified collection in the PocketBase API.
+ * @param {string} collectionName - The name of the collection to retrieve records from.
+ * @returns {Promise<RecordModel[]>} A Promise that resolves to an array of records from the specified collection.
+ */
+export async function getFullList(collectionName) {
+ const pb = await login();
+ const data = await pb.collection(collectionName).getFullList();
+ await logout(pb);
+ return data;
+}
+
+export default { login, logout, getFullList } \ No newline at end of file