about summary refs log tree commit diff
path: root/users/grfn/bbbg/resources
diff options
context:
space:
mode:
authorGriffin Smith <grfn@gws.fyi>2021-12-14T02·28-0500
committerGriffin Smith <grfn@gws.fyi>2021-12-14T02·45-0500
commitc3cb7b0df82479016c252ef45a302f566bd569f6 (patch)
tree2f60fac21680a379950c7d34c2e12304e10cc115 /users/grfn/bbbg/resources
parent479e9ea279a157d81964a9b8cc97423b484921e6 (diff)
feat(grfn/bbbg): Init r/3233
This will eventually become a signup sheet + no-show tracker for my
local board game meetup group

Change-Id: Id8d1d80d95d1e2fda5041275cff2fecfd6fa43f1
Diffstat (limited to 'users/grfn/bbbg/resources')
-rw-r--r--users/grfn/bbbg/resources/main.js49
-rw-r--r--users/grfn/bbbg/resources/migrations/20211212165646-init-schema.down.sql14
-rw-r--r--users/grfn/bbbg/resources/migrations/20211212165646-init-schema.up.sql31
3 files changed, 94 insertions, 0 deletions
diff --git a/users/grfn/bbbg/resources/main.js b/users/grfn/bbbg/resources/main.js
new file mode 100644
index 000000000000..d4752f114167
--- /dev/null
+++ b/users/grfn/bbbg/resources/main.js
@@ -0,0 +1,49 @@
+window.onload = () => {
+  console.log("loaded");
+  const input = document.getElementById("name-autocomplete");
+  if (input != null) {
+    const eventID = document.getElementById("event-id").value;
+
+    const autocomplete = new autoComplete({
+      selector: "#name-autocomplete",
+      placeHolder: "Enter your name",
+      data: {
+        src: async (query) => {
+          const resp = await fetch(
+            `/attendees.json?q=${query}&event_id=${eventID}&attended=false`
+          );
+          console.log("got resp");
+          const { results } = await resp.json();
+          return results;
+        },
+        keys: ["bbbg.attendee/meetup-name"],
+      },
+      resultItem: {
+        highlight: {
+          render: true,
+        },
+      },
+    });
+
+    input.addEventListener("selection", function (event) {
+      const attendee = event.detail.selection.value;
+      event.target.value = attendee["bbbg.attendee/meetup-name"];
+
+      const attendeeID = attendee["bbbg.attendee/id"];
+      document.getElementById("attendee-id").value = attendeeID;
+      document.getElementById("signup-form").removeAttribute("disabled");
+      document
+        .getElementById("signup-form")
+        .querySelector('input[type="submit"]')
+        .removeAttribute("disabled");
+    });
+  }
+
+  document.querySelectorAll("form").forEach((form) => {
+    form.onsubmit = (e) => {
+      if (e.target.attributes.disabled) {
+        e.preventDefault();
+      }
+    };
+  });
+};
diff --git a/users/grfn/bbbg/resources/migrations/20211212165646-init-schema.down.sql b/users/grfn/bbbg/resources/migrations/20211212165646-init-schema.down.sql
new file mode 100644
index 000000000000..69b818a4f4ab
--- /dev/null
+++ b/users/grfn/bbbg/resources/migrations/20211212165646-init-schema.down.sql
@@ -0,0 +1,14 @@
+drop table "public"."user";
+
+-- ;;
+
+drop table "public"."event_attendee";
+
+
+-- ;;
+
+drop table "public"."event";
+
+-- ;;
+
+drop table "public"."attendee";
diff --git a/users/grfn/bbbg/resources/migrations/20211212165646-init-schema.up.sql b/users/grfn/bbbg/resources/migrations/20211212165646-init-schema.up.sql
new file mode 100644
index 000000000000..8c3276e1e61d
--- /dev/null
+++ b/users/grfn/bbbg/resources/migrations/20211212165646-init-schema.up.sql
@@ -0,0 +1,31 @@
+CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
+-- ;;
+CREATE TABLE "attendee" (
+    "id" UUID PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(),
+    "meetup_name" TEXT NOT NULL,
+    "discord_name" TEXT,
+    "meetup_user_id" TEXT,
+    "organizer_notes" TEXT NOT NULL DEFAULT '',
+    "created_at" TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT now()
+);
+-- ;;
+CREATE TABLE "event" (
+    "id" UUID PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(),
+    "date" DATE NOT NULL,
+    "created_at" TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT now()
+);
+-- ;;
+CREATE TABLE "event_attendee" (
+    "event_id" UUID NOT NULL REFERENCES "event" ("id"),
+    "attendee_id" UUID NOT NULL REFERENCES "attendee" ("id"),
+    "rsvpd_attending" BOOL,
+    "attended" BOOL,
+    "created_at" TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT now(),
+    PRIMARY KEY ("event_id", "attendee_id")
+);
+-- ;;
+CREATE TABLE "user" (
+    "id" UUID PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(),
+    "discord_user_id" TEXT NOT NULL,
+    "created_at" TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT now()
+);