Home / Function/ getMigrationQueries() — astro Function Reference

getMigrationQueries() — astro Function Reference

Architecture documentation for the getMigrationQueries() function in migration-queries.ts from the astro codebase.

Entity Profile

Dependency Diagram

graph TD
  8d0e7bb2_007f_5d88_64a2_3b0646b309a1["getMigrationQueries()"]
  d1459290_7e42_1f92_05bd_dcc3aeda9fd3["migration-queries.ts"]
  8d0e7bb2_007f_5d88_64a2_3b0646b309a1 -->|defined in| d1459290_7e42_1f92_05bd_dcc3aeda9fd3
  d37933c7_6e03_1ca6_122e_61a06509f197["createEmptySnapshot()"]
  8d0e7bb2_007f_5d88_64a2_3b0646b309a1 -->|calls| d37933c7_6e03_1ca6_122e_61a06509f197
  fa3ca796_edc6_1c8f_30d6_9c7723935852["getDropTableQueriesForSnapshot()"]
  8d0e7bb2_007f_5d88_64a2_3b0646b309a1 -->|calls| fa3ca796_edc6_1c8f_30d6_9c7723935852
  beeb0b6e_b83a_8146_b183_49af1a27abbf["getAddedTables()"]
  8d0e7bb2_007f_5d88_64a2_3b0646b309a1 -->|calls| beeb0b6e_b83a_8146_b183_49af1a27abbf
  cafbd193_7993_434a_13e7_6fd9d7605ada["getDroppedTables()"]
  8d0e7bb2_007f_5d88_64a2_3b0646b309a1 -->|calls| cafbd193_7993_434a_13e7_6fd9d7605ada
  0855ded3_c0df_3359_b016_c3dc5542cc9c["isEmpty()"]
  8d0e7bb2_007f_5d88_64a2_3b0646b309a1 -->|calls| 0855ded3_c0df_3359_b016_c3dc5542cc9c
  93b83f68_8c01_67cb_fc4b_e06a7e7ec6cd["getAdded()"]
  8d0e7bb2_007f_5d88_64a2_3b0646b309a1 -->|calls| 93b83f68_8c01_67cb_fc4b_e06a7e7ec6cd
  d8831ca9_b159_cb01_9a7a_d14ff371f3bc["getDropped()"]
  8d0e7bb2_007f_5d88_64a2_3b0646b309a1 -->|calls| d8831ca9_b159_cb01_9a7a_d14ff371f3bc
  d8e591b7_f3dd_5f49_beb9_c9047d4d1e02["getTableChangeQueries()"]
  8d0e7bb2_007f_5d88_64a2_3b0646b309a1 -->|calls| d8e591b7_f3dd_5f49_beb9_c9047d4d1e02
  style 8d0e7bb2_007f_5d88_64a2_3b0646b309a1 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/db/src/core/cli/migration-queries.ts lines 42–108

export async function getMigrationQueries({
	oldSnapshot,
	newSnapshot,
	reset = false,
}: {
	oldSnapshot: DBSnapshot;
	newSnapshot: DBSnapshot;
	reset?: boolean;
}): Promise<{ queries: string[]; confirmations: string[] }> {
	const queries: string[] = [];
	const confirmations: string[] = [];

	// When doing a reset, first create DROP TABLE statements, then treat everything
	// else as creation.
	if (reset) {
		const currentSnapshot = oldSnapshot;
		oldSnapshot = createEmptySnapshot();
		queries.push(...getDropTableQueriesForSnapshot(currentSnapshot));
	}

	const addedTables = getAddedTables(oldSnapshot, newSnapshot);
	const droppedTables = getDroppedTables(oldSnapshot, newSnapshot);
	const notDeprecatedDroppedTables = Object.fromEntries(
		Object.entries(droppedTables).filter(([, table]) => !table.deprecated),
	);
	if (!isEmpty(addedTables) && !isEmpty(notDeprecatedDroppedTables)) {
		const oldTable = Object.keys(notDeprecatedDroppedTables)[0];
		const newTable = Object.keys(addedTables)[0];
		throw new Error(RENAME_TABLE_ERROR(oldTable, newTable));
	}

	for (const [tableName, table] of Object.entries(addedTables)) {
		queries.push(getCreateTableQuery(tableName, table));
		queries.push(...getCreateIndexQueries(tableName, table));
	}

	for (const [tableName] of Object.entries(droppedTables)) {
		const dropQuery = `DROP TABLE ${sqlite.escapeName(tableName)}`;
		queries.push(dropQuery);
	}

	for (const [tableName, newTable] of Object.entries(newSnapshot.schema)) {
		const oldTable = oldSnapshot.schema[tableName];
		if (!oldTable) continue;
		const addedColumns = getAdded(oldTable.columns, newTable.columns);
		const droppedColumns = getDropped(oldTable.columns, newTable.columns);
		const notDeprecatedDroppedColumns = Object.fromEntries(
			Object.entries(droppedColumns).filter(([, col]) => !col.schema.deprecated),
		);
		if (!isEmpty(addedColumns) && !isEmpty(notDeprecatedDroppedColumns)) {
			throw new Error(
				RENAME_COLUMN_ERROR(
					`${tableName}.${Object.keys(addedColumns)[0]}`,
					`${tableName}.${Object.keys(notDeprecatedDroppedColumns)[0]}`,
				),
			);
		}
		const result = await getTableChangeQueries({
			tableName,
			oldTable,
			newTable,
		});
		queries.push(...result.queries);
		confirmations.push(...result.confirmations);
	}
	return { queries, confirmations };
}

Domain

Subdomains

Frequently Asked Questions

What does getMigrationQueries() do?
getMigrationQueries() is a function in the astro codebase, defined in packages/db/src/core/cli/migration-queries.ts.
Where is getMigrationQueries() defined?
getMigrationQueries() is defined in packages/db/src/core/cli/migration-queries.ts at line 42.
What does getMigrationQueries() call?
getMigrationQueries() calls 8 function(s): createEmptySnapshot, getAdded, getAddedTables, getDropTableQueriesForSnapshot, getDropped, getDroppedTables, getTableChangeQueries, isEmpty.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free