Home / Function/ pushSchema() — drizzle-orm Function Reference

pushSchema() — drizzle-orm Function Reference

Architecture documentation for the pushSchema() function in api.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  4c61650e_7f36_043b_24cd_0e5119e86678["pushSchema()"]
  e668bfef_9125_1ef0_2f94_a0f9605584bd["api.ts"]
  4c61650e_7f36_043b_24cd_0e5119e86678 -->|defined in| e668bfef_9125_1ef0_2f94_a0f9605584bd
  7fb12b1c_5cdb_dd13_4400_ed9f468b6c93["getTablesFilterByExtensions()"]
  4c61650e_7f36_043b_24cd_0e5119e86678 -->|calls| 7fb12b1c_5cdb_dd13_4400_ed9f468b6c93
  2de6d3a5_f3ce_a0e2_343b_91dc72274330["generateDrizzleJson()"]
  4c61650e_7f36_043b_24cd_0e5119e86678 -->|calls| 2de6d3a5_f3ce_a0e2_343b_91dc72274330
  6109e4f5_b41c_e1f5_46f4_31f100453ba2["pgPushIntrospect()"]
  4c61650e_7f36_043b_24cd_0e5119e86678 -->|calls| 6109e4f5_b41c_e1f5_46f4_31f100453ba2
  60cccf3e_0a08_14d7_0d22_dfaeb6777eb0["squashPgScheme()"]
  4c61650e_7f36_043b_24cd_0e5119e86678 -->|calls| 60cccf3e_0a08_14d7_0d22_dfaeb6777eb0
  99a768a1_158f_61ad_5701_374c946e2765["pgSuggestions()"]
  4c61650e_7f36_043b_24cd_0e5119e86678 -->|calls| 99a768a1_158f_61ad_5701_374c946e2765
  style 4c61650e_7f36_043b_24cd_0e5119e86678 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-kit/src/api.ts lines 125–188

export const pushSchema = async (
	imports: Record<string, unknown>,
	drizzleInstance: PgDatabase<any>,
	schemaFilters?: string[],
	tablesFilter?: string[],
	extensionsFilters?: Config['extensionsFilters'],
) => {
	const { applyPgSnapshotsDiff } = await import('./snapshotsDiffer');
	const { sql } = await import('drizzle-orm');
	const filters = (tablesFilter ?? []).concat(
		getTablesFilterByExtensions({ extensionsFilters, dialect: 'postgresql' }),
	);

	const db: DB = {
		query: async (query: string, params?: any[]) => {
			const res = await drizzleInstance.execute(sql.raw(query));
			return res.rows;
		},
	};

	const cur = generateDrizzleJson(imports);
	const { schema: prev } = await pgPushIntrospect(
		db,
		filters,
		schemaFilters ?? ['public'],
		undefined,
	);

	const validatedPrev = pgSchema.parse(prev);
	const validatedCur = pgSchema.parse(cur);

	const squashedPrev = squashPgScheme(validatedPrev, 'push');
	const squashedCur = squashPgScheme(validatedCur, 'push');

	const { statements } = await applyPgSnapshotsDiff(
		squashedPrev,
		squashedCur,
		schemasResolver,
		enumsResolver,
		sequencesResolver,
		policyResolver,
		indPolicyResolver,
		roleResolver,
		tablesResolver,
		columnsResolver,
		viewsResolver,
		validatedPrev,
		validatedCur,
		'push',
	);

	const { shouldAskForApprove, statementsToExecute, infoToPrint } = await pgSuggestions(db, statements);

	return {
		hasDataLoss: shouldAskForApprove,
		warnings: infoToPrint,
		statementsToExecute,
		apply: async () => {
			for (const dStmnt of statementsToExecute) {
				await db.query(dStmnt);
			}
		},
	};
};

Domain

Subdomains

Frequently Asked Questions

What does pushSchema() do?
pushSchema() is a function in the drizzle-orm codebase, defined in drizzle-kit/src/api.ts.
Where is pushSchema() defined?
pushSchema() is defined in drizzle-kit/src/api.ts at line 125.
What does pushSchema() call?
pushSchema() calls 5 function(s): generateDrizzleJson, getTablesFilterByExtensions, pgPushIntrospect, pgSuggestions, squashPgScheme.

Analyze Your Own Codebase

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

Try Supermodel Free