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

introspectPostgres() — drizzle-orm Function Reference

Architecture documentation for the introspectPostgres() function in introspect.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  d532b567_3dc6_7be3_0c7e_e6f3a15eddff["introspectPostgres()"]
  c2c22050_0d5c_404e_2b18_5934c728a89c["introspect.ts"]
  d532b567_3dc6_7be3_0c7e_e6f3a15eddff -->|defined in| c2c22050_0d5c_404e_2b18_5934c728a89c
  db0c397a_220a_c404_bea0_7813784bf108["update()"]
  d532b567_3dc6_7be3_0c7e_e6f3a15eddff -->|calls| db0c397a_220a_c404_bea0_7813784bf108
  d34d3e87_b168_fea6_ac14_fef2ffdc1654["relationsToTypeScript()"]
  d532b567_3dc6_7be3_0c7e_e6f3a15eddff -->|calls| d34d3e87_b168_fea6_ac14_fef2ffdc1654
  3f325b6b_14df_fa20_c5d7_83c98bc3d75c["prepareOutFolder()"]
  d532b567_3dc6_7be3_0c7e_e6f3a15eddff -->|calls| 3f325b6b_14df_fa20_c5d7_83c98bc3d75c
  c7a398db_43c9_7771_09b7_73bc09e703e8["applyPgSnapshotsDiff()"]
  d532b567_3dc6_7be3_0c7e_e6f3a15eddff -->|calls| c7a398db_43c9_7771_09b7_73bc09e703e8
  60cccf3e_0a08_14d7_0d22_dfaeb6777eb0["squashPgScheme()"]
  d532b567_3dc6_7be3_0c7e_e6f3a15eddff -->|calls| 60cccf3e_0a08_14d7_0d22_dfaeb6777eb0
  cb2d3951_4fcb_d824_359b_9f044d2f7e6c["writeResult()"]
  d532b567_3dc6_7be3_0c7e_e6f3a15eddff -->|calls| cb2d3951_4fcb_d824_359b_9f044d2f7e6c
  style d532b567_3dc6_7be3_0c7e_e6f3a15eddff fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-kit/src/cli/commands/introspect.ts lines 55–179

export const introspectPostgres = async (
	casing: Casing,
	out: string,
	breakpoints: boolean,
	credentials: PostgresCredentials,
	tablesFilter: string[],
	schemasFilter: string[],
	prefix: Prefix,
	entities: Entities,
) => {
	const { preparePostgresDB } = await import('../connections');
	const db = await preparePostgresDB(credentials);

	const matchers = tablesFilter.map((it) => {
		return new Minimatch(it);
	});

	const filter = (tableName: string) => {
		if (matchers.length === 0) return true;

		let flags: boolean[] = [];

		for (let matcher of matchers) {
			if (matcher.negate) {
				if (!matcher.match(tableName)) {
					flags.push(false);
				}
			}

			if (matcher.match(tableName)) {
				flags.push(true);
			}
		}

		if (flags.length > 0) {
			return flags.every(Boolean);
		}
		return false;
	};

	const progress = new IntrospectProgress(true);

	const res = await renderWithTask(
		progress,
		fromPostgresDatabase(
			db,
			filter,
			schemasFilter,
			entities,
			(stage, count, status) => {
				progress.update(stage, count, status);
			},
		),
	);

	const schema = { id: originUUID, prevId: '', ...res } as PgSchema;
	const ts = postgresSchemaToTypeScript(schema, casing);
	const relationsTs = relationsToTypeScript(schema, casing);
	const { internal, ...schemaWithoutInternals } = schema;

	const schemaFile = join(out, 'schema.ts');
	writeFileSync(schemaFile, ts.file);
	const relationsFile = join(out, 'relations.ts');
	writeFileSync(relationsFile, relationsTs.file);
	console.log();

	const { snapshots, journal } = prepareOutFolder(out, 'postgresql');

	if (snapshots.length === 0) {
		const { sqlStatements, _meta } = await applyPgSnapshotsDiff(
			squashPgScheme(dryPg),
			squashPgScheme(schema),
			schemasResolver,
			enumsResolver,
			sequencesResolver,
			policyResolver,
			indPolicyResolver,
			roleResolver,
			tablesResolver,
			columnsResolver,
			viewsResolver,

Domain

Subdomains

Frequently Asked Questions

What does introspectPostgres() do?
introspectPostgres() is a function in the drizzle-orm codebase, defined in drizzle-kit/src/cli/commands/introspect.ts.
Where is introspectPostgres() defined?
introspectPostgres() is defined in drizzle-kit/src/cli/commands/introspect.ts at line 55.
What does introspectPostgres() call?
introspectPostgres() calls 6 function(s): applyPgSnapshotsDiff, prepareOutFolder, relationsToTypeScript, squashPgScheme, update, writeResult.

Analyze Your Own Codebase

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

Try Supermodel Free