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

diffTestSchemasPush() — drizzle-orm Function Reference

Architecture documentation for the diffTestSchemasPush() function in schemaDiffer.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  e15327fc_6c47_0a22_5e26_e5f3a2056272["diffTestSchemasPush()"]
  fb6b4a65_030b_ce6b_df0d_2be21adcd2b3["schemaDiffer.ts"]
  e15327fc_6c47_0a22_5e26_e5f3a2056272 -->|defined in| fb6b4a65_030b_ce6b_df0d_2be21adcd2b3
  a9b90700_95b1_2733_ec44_94b71b29bd74["applyPgDiffs()"]
  e15327fc_6c47_0a22_5e26_e5f3a2056272 -->|calls| a9b90700_95b1_2733_ec44_94b71b29bd74
  eeae166f_7245_697c_8a12_79452338852b["testSchemasResolver()"]
  e15327fc_6c47_0a22_5e26_e5f3a2056272 -->|calls| eeae166f_7245_697c_8a12_79452338852b
  6670774e_1db8_2949_ed84_d99556952a75["testEnumsResolver()"]
  e15327fc_6c47_0a22_5e26_e5f3a2056272 -->|calls| 6670774e_1db8_2949_ed84_d99556952a75
  2522a128_f430_99e3_ea16_7c738fa66b11["testSequencesResolver()"]
  e15327fc_6c47_0a22_5e26_e5f3a2056272 -->|calls| 2522a128_f430_99e3_ea16_7c738fa66b11
  5c0a54e1_d2f8_ab8d_7ce4_e9a683283904["testPolicyResolver()"]
  e15327fc_6c47_0a22_5e26_e5f3a2056272 -->|calls| 5c0a54e1_d2f8_ab8d_7ce4_e9a683283904
  34ec492e_618a_f328_80c2_00f216a2b9bb["testIndPolicyResolver()"]
  e15327fc_6c47_0a22_5e26_e5f3a2056272 -->|calls| 34ec492e_618a_f328_80c2_00f216a2b9bb
  a2b8feff_6977_e47d_0e40_9b276e533813["testRolesResolver()"]
  e15327fc_6c47_0a22_5e26_e5f3a2056272 -->|calls| a2b8feff_6977_e47d_0e40_9b276e533813
  fd1b2256_62ed_ec7e_c677_9d8cbf56136b["testTablesResolver()"]
  e15327fc_6c47_0a22_5e26_e5f3a2056272 -->|calls| fd1b2256_62ed_ec7e_c677_9d8cbf56136b
  96edd91d_9f30_fc37_cbd3_7c1229315b14["testColumnsResolver()"]
  e15327fc_6c47_0a22_5e26_e5f3a2056272 -->|calls| 96edd91d_9f30_fc37_cbd3_7c1229315b14
  868985e6_2cbc_d514_e90b_6c5c650c0e1c["testViewsResolver()"]
  e15327fc_6c47_0a22_5e26_e5f3a2056272 -->|calls| 868985e6_2cbc_d514_e90b_6c5c650c0e1c
  style e15327fc_6c47_0a22_5e26_e5f3a2056272 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-kit/tests/schemaDiffer.ts lines 940–1128

export const diffTestSchemasPush = async (
	client: PGlite,
	left: PostgresSchema,
	right: PostgresSchema,
	renamesArr: string[],
	cli: boolean = false,
	schemas: string[] = ['public'],
	casing?: CasingType | undefined,
	entities?: Entities,
	sqlStatementsToRun: {
		before?: string[];
		after?: string[];
		runApply?: boolean;
	} = {
		before: [],
		after: [],
		runApply: true,
	},
) => {
	const shouldRunApply = sqlStatementsToRun.runApply === undefined
		? true
		: sqlStatementsToRun.runApply;

	for (const st of sqlStatementsToRun.before ?? []) {
		await client.query(st);
	}

	if (shouldRunApply) {
		const res = await applyPgDiffs(left, casing);
		for (const st of res.sqlStatements) {
			await client.query(st);
		}
	}

	for (const st of sqlStatementsToRun.after ?? []) {
		await client.query(st);
	}

	const materializedViewsForRefresh = Object.values(left).filter((it) =>
		isPgMaterializedView(it)
	) as PgMaterializedView[];

	// refresh all mat views
	for (const view of materializedViewsForRefresh) {
		const viewConf = getMaterializedViewConfig(view);
		if (viewConf.isExisting) continue;

		await client.exec(
			`REFRESH MATERIALIZED VIEW "${viewConf.schema ?? 'public'}"."${viewConf.name}"${
				viewConf.withNoData ? ' WITH NO DATA;' : ';'
			}`,
		);
	}

	// do introspect into PgSchemaInternal
	const introspectedSchema = await fromDatabase(
		{
			query: async (query: string, values?: any[] | undefined) => {
				const res = await client.query(query, values);
				return res.rows as any[];
			},
		},
		undefined,
		schemas,
		entities,
	);

	const leftTables = Object.values(right).filter((it) => is(it, PgTable)) as PgTable[];

	const leftSchemas = Object.values(right).filter((it) => is(it, PgSchema)) as PgSchema[];

	const leftEnums = Object.values(right).filter((it) => isPgEnum(it)) as PgEnum<any>[];

	const leftSequences = Object.values(right).filter((it) => isPgSequence(it)) as PgSequence[];

	const leftRoles = Object.values(right).filter((it) => is(it, PgRole)) as PgRole[];

	const leftPolicies = Object.values(right).filter((it) => is(it, PgPolicy)) as PgPolicy[];

	const leftViews = Object.values(right).filter((it) => isPgView(it)) as PgView[];

Domain

Subdomains

Frequently Asked Questions

What does diffTestSchemasPush() do?
diffTestSchemasPush() is a function in the drizzle-orm codebase, defined in drizzle-kit/tests/schemaDiffer.ts.
Where is diffTestSchemasPush() defined?
diffTestSchemasPush() is defined in drizzle-kit/tests/schemaDiffer.ts at line 940.
What does diffTestSchemasPush() call?
diffTestSchemasPush() calls 10 function(s): applyPgDiffs, testColumnsResolver, testEnumsResolver, testIndPolicyResolver, testPolicyResolver, testRolesResolver, testSchemasResolver, testSequencesResolver, and 2 more.

Analyze Your Own Codebase

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

Try Supermodel Free