fix: ensure fs_ app tables created on every startup via node/pg
Made-with: Cursor
This commit is contained in:
@@ -1,6 +1,45 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
echo "=== Syncing database schema ==="
|
||||
|
||||
echo "=== Syncing NextAuth schema ==="
|
||||
npx prisma db push --accept-data-loss --skip-generate
|
||||
|
||||
echo "=== Ensuring app tables exist ==="
|
||||
node -e "
|
||||
const { Pool } = require('pg');
|
||||
const pool = new Pool({ connectionString: process.env.DATABASE_URL, ssl: { rejectUnauthorized: false } });
|
||||
pool.query(\`
|
||||
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
||||
CREATE TABLE IF NOT EXISTS fs_users (
|
||||
id TEXT PRIMARY KEY DEFAULT gen_random_uuid()::text,
|
||||
user_id TEXT,
|
||||
data JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_fs_users_email_unique ON fs_users ((data->>'email'));
|
||||
CREATE INDEX IF NOT EXISTS idx_fs_users_user_id ON fs_users (user_id);
|
||||
CREATE TABLE IF NOT EXISTS fs_projects (
|
||||
id TEXT PRIMARY KEY DEFAULT gen_random_uuid()::text,
|
||||
user_id TEXT REFERENCES fs_users(id) ON DELETE CASCADE,
|
||||
workspace TEXT, slug TEXT,
|
||||
data JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_fs_projects_user_id ON fs_projects (user_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_fs_projects_slug ON fs_projects (slug);
|
||||
CREATE TABLE IF NOT EXISTS fs_sessions (
|
||||
id TEXT PRIMARY KEY DEFAULT gen_random_uuid()::text,
|
||||
user_id TEXT REFERENCES fs_users(id) ON DELETE CASCADE,
|
||||
data JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_fs_sessions_user_id ON fs_sessions (user_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_fs_sessions_project_id ON fs_sessions ((data->>'projectId'));
|
||||
\`).then(() => { console.log('App tables ready'); pool.end(); }).catch(e => { console.error('Table init error:', e.message); pool.end(); });
|
||||
"
|
||||
|
||||
echo "=== Starting Next.js server ==="
|
||||
exec node server.js
|
||||
|
||||
Reference in New Issue
Block a user