export async function migrateRdsDatabase()

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);
}