All checks were successful
Build and Publish Docker Image / build-and-push (push) Successful in 41s
24 lines
741 B
TypeScript
24 lines
741 B
TypeScript
import type { DatabaseSync } from "node:sqlite";
|
|
|
|
// Idempotent: safe to run against a fresh db (already created from schema.sql
|
|
// with password_reset_tokens) or an existing one that predates the table.
|
|
export function up(db: DatabaseSync): void {
|
|
const tables = new Set(
|
|
(db.prepare(
|
|
`SELECT name FROM sqlite_master WHERE type = 'table';`,
|
|
).all() as { name: string }[]).map((r) => r.name),
|
|
);
|
|
|
|
if (!tables.has("password_reset_tokens")) {
|
|
db.exec(
|
|
`CREATE TABLE password_reset_tokens (
|
|
token TEXT PRIMARY KEY,
|
|
user_id TEXT NOT NULL,
|
|
expires_at TEXT NOT NULL,
|
|
used_at TEXT,
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
);`,
|
|
);
|
|
}
|
|
}
|