From 37787ff0dd4a294c7bb8aaba58fe81237355dd19 Mon Sep 17 00:00:00 2001 From: Dominic Ferrando Date: Fri, 14 Aug 2026 12:30:15 -0400 Subject: [PATCH] Add migration for accounts and assessments tables --- .../api/src/database/migrations/2026-06-14.ts | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 apps/api/src/database/migrations/2026-06-14.ts diff --git a/apps/api/src/database/migrations/2026-06-14.ts b/apps/api/src/database/migrations/2026-06-14.ts new file mode 100644 index 0000000..6a9d63f --- /dev/null +++ b/apps/api/src/database/migrations/2026-06-14.ts @@ -0,0 +1,41 @@ +import { Kysely, sql } from 'kysely' +import { addDefaultColumns } from '../db'; + +export async function up(db: Kysely): Promise { + // TABLE: ACCOUNTS + await db.schema.createTable("accounts") + .addColumn("id", "uuid", (cb) => cb.primaryKey().defaultTo(sql`gen_random_uuid()`)) + .addColumn("created_at", "timestamptz", (cb) => cb + .notNull() + .defaultTo(sql`now()`) + ) + .addColumn("discord_id", "text", (cb) => cb.unique()) + .addColumn("email", "text", (cb) => cb.unique()) + .addColumn("name", "text", (cb) => cb.notNull().defaultTo("")) + .addColumn("gender", "text", (cb) => cb.notNull()) + .execute(); + + // TABLE: ASSESSMENTS + await db.schema.createTable("assessments") + .$call(addDefaultColumns) + .addColumn("account_id", "uuid") + .addColumn("name", "text", (cb) => cb.notNull().defaultTo("")) + .addColumn("gender", "text", (cb) => cb.notNull()) + .addColumn("age", "numeric", (cb) => cb.notNull()) + .addColumn("weight", "numeric", (cb) => cb.notNull()) + .addForeignKeyConstraint( + "fk_assessments_account_id", + ["account_id"], + "accounts", + ["id"], + (cb) => cb.onDelete("cascade") + ) + .execute(); +} + +export async function down(db: Kysely): Promise { + // TABLE: ASSESSMENTS + await db.schema.dropTable("assessments").ifExists().execute() + // TABLE: ACCOUNTS + await db.schema.dropTable("accounts").ifExists().execute() +}