Add migration for assessment verifications table
This commit is contained in:
@@ -0,0 +1,50 @@
|
|||||||
|
|
||||||
|
import { Kysely, sql } from 'kysely'
|
||||||
|
import { addDefaultColumns } from '../db';
|
||||||
|
|
||||||
|
export async function up(db: Kysely<any>): Promise<void> {
|
||||||
|
// TABLE: ASSESSMENT_VERIFICATIONS
|
||||||
|
await db.schema.createTable("assessment_verifications")
|
||||||
|
.$call(addDefaultColumns)
|
||||||
|
.addColumn("assessment_id", "bigint", (cb) => cb.notNull().unique())
|
||||||
|
.addColumn("status", "text", (cb) => cb.notNull().defaultTo("request")) // request | in_review | action_required | completed
|
||||||
|
.addColumn("completed_at", "timestamptz")
|
||||||
|
.addColumn("completed_by", "uuid")
|
||||||
|
.addColumn("url_back_squat", "text")
|
||||||
|
.addColumn("url_deadlift", "text")
|
||||||
|
.addColumn("url_bench_press", "text")
|
||||||
|
.addColumn("url_run", "text")
|
||||||
|
.addColumn("url_broad_jump", "text")
|
||||||
|
.addColumn("url_cone_drill", "text")
|
||||||
|
.addColumn("verf_back_squat", "boolean")
|
||||||
|
.addColumn("verf_deadlift", "boolean")
|
||||||
|
.addColumn("verf_bench_press", "boolean")
|
||||||
|
.addColumn("verf_run", "boolean")
|
||||||
|
.addColumn("verf_broad_jump", "boolean")
|
||||||
|
.addColumn("verf_cone_drill", "boolean")
|
||||||
|
.addColumn("reviewer_notes", "text") // can be structured in the future, for now keep simple
|
||||||
|
.addForeignKeyConstraint(
|
||||||
|
"fk_assessment_verifications_assessment_id",
|
||||||
|
["assessment_id"],
|
||||||
|
"assessments",
|
||||||
|
["id"],
|
||||||
|
(cb) => cb.onDelete("cascade")
|
||||||
|
)
|
||||||
|
.addForeignKeyConstraint(
|
||||||
|
"fk_assessment_verifications_completed_by",
|
||||||
|
["completed_by"],
|
||||||
|
"accounts",
|
||||||
|
["id"],
|
||||||
|
(cb) => cb.onDelete("restrict")
|
||||||
|
)
|
||||||
|
.addCheckConstraint(
|
||||||
|
"chk_assessment_verifications_completed_fields",
|
||||||
|
sql`status != 'completed' OR (completed_at IS NOT NULL AND completed_by IS NOT NULL)`
|
||||||
|
)
|
||||||
|
.execute()
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function down(db: Kysely<any>): Promise<void> {
|
||||||
|
// TABLE: ASSESSMENT_VERIFICATIONS
|
||||||
|
await db.schema.dropTable("assessment_verifications").ifExists().execute()
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user