25 lines
941 B
JavaScript
25 lines
941 B
JavaScript
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();
|
|
}
|