in packages/cli/src/database.ts [33:78]
export async function migrateRdsDatabase(
stage: string,
client: SecretsManagerClient,
confirmed: boolean,
fromStart: boolean,
): Promise<number> {
console.log(
`Performing a database migration in ${stage} fromStart=${fromStart.toString()}`,
);
const connectedToVpn = await isConnectedToVpn();
if (!connectedToVpn) {
throw new Error('Not connected to VPN');
}
console.log('Fetching database connection details from AWS Secrets Manager');
const dbConfig = await getRdsConfig(client, stage);
const connectionString = getDatabaseConnectionString(dbConfig);
console.log('Setting DATABASE_URL');
process.env.DATABASE_URL = connectionString;
if (!confirmed) {
// See https://www.prisma.io/docs/reference/api-reference/command-reference#migrate-status
console.log(`Running prisma migrate status`);
const { stdout } = await $`npx -w common prisma migrate status`;
console.log(stdout);
console.log('If this looks correct, re-run with --confirm');
return Promise.resolve(0);
}
if (fromStart) {
console.log(`Running prisma migrate resolve --applied 0_init`);
const { stdout } =
await $`npx -w common prisma migrate resolve --applied 0_init`;
console.log(stdout);
}
console.log(`Running prisma migrate deploy`);
const { stdout } = await $`npx -w common prisma migrate deploy`;
console.log(stdout);
return Promise.resolve(0);
}