diff --git a/apps/web/src/db.ts b/apps/web/src/db.ts index 539d588..a1d8342 100644 --- a/apps/web/src/db.ts +++ b/apps/web/src/db.ts @@ -4,15 +4,9 @@ const sql = postgres(process.env.DATABASE_URL ?? "postgres://pingql:pingql@local export default sql; -// Run migrations on startup — full rebuild (no real users) export async function migrate() { - await sql`DROP TABLE IF EXISTS pings CASCADE`; - await sql`DROP TABLE IF EXISTS api_keys CASCADE`; - await sql`DROP TABLE IF EXISTS monitors CASCADE`; - await sql`DROP TABLE IF EXISTS accounts CASCADE`; - await sql` - CREATE TABLE accounts ( + CREATE TABLE IF NOT EXISTS accounts ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), key TEXT NOT NULL UNIQUE, email_hash TEXT, @@ -21,7 +15,7 @@ export async function migrate() { `; await sql` - CREATE TABLE monitors ( + CREATE TABLE IF NOT EXISTS monitors ( id TEXT PRIMARY KEY DEFAULT gen_random_uuid()::text, account_id UUID NOT NULL REFERENCES accounts(id) ON DELETE CASCADE, name TEXT NOT NULL, @@ -38,7 +32,7 @@ export async function migrate() { `; await sql` - CREATE TABLE pings ( + CREATE TABLE IF NOT EXISTS pings ( id BIGSERIAL PRIMARY KEY, monitor_id TEXT NOT NULL REFERENCES monitors(id) ON DELETE CASCADE, checked_at TIMESTAMPTZ NOT NULL DEFAULT now(), @@ -54,7 +48,7 @@ export async function migrate() { await sql`CREATE INDEX IF NOT EXISTS idx_pings_checked_at ON pings(checked_at)`; await sql` - CREATE TABLE api_keys ( + CREATE TABLE IF NOT EXISTS api_keys ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), key TEXT NOT NULL UNIQUE, account_id UUID NOT NULL REFERENCES accounts(id) ON DELETE CASCADE,