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`uuidv7()`)) .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("Anonymous")) .addColumn("gender", "text") .execute(); // TABLE: ASSESSMENTS await db.schema.createTable("assessments") .$call(addDefaultColumns) .addColumn("account_id", "uuid") .addColumn("name", "text", (cb) => cb.notNull().defaultTo("Anonymous")) .addColumn("gender", "text", (cb) => cb.notNull()) .addColumn("age", "integer", (cb) => cb.notNull()) .addColumn("weight", "float8", (cb) => cb.notNull()) .addColumn("perf_back_squat", "float8") // kg .addColumn("perf_deadlift", "float8") // kg .addColumn("perf_bench_press", "float8") // kg .addColumn("perf_run", "float8") // ms .addColumn("perf_broad_jump", "float8") // cm .addColumn("perf_cone_drill", "float8") // ms .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() }