diff --git a/apps/blade/src/app/_components/admin/hackathon/manage/hackathon-manager.tsx b/apps/blade/src/app/_components/admin/hackathon/manage/hackathon-manager.tsx
index 3b5c8573f..aab6b35c0 100644
--- a/apps/blade/src/app/_components/admin/hackathon/manage/hackathon-manager.tsx
+++ b/apps/blade/src/app/_components/admin/hackathon/manage/hackathon-manager.tsx
@@ -103,6 +103,13 @@ const formSchema = z
theme: hackathonThemeSchema,
applicationBackgroundEnabled: z.boolean(),
applicationBackgroundKey: hackathonApplicationBackgroundKeySchema,
+ backgroundImageName: z.string().optional(),
+ backgroundColorEnabled: z.boolean(),
+ backgroundColor: z.string().optional(),
+ foregroundColorEnabled: z.boolean(),
+ foregroundColor: z.string().optional(),
+ accentColorEnabled: z.boolean(),
+ accentColor: z.string().optional(),
emailTemplateEnabled: z.boolean(),
emailTemplateKey: hackathonEmailTemplateKeySchema,
applicationOpen: z.string().min(1, "Application open is required."),
@@ -195,6 +202,13 @@ function getDefaultValues(
applicationBackgroundKey: getSafeBackgroundKey(
hackathon.applicationBackgroundKey,
),
+ backgroundImageName: hackathon.backgroundImageName ?? undefined,
+ backgroundColorEnabled: !!hackathon.backgroundColor,
+ backgroundColor: hackathon.backgroundColor ?? "#ffffff",
+ foregroundColorEnabled: !!hackathon.foregroundColor,
+ foregroundColor: hackathon.foregroundColor ?? "#000000",
+ accentColorEnabled: !!hackathon.accentColor,
+ accentColor: hackathon.accentColor ?? "#ff0000",
emailTemplateEnabled: hackathon.emailTemplateEnabled,
emailTemplateKey: getSafeEmailTemplateKey(hackathon.emailTemplateKey),
applicationOpen: toDateTimeLocalValue(hackathon.applicationOpen),
@@ -221,6 +235,13 @@ function getDefaultValues(
theme: "",
applicationBackgroundEnabled: false,
applicationBackgroundKey: DEFAULT_BACKGROUND_KEY,
+ backgroundImageName: undefined,
+ backgroundColorEnabled: false,
+ backgroundColor: "#ffffff",
+ foregroundColorEnabled: false,
+ foregroundColor: "#000000",
+ accentColorEnabled: false,
+ accentColor: "#ff0000",
emailTemplateEnabled: false,
emailTemplateKey: DEFAULT_EMAIL_TEMPLATE_KEY,
applicationOpen: toDateTimeLocalValue(applicationOpen),
@@ -246,6 +267,14 @@ function toMutationPayload(values: HackathonFormValues) {
emailTemplateKey: values.emailTemplateEnabled
? (values.emailTemplateKey as EmailTemplateKey | undefined)
: null,
+ backgroundImageName: values.backgroundImageName ?? null,
+ backgroundColor: values.backgroundColorEnabled
+ ? values.backgroundColor
+ : null,
+ foregroundColor: values.foregroundColorEnabled
+ ? values.foregroundColor
+ : null,
+ accentColor: values.accentColorEnabled ? values.accentColor : null,
applicationOpen: new Date(values.applicationOpen),
applicationDeadline: new Date(values.applicationDeadline),
confirmationDeadline: new Date(values.confirmationDeadline),
@@ -618,6 +647,98 @@ export function HackathonManager() {
/>
+
+
-
- Register for Knight Hacks today!
-
-
- {
- //if there is no current hackathon then this page is never rendered anyway
- currentHackathon && (
-
- )
- }
-
-
- );
- }
-
return (
<>
-
-
- Hello, {hacker.firstName}!
-
-
Hackathon Dashboard
-
-
- {/* Main content */}
-
+
+ {!hacker ? (
+
+
+ Register for Knight Hacks today!
+
+
+ {currentHackathon && (
+
+ )}
+
+
+ ) : (
+ <>
+
+
+ Hello, {hacker.firstName}!
+
+
Hackathon Dashboard
+
+
+ {/* Main content */}
+
- {/* Transparent Triangle overlay in bottom right corner */}
-
+ {/* Transparent Triangle overlay in bottom right corner */}
+
- {/* Triangle in bottom right corner */}
-
+ {/* Triangle in bottom right corner */}
+
- {/* Top rectangle */}
-
+ {/* Top rectangle */}
+
- {/* Bottom rectangle */}
-
+ {/* Bottom rectangle */}
+
- {/* Left side rectangle */}
-
-
-
- {resume.status === "rejected" ||
- pastHackathons.status === "rejected" ? (
-
- Something went wrong. Please try again later.
+ {/* Left side rectangle */}
+
+
+
+ {resume.status === "rejected" ||
+ pastHackathons.status === "rejected" ? (
+
+ Something went wrong. Please try again later.
+
+ ) : (
+ <>
+
+
+ >
+ )}
- ) : (
- <>
-
-
- >
- )}
-
+ >
+ )}
>
);
}
diff --git a/apps/blade/src/app/_components/dashboard/hacker-dashboard/hacker-resume-button.tsx b/apps/blade/src/app/_components/dashboard/hacker-dashboard/hacker-resume-button.tsx
index 6980096de..594c221d0 100644
--- a/apps/blade/src/app/_components/dashboard/hacker-dashboard/hacker-resume-button.tsx
+++ b/apps/blade/src/app/_components/dashboard/hacker-dashboard/hacker-resume-button.tsx
@@ -11,7 +11,7 @@ export function HackerResumeButton({
if (!resume.url) {
return (
-
+
@@ -21,7 +21,7 @@ export function HackerResumeButton({
return (
-
+
diff --git a/apps/blade/src/app/_components/dashboard/hacker-dashboard/past-hackathons.tsx b/apps/blade/src/app/_components/dashboard/hacker-dashboard/past-hackathons.tsx
index 463f3de06..470c7909d 100644
--- a/apps/blade/src/app/_components/dashboard/hacker-dashboard/past-hackathons.tsx
+++ b/apps/blade/src/app/_components/dashboard/hacker-dashboard/past-hackathons.tsx
@@ -14,7 +14,7 @@ import { time } from "@forge/utils";
import type { api } from "~/trpc/server";
const triggerClassName =
- "relative flex h-14 w-full cursor-pointer items-center justify-center gap-x-2 border border-[#1F2937] bg-transparent transition-all duration-200 ease-in-out hover:bg-[#E5E7EB] dark:hover:bg-[#1F2937]";
+ "relative flex h-14 w-full cursor-pointer items-center justify-center gap-x-2 border border-[#1F2937] bg-background transition-all duration-200 ease-in-out hover:bg-[#E5E7EB] dark:hover:bg-[#1F2937]";
export function PastHackathonButton({
hackathons,
diff --git a/apps/blade/src/app/_components/dashboard/hacker-dashboard/theme-applier.tsx b/apps/blade/src/app/_components/dashboard/hacker-dashboard/theme-applier.tsx
new file mode 100644
index 000000000..6970d95f4
--- /dev/null
+++ b/apps/blade/src/app/_components/dashboard/hacker-dashboard/theme-applier.tsx
@@ -0,0 +1,77 @@
+"use client";
+
+import { useEffect } from "react";
+
+import type { SelectHackathon } from "@forge/db/schemas/knight-hacks";
+
+function hexToHsl(hex: string): string {
+ let r = parseInt(hex.slice(1, 3), 16);
+ let g = parseInt(hex.slice(3, 5), 16);
+ let b = parseInt(hex.slice(5, 7), 16);
+
+ r /= 255;
+ g /= 255;
+ b /= 255;
+ const max = Math.max(r, g, b),
+ min = Math.min(r, g, b);
+ let h = 0,
+ s = 0;
+ const l = (max + min) / 2;
+
+ if (max !== min) {
+ const d = max - min;
+ s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
+ switch (max) {
+ case r:
+ h = (g - b) / d + (g < b ? 6 : 0);
+ break;
+ case g:
+ h = (b - r) / d + 2;
+ break;
+ case b:
+ h = (r - g) / d + 4;
+ break;
+ }
+ h /= 6;
+ }
+
+ return `${Math.round(h * 360)} ${Math.round(s * 100)}% ${Math.round(l * 100)}%`;
+}
+
+export function HackathonThemeApplier({
+ hackathon,
+}: {
+ hackathon: SelectHackathon | null;
+}) {
+ useEffect(() => {
+ if (!hackathon) return;
+
+ const theme: Record
= {};
+
+ if (hackathon.backgroundColor) {
+ theme["--background"] = hexToHsl(hackathon.backgroundColor);
+ }
+ if (hackathon.foregroundColor) {
+ theme["--foreground"] = hexToHsl(hackathon.foregroundColor);
+ }
+ if (hackathon.accentColor) {
+ theme["--primary"] = hexToHsl(hackathon.accentColor);
+ theme["--ring"] = hexToHsl(hackathon.accentColor);
+ }
+ if (hackathon.backgroundImageName) {
+ theme["--background-image"] = `url(${hackathon.backgroundImageName})`;
+ }
+
+ Object.entries(theme).forEach(([k, v]) => {
+ document.documentElement.style.setProperty(k, v);
+ });
+
+ return () => {
+ Object.keys(theme).forEach((k) => {
+ document.documentElement.style.removeProperty(k);
+ });
+ };
+ }, [hackathon]);
+
+ return null;
+}
diff --git a/apps/blade/src/app/globals.css b/apps/blade/src/app/globals.css
index 2dc3225ff..1c9adfcd9 100644
--- a/apps/blade/src/app/globals.css
+++ b/apps/blade/src/app/globals.css
@@ -11,6 +11,13 @@
}
@layer base {
+ body {
+ background-image: var(--background-image, none);
+ background-size: cover;
+ background-position: center;
+ background-repeat: no-repeat;
+ }
+
*,
::before,
::after {
diff --git a/packages/api/src/routers/hackathon.ts b/packages/api/src/routers/hackathon.ts
index 321baa31b..e5273f3a5 100644
--- a/packages/api/src/routers/hackathon.ts
+++ b/packages/api/src/routers/hackathon.ts
@@ -41,6 +41,10 @@ const hackathonMutationInput = z.object({
applicationBackgroundKey: hackathonApplicationBackgroundKeySchema,
emailTemplateEnabled: z.boolean().default(false),
emailTemplateKey: hackathonEmailTemplateKeySchema,
+ backgroundImageName: z.string().optional().nullable(),
+ backgroundColor: z.string().optional().nullable(),
+ foregroundColor: z.string().optional().nullable(),
+ accentColor: z.string().optional().nullable(),
applicationOpen: z.coerce.date(),
applicationDeadline: z.coerce.date(),
confirmationDeadline: z.coerce.date(),
@@ -94,6 +98,10 @@ function getHackathonMutationValues(
emailTemplateKey: input.emailTemplateEnabled
? input.emailTemplateKey
: null,
+ backgroundImageName: input.backgroundImageName,
+ backgroundColor: input.backgroundColor,
+ foregroundColor: input.foregroundColor,
+ accentColor: input.accentColor,
applicationOpen: input.applicationOpen,
applicationDeadline: input.applicationDeadline,
confirmationDeadline: input.confirmationDeadline,
diff --git a/packages/db/drizzle/0009_large_cyclops.sql b/packages/db/drizzle/0009_large_cyclops.sql
new file mode 100644
index 000000000..d6b38c458
--- /dev/null
+++ b/packages/db/drizzle/0009_large_cyclops.sql
@@ -0,0 +1,4 @@
+ALTER TABLE "knight_hacks_hackathon" ADD COLUMN "background_image_name" varchar(255);--> statement-breakpoint
+ALTER TABLE "knight_hacks_hackathon" ADD COLUMN "background_color" varchar(7);--> statement-breakpoint
+ALTER TABLE "knight_hacks_hackathon" ADD COLUMN "foreground_color" varchar(7);--> statement-breakpoint
+ALTER TABLE "knight_hacks_hackathon" ADD COLUMN "accent_color" varchar(7);
\ No newline at end of file
diff --git a/packages/db/drizzle/meta/0009_snapshot.json b/packages/db/drizzle/meta/0009_snapshot.json
new file mode 100644
index 000000000..56d323d6b
--- /dev/null
+++ b/packages/db/drizzle/meta/0009_snapshot.json
@@ -0,0 +1,2798 @@
+{
+ "id": "40c7a319-723b-4dd7-978d-2ffdcd0fc842",
+ "prevId": "59167fd7-5235-43d3-b047-922ed7175d36",
+ "version": "7",
+ "dialect": "postgresql",
+ "tables": {
+ "public.auth_account": {
+ "name": "auth_account",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "user_id": {
+ "name": "user_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "provider": {
+ "name": "provider",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "provider_account_id": {
+ "name": "provider_account_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "refresh_token": {
+ "name": "refresh_token",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "access_token": {
+ "name": "access_token",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "expires_at": {
+ "name": "expires_at",
+ "type": "timestamp with time zone",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "scope": {
+ "name": "scope",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "id_token": {
+ "name": "id_token",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "auth_account_user_id_auth_user_id_fk": {
+ "name": "auth_account_user_id_auth_user_id_fk",
+ "tableFrom": "auth_account",
+ "tableTo": "auth_user",
+ "columnsFrom": ["user_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {
+ "auth_account_provider_provider_account_id_pk": {
+ "name": "auth_account_provider_provider_account_id_pk",
+ "columns": ["provider", "provider_account_id"]
+ }
+ },
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.auth_judge_session": {
+ "name": "auth_judge_session",
+ "schema": "",
+ "columns": {
+ "session_token": {
+ "name": "session_token",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "room_name": {
+ "name": "room_name",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "expires": {
+ "name": "expires",
+ "type": "timestamp with time zone",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.auth_permissions": {
+ "name": "auth_permissions",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "role_id": {
+ "name": "role_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "user_id": {
+ "name": "user_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "auth_permissions_role_id_auth_roles_id_fk": {
+ "name": "auth_permissions_role_id_auth_roles_id_fk",
+ "tableFrom": "auth_permissions",
+ "tableTo": "auth_roles",
+ "columnsFrom": ["role_id"],
+ "columnsTo": ["id"],
+ "onDelete": "no action",
+ "onUpdate": "no action"
+ },
+ "auth_permissions_user_id_auth_user_id_fk": {
+ "name": "auth_permissions_user_id_auth_user_id_fk",
+ "tableFrom": "auth_permissions",
+ "tableTo": "auth_user",
+ "columnsFrom": ["user_id"],
+ "columnsTo": ["id"],
+ "onDelete": "no action",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.auth_roles": {
+ "name": "auth_roles",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "''"
+ },
+ "discord_role_id": {
+ "name": "discord_role_id",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "permissions": {
+ "name": "permissions",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "issue_reminder_channel": {
+ "name": "issue_reminder_channel",
+ "type": "varchar(32)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'1459204271655489567'"
+ },
+ "team_hexcode_color": {
+ "name": "team_hexcode_color",
+ "type": "varchar(7)",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "auth_roles_discordRoleId_unique": {
+ "name": "auth_roles_discordRoleId_unique",
+ "nullsNotDistinct": false,
+ "columns": ["discord_role_id"]
+ }
+ },
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.auth_session": {
+ "name": "auth_session",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "text",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "session_token": {
+ "name": "session_token",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "user_id": {
+ "name": "user_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "expires": {
+ "name": "expires",
+ "type": "timestamp with time zone",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "ip_address": {
+ "name": "ip_address",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "user_agent": {
+ "name": "user_agent",
+ "type": "varchar(1024)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "auth_session_user_id_auth_user_id_fk": {
+ "name": "auth_session_user_id_auth_user_id_fk",
+ "tableFrom": "auth_session",
+ "tableTo": "auth_user",
+ "columnsFrom": ["user_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.auth_user": {
+ "name": "auth_user",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "discord_user_id": {
+ "name": "discord_user_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "email": {
+ "name": "email",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "email_verified": {
+ "name": "email_verified",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "image": {
+ "name": "image",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp with time zone",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.auth_verification": {
+ "name": "auth_verification",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "text",
+ "primaryKey": true,
+ "notNull": true
+ },
+ "identifier": {
+ "name": "identifier",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "value": {
+ "name": "value",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "expires_at": {
+ "name": "expires_at",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_challenges": {
+ "name": "knight_hacks_challenges",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "title": {
+ "name": "title",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "hackathon_id": {
+ "name": "hackathon_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description": {
+ "name": "description",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "sponsor": {
+ "name": "sponsor",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "knight_hacks_challenges_hackathon_id_knight_hacks_hackathon_id_fk": {
+ "name": "knight_hacks_challenges_hackathon_id_knight_hacks_hackathon_id_fk",
+ "tableFrom": "knight_hacks_challenges",
+ "tableTo": "knight_hacks_hackathon",
+ "columnsFrom": ["hackathon_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "knight_hacks_challenges_title_hackathonId_unique": {
+ "name": "knight_hacks_challenges_title_hackathonId_unique",
+ "nullsNotDistinct": false,
+ "columns": ["title", "hackathon_id"]
+ }
+ },
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_dues_payment": {
+ "name": "knight_hacks_dues_payment",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "member_id": {
+ "name": "member_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "amount": {
+ "name": "amount",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "payment_date": {
+ "name": "payment_date",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "year": {
+ "name": "year",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "knight_hacks_dues_payment_member_id_knight_hacks_member_id_fk": {
+ "name": "knight_hacks_dues_payment_member_id_knight_hacks_member_id_fk",
+ "tableFrom": "knight_hacks_dues_payment",
+ "tableTo": "knight_hacks_member",
+ "columnsFrom": ["member_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "knight_hacks_dues_payment_memberId_year_unique": {
+ "name": "knight_hacks_dues_payment_memberId_year_unique",
+ "nullsNotDistinct": false,
+ "columns": ["member_id", "year"]
+ }
+ },
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_event": {
+ "name": "knight_hacks_event",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "discord_id": {
+ "name": "discord_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "google_id": {
+ "name": "google_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "tag": {
+ "name": "tag",
+ "type": "event_tag",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description": {
+ "name": "description",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "start_datetime": {
+ "name": "start_datetime",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "end_datetime": {
+ "name": "end_datetime",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "location": {
+ "name": "location",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "dues_paying": {
+ "name": "dues_paying",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "is_operations_calendar": {
+ "name": "is_operations_calendar",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "roles": {
+ "name": "roles",
+ "type": "varchar(255)[]",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'{}'"
+ },
+ "points": {
+ "name": "points",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "hackathon_id": {
+ "name": "hackathon_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "discord_channel_id": {
+ "name": "discord_channel_id",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "knight_hacks_event_hackathon_id_knight_hacks_hackathon_id_fk": {
+ "name": "knight_hacks_event_hackathon_id_knight_hacks_hackathon_id_fk",
+ "tableFrom": "knight_hacks_event",
+ "tableTo": "knight_hacks_hackathon",
+ "columnsFrom": ["hackathon_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_event_attendee": {
+ "name": "knight_hacks_event_attendee",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "member_id": {
+ "name": "member_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "event_id": {
+ "name": "event_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "knight_hacks_event_attendee_member_id_knight_hacks_member_id_fk": {
+ "name": "knight_hacks_event_attendee_member_id_knight_hacks_member_id_fk",
+ "tableFrom": "knight_hacks_event_attendee",
+ "tableTo": "knight_hacks_member",
+ "columnsFrom": ["member_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "knight_hacks_event_attendee_event_id_knight_hacks_event_id_fk": {
+ "name": "knight_hacks_event_attendee_event_id_knight_hacks_event_id_fk",
+ "tableFrom": "knight_hacks_event_attendee",
+ "tableTo": "knight_hacks_event",
+ "columnsFrom": ["event_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_event_feedback": {
+ "name": "knight_hacks_event_feedback",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "member_id": {
+ "name": "member_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "event_id": {
+ "name": "event_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "overall_event_rating": {
+ "name": "overall_event_rating",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "fun_rating": {
+ "name": "fun_rating",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "learned_rating": {
+ "name": "learned_rating",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "heard_about_us": {
+ "name": "heard_about_us",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "additional_feedback": {
+ "name": "additional_feedback",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "similar_event": {
+ "name": "similar_event",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "knight_hacks_event_feedback_member_id_knight_hacks_member_id_fk": {
+ "name": "knight_hacks_event_feedback_member_id_knight_hacks_member_id_fk",
+ "tableFrom": "knight_hacks_event_feedback",
+ "tableTo": "knight_hacks_member",
+ "columnsFrom": ["member_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "knight_hacks_event_feedback_event_id_knight_hacks_event_id_fk": {
+ "name": "knight_hacks_event_feedback_event_id_knight_hacks_event_id_fk",
+ "tableFrom": "knight_hacks_event_feedback",
+ "tableTo": "knight_hacks_event",
+ "columnsFrom": ["event_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_form_response": {
+ "name": "knight_hacks_form_response",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "form": {
+ "name": "form",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "user_id": {
+ "name": "user_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "response_data": {
+ "name": "response_data",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "edited_at": {
+ "name": "edited_at",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "knight_hacks_form_response_form_knight_hacks_form_schemas_id_fk": {
+ "name": "knight_hacks_form_response_form_knight_hacks_form_schemas_id_fk",
+ "tableFrom": "knight_hacks_form_response",
+ "tableTo": "knight_hacks_form_schemas",
+ "columnsFrom": ["form"],
+ "columnsTo": ["id"],
+ "onDelete": "no action",
+ "onUpdate": "no action"
+ },
+ "knight_hacks_form_response_user_id_auth_user_id_fk": {
+ "name": "knight_hacks_form_response_user_id_auth_user_id_fk",
+ "tableFrom": "knight_hacks_form_response",
+ "tableTo": "auth_user",
+ "columnsFrom": ["user_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_form_response_roles": {
+ "name": "knight_hacks_form_response_roles",
+ "schema": "",
+ "columns": {
+ "form_id": {
+ "name": "form_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "role_id": {
+ "name": "role_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "knight_hacks_form_response_roles_form_id_knight_hacks_form_schemas_id_fk": {
+ "name": "knight_hacks_form_response_roles_form_id_knight_hacks_form_schemas_id_fk",
+ "tableFrom": "knight_hacks_form_response_roles",
+ "tableTo": "knight_hacks_form_schemas",
+ "columnsFrom": ["form_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "knight_hacks_form_response_roles_role_id_auth_roles_id_fk": {
+ "name": "knight_hacks_form_response_roles_role_id_auth_roles_id_fk",
+ "tableFrom": "knight_hacks_form_response_roles",
+ "tableTo": "auth_roles",
+ "columnsFrom": ["role_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {
+ "knight_hacks_form_response_roles_form_id_role_id_pk": {
+ "name": "knight_hacks_form_response_roles_form_id_role_id_pk",
+ "columns": ["form_id", "role_id"]
+ }
+ },
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_form_section_roles": {
+ "name": "knight_hacks_form_section_roles",
+ "schema": "",
+ "columns": {
+ "section_id": {
+ "name": "section_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "role_id": {
+ "name": "role_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "knight_hacks_form_section_roles_section_id_knight_hacks_form_sections_id_fk": {
+ "name": "knight_hacks_form_section_roles_section_id_knight_hacks_form_sections_id_fk",
+ "tableFrom": "knight_hacks_form_section_roles",
+ "tableTo": "knight_hacks_form_sections",
+ "columnsFrom": ["section_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "knight_hacks_form_section_roles_role_id_auth_roles_id_fk": {
+ "name": "knight_hacks_form_section_roles_role_id_auth_roles_id_fk",
+ "tableFrom": "knight_hacks_form_section_roles",
+ "tableTo": "auth_roles",
+ "columnsFrom": ["role_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {
+ "knight_hacks_form_section_roles_section_id_role_id_pk": {
+ "name": "knight_hacks_form_section_roles_section_id_role_id_pk",
+ "columns": ["section_id", "role_id"]
+ }
+ },
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_form_sections": {
+ "name": "knight_hacks_form_sections",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "order": {
+ "name": "order",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "default": 0
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "knight_hacks_form_sections_name_unique": {
+ "name": "knight_hacks_form_sections_name_unique",
+ "nullsNotDistinct": false,
+ "columns": ["name"]
+ }
+ },
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_form_schemas": {
+ "name": "knight_hacks_form_schemas",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "slug_name": {
+ "name": "slug_name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "dues_only": {
+ "name": "dues_only",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "allow_resubmission": {
+ "name": "allow_resubmission",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "allow_edit": {
+ "name": "allow_edit",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "form_data": {
+ "name": "form_data",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "form_validator_json": {
+ "name": "form_validator_json",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "section": {
+ "name": "section",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'General'"
+ },
+ "section_id": {
+ "name": "section_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "is_closed": {
+ "name": "is_closed",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "knight_hacks_form_schemas_section_id_knight_hacks_form_sections_id_fk": {
+ "name": "knight_hacks_form_schemas_section_id_knight_hacks_form_sections_id_fk",
+ "tableFrom": "knight_hacks_form_schemas",
+ "tableTo": "knight_hacks_form_sections",
+ "columnsFrom": ["section_id"],
+ "columnsTo": ["id"],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "knight_hacks_form_schemas_slugName_unique": {
+ "name": "knight_hacks_form_schemas_slugName_unique",
+ "nullsNotDistinct": false,
+ "columns": ["slug_name"]
+ }
+ },
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_hackathon": {
+ "name": "knight_hacks_hackathon",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "display_name": {
+ "name": "display_name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "''"
+ },
+ "theme": {
+ "name": "theme",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "application_background_enabled": {
+ "name": "application_background_enabled",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "application_background_key": {
+ "name": "application_background_key",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "background_image_name": {
+ "name": "background_image_name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "background_color": {
+ "name": "background_color",
+ "type": "varchar(7)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "foreground_color": {
+ "name": "foreground_color",
+ "type": "varchar(7)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "accent_color": {
+ "name": "accent_color",
+ "type": "varchar(7)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "email_template_enabled": {
+ "name": "email_template_enabled",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "email_template_key": {
+ "name": "email_template_key",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "application_open": {
+ "name": "application_open",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "application_deadline": {
+ "name": "application_deadline",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "confirmation_deadline": {
+ "name": "confirmation_deadline",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "start_date": {
+ "name": "start_date",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "end_date": {
+ "name": "end_date",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "knight_hacks_hackathon_name_unique": {
+ "name": "knight_hacks_hackathon_name_unique",
+ "nullsNotDistinct": false,
+ "columns": ["name"]
+ }
+ },
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_hackathon_sponsor": {
+ "name": "knight_hacks_hackathon_sponsor",
+ "schema": "",
+ "columns": {
+ "hackathon_id": {
+ "name": "hackathon_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "sponsor_id": {
+ "name": "sponsor_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "tier": {
+ "name": "tier",
+ "type": "sponsor_tier",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "knight_hacks_hackathon_sponsor_hackathon_id_knight_hacks_hackathon_id_fk": {
+ "name": "knight_hacks_hackathon_sponsor_hackathon_id_knight_hacks_hackathon_id_fk",
+ "tableFrom": "knight_hacks_hackathon_sponsor",
+ "tableTo": "knight_hacks_hackathon",
+ "columnsFrom": ["hackathon_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "knight_hacks_hackathon_sponsor_sponsor_id_knight_hacks_sponsor_id_fk": {
+ "name": "knight_hacks_hackathon_sponsor_sponsor_id_knight_hacks_sponsor_id_fk",
+ "tableFrom": "knight_hacks_hackathon_sponsor",
+ "tableTo": "knight_hacks_sponsor",
+ "columnsFrom": ["sponsor_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_hacker": {
+ "name": "knight_hacks_hacker",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "user_id": {
+ "name": "user_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "first_name": {
+ "name": "first_name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "last_name": {
+ "name": "last_name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "gender": {
+ "name": "gender",
+ "type": "gender",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'Prefer not to answer'"
+ },
+ "discord_user": {
+ "name": "discord_user",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "age": {
+ "name": "age",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "country": {
+ "name": "country",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'United States of America'"
+ },
+ "email": {
+ "name": "email",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "phone_number": {
+ "name": "phone_number",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "school": {
+ "name": "school",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "level_of_study": {
+ "name": "level_of_study",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "major": {
+ "name": "major",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'Computer Science'"
+ },
+ "race_or_ethnicity": {
+ "name": "race_or_ethnicity",
+ "type": "race_or_ethnicity",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'Prefer not to answer'"
+ },
+ "shirt_size": {
+ "name": "shirt_size",
+ "type": "shirt_size",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "github_profile_url": {
+ "name": "github_profile_url",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "linkedin_profile_url": {
+ "name": "linkedin_profile_url",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "website_url": {
+ "name": "website_url",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "resume_url": {
+ "name": "resume_url",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "dob": {
+ "name": "dob",
+ "type": "date",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "grad_date": {
+ "name": "grad_date",
+ "type": "date",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "survey_1": {
+ "name": "survey_1",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "survey_2": {
+ "name": "survey_2",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "is_first_time": {
+ "name": "is_first_time",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false,
+ "default": false
+ },
+ "food_allergies": {
+ "name": "food_allergies",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "agrees_to_receive_emails_from_mlh": {
+ "name": "agrees_to_receive_emails_from_mlh",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false,
+ "default": false
+ },
+ "agrees_to_mlh_code_of_conduct": {
+ "name": "agrees_to_mlh_code_of_conduct",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false,
+ "default": false
+ },
+ "agrees_to_mlh_data_sharing": {
+ "name": "agrees_to_mlh_data_sharing",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": false,
+ "default": false
+ },
+ "date_created": {
+ "name": "date_created",
+ "type": "date",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "time_created": {
+ "name": "time_created",
+ "type": "time",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "knight_hacks_hacker_user_id_auth_user_id_fk": {
+ "name": "knight_hacks_hacker_user_id_auth_user_id_fk",
+ "tableFrom": "knight_hacks_hacker",
+ "tableTo": "auth_user",
+ "columnsFrom": ["user_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_hacker_attendee": {
+ "name": "knight_hacks_hacker_attendee",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "hacker_id": {
+ "name": "hacker_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "hackathon_id": {
+ "name": "hackathon_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "status": {
+ "name": "status",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'pending'"
+ },
+ "time_applied": {
+ "name": "time_applied",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "time_confirmed": {
+ "name": "time_confirmed",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "points": {
+ "name": "points",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "default": 0
+ },
+ "class": {
+ "name": "class",
+ "type": "varchar(20)",
+ "primaryKey": false,
+ "notNull": false,
+ "default": null
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "knight_hacks_hacker_attendee_hacker_id_knight_hacks_hacker_id_fk": {
+ "name": "knight_hacks_hacker_attendee_hacker_id_knight_hacks_hacker_id_fk",
+ "tableFrom": "knight_hacks_hacker_attendee",
+ "tableTo": "knight_hacks_hacker",
+ "columnsFrom": ["hacker_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "knight_hacks_hacker_attendee_hackathon_id_knight_hacks_hackathon_id_fk": {
+ "name": "knight_hacks_hacker_attendee_hackathon_id_knight_hacks_hackathon_id_fk",
+ "tableFrom": "knight_hacks_hacker_attendee",
+ "tableTo": "knight_hacks_hackathon",
+ "columnsFrom": ["hackathon_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_hacker_event_attendee": {
+ "name": "knight_hacks_hacker_event_attendee",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "hacker_att_id": {
+ "name": "hacker_att_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "hackathon_id": {
+ "name": "hackathon_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "event_id": {
+ "name": "event_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "knight_hacks_hacker_event_attendee_hacker_att_id_knight_hacks_hacker_attendee_id_fk": {
+ "name": "knight_hacks_hacker_event_attendee_hacker_att_id_knight_hacks_hacker_attendee_id_fk",
+ "tableFrom": "knight_hacks_hacker_event_attendee",
+ "tableTo": "knight_hacks_hacker_attendee",
+ "columnsFrom": ["hacker_att_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "knight_hacks_hacker_event_attendee_hackathon_id_knight_hacks_hackathon_id_fk": {
+ "name": "knight_hacks_hacker_event_attendee_hackathon_id_knight_hacks_hackathon_id_fk",
+ "tableFrom": "knight_hacks_hacker_event_attendee",
+ "tableTo": "knight_hacks_hackathon",
+ "columnsFrom": ["hackathon_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "knight_hacks_hacker_event_attendee_event_id_knight_hacks_event_id_fk": {
+ "name": "knight_hacks_hacker_event_attendee_event_id_knight_hacks_event_id_fk",
+ "tableFrom": "knight_hacks_hacker_event_attendee",
+ "tableTo": "knight_hacks_event",
+ "columnsFrom": ["event_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_issue": {
+ "name": "knight_hacks_issue",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "status": {
+ "name": "status",
+ "type": "issue_status",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "description": {
+ "name": "description",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "links": {
+ "name": "links",
+ "type": "text[]",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "event": {
+ "name": "event",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "date": {
+ "name": "date",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "priority": {
+ "name": "priority",
+ "type": "issue_priority",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "team": {
+ "name": "team",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "creator": {
+ "name": "creator",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "parent": {
+ "name": "parent",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {
+ "issue_team_idx": {
+ "name": "issue_team_idx",
+ "columns": [
+ {
+ "expression": "team",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "issue_creator_idx": {
+ "name": "issue_creator_idx",
+ "columns": [
+ {
+ "expression": "creator",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "issue_status_idx": {
+ "name": "issue_status_idx",
+ "columns": [
+ {
+ "expression": "status",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "issue_date_idx": {
+ "name": "issue_date_idx",
+ "columns": [
+ {
+ "expression": "date",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "issue_parent_idx": {
+ "name": "issue_parent_idx",
+ "columns": [
+ {
+ "expression": "parent",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "issue_priority_idx": {
+ "name": "issue_priority_idx",
+ "columns": [
+ {
+ "expression": "priority",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "knight_hacks_issue_event_knight_hacks_event_id_fk": {
+ "name": "knight_hacks_issue_event_knight_hacks_event_id_fk",
+ "tableFrom": "knight_hacks_issue",
+ "tableTo": "knight_hacks_event",
+ "columnsFrom": ["event"],
+ "columnsTo": ["id"],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ },
+ "knight_hacks_issue_team_auth_roles_id_fk": {
+ "name": "knight_hacks_issue_team_auth_roles_id_fk",
+ "tableFrom": "knight_hacks_issue",
+ "tableTo": "auth_roles",
+ "columnsFrom": ["team"],
+ "columnsTo": ["id"],
+ "onDelete": "restrict",
+ "onUpdate": "no action"
+ },
+ "knight_hacks_issue_creator_auth_user_id_fk": {
+ "name": "knight_hacks_issue_creator_auth_user_id_fk",
+ "tableFrom": "knight_hacks_issue",
+ "tableTo": "auth_user",
+ "columnsFrom": ["creator"],
+ "columnsTo": ["id"],
+ "onDelete": "restrict",
+ "onUpdate": "no action"
+ },
+ "issue_parent_fk": {
+ "name": "issue_parent_fk",
+ "tableFrom": "knight_hacks_issue",
+ "tableTo": "knight_hacks_issue",
+ "columnsFrom": ["parent"],
+ "columnsTo": ["id"],
+ "onDelete": "set null",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_issues_to_teams_visibility": {
+ "name": "knight_hacks_issues_to_teams_visibility",
+ "schema": "",
+ "columns": {
+ "issue_id": {
+ "name": "issue_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "team_id": {
+ "name": "team_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "knight_hacks_issues_to_teams_visibility_issue_id_knight_hacks_issue_id_fk": {
+ "name": "knight_hacks_issues_to_teams_visibility_issue_id_knight_hacks_issue_id_fk",
+ "tableFrom": "knight_hacks_issues_to_teams_visibility",
+ "tableTo": "knight_hacks_issue",
+ "columnsFrom": ["issue_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "knight_hacks_issues_to_teams_visibility_team_id_auth_roles_id_fk": {
+ "name": "knight_hacks_issues_to_teams_visibility_team_id_auth_roles_id_fk",
+ "tableFrom": "knight_hacks_issues_to_teams_visibility",
+ "tableTo": "auth_roles",
+ "columnsFrom": ["team_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {
+ "knight_hacks_issues_to_teams_visibility_issue_id_team_id_pk": {
+ "name": "knight_hacks_issues_to_teams_visibility_issue_id_team_id_pk",
+ "columns": ["issue_id", "team_id"]
+ }
+ },
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_issues_to_users_assignment": {
+ "name": "knight_hacks_issues_to_users_assignment",
+ "schema": "",
+ "columns": {
+ "issue_id": {
+ "name": "issue_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "user_id": {
+ "name": "user_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "knight_hacks_issues_to_users_assignment_issue_id_knight_hacks_issue_id_fk": {
+ "name": "knight_hacks_issues_to_users_assignment_issue_id_knight_hacks_issue_id_fk",
+ "tableFrom": "knight_hacks_issues_to_users_assignment",
+ "tableTo": "knight_hacks_issue",
+ "columnsFrom": ["issue_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "knight_hacks_issues_to_users_assignment_user_id_auth_user_id_fk": {
+ "name": "knight_hacks_issues_to_users_assignment_user_id_auth_user_id_fk",
+ "tableFrom": "knight_hacks_issues_to_users_assignment",
+ "tableTo": "auth_user",
+ "columnsFrom": ["user_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {
+ "knight_hacks_issues_to_users_assignment_issue_id_user_id_pk": {
+ "name": "knight_hacks_issues_to_users_assignment_issue_id_user_id_pk",
+ "columns": ["issue_id", "user_id"]
+ }
+ },
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_judged_submission": {
+ "name": "knight_hacks_judged_submission",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "hackathon_id": {
+ "name": "hackathon_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "submission_id": {
+ "name": "submission_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "judge_id": {
+ "name": "judge_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "private_feedback": {
+ "name": "private_feedback",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "public_feedback": {
+ "name": "public_feedback",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "originality_rating": {
+ "name": "originality_rating",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "design_rating": {
+ "name": "design_rating",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "technical_understanding_rating": {
+ "name": "technical_understanding_rating",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "implementation_rating": {
+ "name": "implementation_rating",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "wow_factor_rating": {
+ "name": "wow_factor_rating",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "knight_hacks_judged_submission_hackathon_id_knight_hacks_hackathon_id_fk": {
+ "name": "knight_hacks_judged_submission_hackathon_id_knight_hacks_hackathon_id_fk",
+ "tableFrom": "knight_hacks_judged_submission",
+ "tableTo": "knight_hacks_hackathon",
+ "columnsFrom": ["hackathon_id"],
+ "columnsTo": ["id"],
+ "onDelete": "no action",
+ "onUpdate": "no action"
+ },
+ "knight_hacks_judged_submission_submission_id_knight_hacks_submissions_id_fk": {
+ "name": "knight_hacks_judged_submission_submission_id_knight_hacks_submissions_id_fk",
+ "tableFrom": "knight_hacks_judged_submission",
+ "tableTo": "knight_hacks_submissions",
+ "columnsFrom": ["submission_id"],
+ "columnsTo": ["id"],
+ "onDelete": "no action",
+ "onUpdate": "no action"
+ },
+ "knight_hacks_judged_submission_judge_id_knight_hacks_judges_id_fk": {
+ "name": "knight_hacks_judged_submission_judge_id_knight_hacks_judges_id_fk",
+ "tableFrom": "knight_hacks_judged_submission",
+ "tableTo": "knight_hacks_judges",
+ "columnsFrom": ["judge_id"],
+ "columnsTo": ["id"],
+ "onDelete": "no action",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_judges": {
+ "name": "knight_hacks_judges",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "name": {
+ "name": "name",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "room_name": {
+ "name": "room_name",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "challenge_id": {
+ "name": "challenge_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "knight_hacks_judges_challenge_id_knight_hacks_challenges_id_fk": {
+ "name": "knight_hacks_judges_challenge_id_knight_hacks_challenges_id_fk",
+ "tableFrom": "knight_hacks_judges",
+ "tableTo": "knight_hacks_challenges",
+ "columnsFrom": ["challenge_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_member": {
+ "name": "knight_hacks_member",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "user_id": {
+ "name": "user_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "first_name": {
+ "name": "first_name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "last_name": {
+ "name": "last_name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "discord_user": {
+ "name": "discord_user",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "age": {
+ "name": "age",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "email": {
+ "name": "email",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "phone_number": {
+ "name": "phone_number",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "school": {
+ "name": "school",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "level_of_study": {
+ "name": "level_of_study",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "major": {
+ "name": "major",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'Computer Science'"
+ },
+ "gender": {
+ "name": "gender",
+ "type": "gender",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'Prefer not to answer'"
+ },
+ "race_or_ethnicity": {
+ "name": "race_or_ethnicity",
+ "type": "race_or_ethnicity",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'Prefer not to answer'"
+ },
+ "guild_profile_visible": {
+ "name": "guild_profile_visible",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": true
+ },
+ "tagline": {
+ "name": "tagline",
+ "type": "varchar(80)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "about": {
+ "name": "about",
+ "type": "varchar(500)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "profile_picture_url": {
+ "name": "profile_picture_url",
+ "type": "varchar(512)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "shirt_size": {
+ "name": "shirt_size",
+ "type": "shirt_size",
+ "typeSchema": "public",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "github_profile_url": {
+ "name": "github_profile_url",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "linkedin_profile_url": {
+ "name": "linkedin_profile_url",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "website_url": {
+ "name": "website_url",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "resume_url": {
+ "name": "resume_url",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "dob": {
+ "name": "dob",
+ "type": "date",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "grad_date": {
+ "name": "grad_date",
+ "type": "date",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "company": {
+ "name": "company",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "points": {
+ "name": "points",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "default": 0
+ },
+ "date_created": {
+ "name": "date_created",
+ "type": "date",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "time_created": {
+ "name": "time_created",
+ "type": "time",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "knight_hacks_member_user_id_auth_user_id_fk": {
+ "name": "knight_hacks_member_user_id_auth_user_id_fk",
+ "tableFrom": "knight_hacks_member",
+ "tableTo": "auth_user",
+ "columnsFrom": ["user_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "knight_hacks_member_email_unique": {
+ "name": "knight_hacks_member_email_unique",
+ "nullsNotDistinct": false,
+ "columns": ["email"]
+ },
+ "knight_hacks_member_phoneNumber_unique": {
+ "name": "knight_hacks_member_phoneNumber_unique",
+ "nullsNotDistinct": false,
+ "columns": ["phone_number"]
+ }
+ },
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_companies": {
+ "name": "knight_hacks_companies",
+ "schema": "",
+ "columns": {
+ "name": {
+ "name": "name",
+ "type": "varchar(255)",
+ "primaryKey": true,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_sponsor": {
+ "name": "knight_hacks_sponsor",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "name": {
+ "name": "name",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "logo_url": {
+ "name": "logo_url",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "website_url": {
+ "name": "website_url",
+ "type": "varchar(255)",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_submissions": {
+ "name": "knight_hacks_submissions",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "challenge_id": {
+ "name": "challenge_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "team_id": {
+ "name": "team_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "hackathon_id": {
+ "name": "hackathon_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "knight_hacks_submissions_challenge_id_knight_hacks_challenges_id_fk": {
+ "name": "knight_hacks_submissions_challenge_id_knight_hacks_challenges_id_fk",
+ "tableFrom": "knight_hacks_submissions",
+ "tableTo": "knight_hacks_challenges",
+ "columnsFrom": ["challenge_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "knight_hacks_submissions_team_id_knight_hacks_teams_id_fk": {
+ "name": "knight_hacks_submissions_team_id_knight_hacks_teams_id_fk",
+ "tableFrom": "knight_hacks_submissions",
+ "tableTo": "knight_hacks_teams",
+ "columnsFrom": ["team_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "knight_hacks_submissions_hackathon_id_knight_hacks_hackathon_id_fk": {
+ "name": "knight_hacks_submissions_hackathon_id_knight_hacks_hackathon_id_fk",
+ "tableFrom": "knight_hacks_submissions",
+ "tableTo": "knight_hacks_hackathon",
+ "columnsFrom": ["hackathon_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "knight_hacks_submissions_teamId_challengeId_unique": {
+ "name": "knight_hacks_submissions_teamId_challengeId_unique",
+ "nullsNotDistinct": false,
+ "columns": ["team_id", "challenge_id"]
+ }
+ },
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_teams": {
+ "name": "knight_hacks_teams",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "hackathon_id": {
+ "name": "hackathon_id",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "project_title": {
+ "name": "project_title",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "submission_url": {
+ "name": "submission_url",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "project_created_at": {
+ "name": "project_created_at",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "is_project_submitted": {
+ "name": "is_project_submitted",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "devpost_url": {
+ "name": "devpost_url",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "notes": {
+ "name": "notes",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "universities": {
+ "name": "universities",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "emails": {
+ "name": "emails",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "match_key": {
+ "name": "match_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "knight_hacks_teams_hackathon_id_knight_hacks_hackathon_id_fk": {
+ "name": "knight_hacks_teams_hackathon_id_knight_hacks_hackathon_id_fk",
+ "tableFrom": "knight_hacks_teams",
+ "tableTo": "knight_hacks_hackathon",
+ "columnsFrom": ["hackathon_id"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "knight_hacks_teams_matchKey_unique": {
+ "name": "knight_hacks_teams_matchKey_unique",
+ "nullsNotDistinct": false,
+ "columns": ["match_key"]
+ }
+ },
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_template": {
+ "name": "knight_hacks_template",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "name": {
+ "name": "name",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "body": {
+ "name": "body",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.knight_hacks_trpc_form_connection": {
+ "name": "knight_hacks_trpc_form_connection",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "gen_random_uuid()"
+ },
+ "form": {
+ "name": "form",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "proc": {
+ "name": "proc",
+ "type": "varchar",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "connections": {
+ "name": "connections",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "knight_hacks_trpc_form_connection_form_knight_hacks_form_schemas_id_fk": {
+ "name": "knight_hacks_trpc_form_connection_form_knight_hacks_form_schemas_id_fk",
+ "tableFrom": "knight_hacks_trpc_form_connection",
+ "tableTo": "knight_hacks_form_schemas",
+ "columnsFrom": ["form"],
+ "columnsTo": ["id"],
+ "onDelete": "no action",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ }
+ },
+ "enums": {
+ "public.event_tag": {
+ "name": "event_tag",
+ "schema": "public",
+ "values": [
+ "GBM",
+ "Social",
+ "Kickstart",
+ "Project Launch",
+ "Hello World",
+ "Sponsorship",
+ "Tech Exploration",
+ "Class Support",
+ "Workshop",
+ "OPS",
+ "Collabs",
+ "Check-in",
+ "Merch",
+ "Food",
+ "Ceremony",
+ "CAREER-FAIR",
+ "RSO-FAIR"
+ ]
+ },
+ "public.gender": {
+ "name": "gender",
+ "schema": "public",
+ "values": [
+ "Man",
+ "Woman",
+ "Non-binary",
+ "Prefer to self-describe",
+ "Prefer not to answer"
+ ]
+ },
+ "public.hackathon_application_state": {
+ "name": "hackathon_application_state",
+ "schema": "public",
+ "values": [
+ "withdrawn",
+ "pending",
+ "accepted",
+ "waitlisted",
+ "checkedin",
+ "confirmed",
+ "denied"
+ ]
+ },
+ "public.issue_priority": {
+ "name": "issue_priority",
+ "schema": "public",
+ "values": ["Lowest", "Low", "Medium", "High", "Highest"]
+ },
+ "public.issue_status": {
+ "name": "issue_status",
+ "schema": "public",
+ "values": ["Backlog", "Planning", "In Progress", "Finished"]
+ },
+ "public.race_or_ethnicity": {
+ "name": "race_or_ethnicity",
+ "schema": "public",
+ "values": [
+ "White",
+ "Black or African American",
+ "Hispanic / Latino / Spanish Origin",
+ "Asian",
+ "Native Hawaiian or Other Pacific Islander",
+ "Native American or Alaskan Native",
+ "Middle Eastern",
+ "Prefer not to answer",
+ "Other"
+ ]
+ },
+ "public.shirt_size": {
+ "name": "shirt_size",
+ "schema": "public",
+ "values": ["XS", "S", "M", "L", "XL", "2XL", "3XL"]
+ },
+ "public.sponsor_tier": {
+ "name": "sponsor_tier",
+ "schema": "public",
+ "values": ["gold", "silver", "bronze", "other"]
+ }
+ },
+ "schemas": {},
+ "sequences": {},
+ "roles": {},
+ "policies": {},
+ "views": {},
+ "_meta": {
+ "columns": {},
+ "schemas": {},
+ "tables": {}
+ }
+}
diff --git a/packages/db/drizzle/meta/_journal.json b/packages/db/drizzle/meta/_journal.json
index 48c8718ce..7b66ca6e7 100644
--- a/packages/db/drizzle/meta/_journal.json
+++ b/packages/db/drizzle/meta/_journal.json
@@ -64,6 +64,13 @@
"when": 1780732576741,
"tag": "0008_email_template_columns",
"breakpoints": true
+ },
+ {
+ "idx": 9,
+ "version": "7",
+ "when": 1781211550936,
+ "tag": "0009_large_cyclops",
+ "breakpoints": true
}
]
}
diff --git a/packages/db/src/schemas/knight-hacks.ts b/packages/db/src/schemas/knight-hacks.ts
index e3a072931..39f9f63da 100644
--- a/packages/db/src/schemas/knight-hacks.ts
+++ b/packages/db/src/schemas/knight-hacks.ts
@@ -39,6 +39,10 @@ export const Hackathon = createTable(
theme: t.varchar({ length: 255 }).notNull(),
applicationBackgroundEnabled: t.boolean().notNull().default(false),
applicationBackgroundKey: t.varchar({ length: 255 }),
+ backgroundImageName: t.varchar({ length: 255 }),
+ backgroundColor: t.varchar({ length: 7 }),
+ foregroundColor: t.varchar({ length: 7 }),
+ accentColor: t.varchar({ length: 7 }),
emailTemplateEnabled: t.boolean().notNull().default(false),
emailTemplateKey: t.varchar({ length: 255 }),
applicationOpen: t.timestamp().notNull().defaultNow(),