Files
platform/apps/api/src/database/migrations/2026-06-14.ts
T

48 lines
1.8 KiB
TypeScript

import { Kysely, sql } from 'kysely'
import { addDefaultColumns } from '../db';
export async function up(db: Kysely<any>): Promise<void> {
// 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<any>): Promise<void> {
// TABLE: ASSESSMENTS
await db.schema.dropTable("assessments").ifExists().execute()
// TABLE: ACCOUNTS
await db.schema.dropTable("accounts").ifExists().execute()
}