import type { Kysely } from "kysely";
import { sql } from "kysely";

export async function up(db: Kysely<any>): Promise<void> {
    await db.schema
        .createTable("verification_tokens")
        .ifNotExists()
        .addColumn("id", "uuid", (col) => col.primaryKey().defaultTo(sql`gen_random_uuid()`))
        .addColumn("user_id", "uuid", (col) => col.notNull().references("console_users.id").onDelete("cascade"))
        .addColumn("token", "text", (col) => col.notNull().unique())
        .addColumn("kind", "text", (col) => col.notNull()) // e.g., 'console_user_invitation', 'console_user_reset_password'
        .addColumn("expires", "timestamptz", (col) => col.notNull())
        .addColumn("created_at", "timestamptz", (col) => col.notNull().defaultTo(sql`now()`))
        .addColumn("updated_at", "timestamptz")
        .execute();
}

export async function down(db: Kysely<any>): Promise<void> {
    await db.schema.dropTable("verification_tokens").ifExists().execute();
}
