import pg from 'pg'; const connectionString = process.env.DATABASE_MIGRATION_URL; const password = process.env.POSTGRES_APP_PASSWORD; if (!connectionString || !password) { throw new Error('DATABASE_MIGRATION_URL and POSTGRES_APP_PASSWORD are required'); } const client = new pg.Client({ connectionString, application_name: 'krona-staff-role-setup' }); await client.connect(); try { const exists = await client.query("SELECT 1 FROM pg_roles WHERE rolname = 'krona_staff_app'"); if (exists.rowCount === 0) { await client.query( 'CREATE ROLE krona_staff_app LOGIN NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT NOBYPASSRLS', ); } const statement = await client.query( "SELECT format('ALTER ROLE krona_staff_app WITH LOGIN PASSWORD %L NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT NOBYPASSRLS', $1::text) AS sql", [password], ); await client.query(statement.rows[0].sql); } finally { await client.end(); }