Home / File/ pgImports.ts — drizzle-orm Source File

pgImports.ts — drizzle-orm Source File

Architecture documentation for pgImports.ts, a typescript file in the drizzle-orm codebase. 5 imports, 1 dependents.

File typescript DrizzleKit SnapshotSerializer 5 imports 1 dependents 2 functions

Entity Profile

Dependency Diagram

graph LR
  04ea3fca_c22c_3db0_5ecd_ef1de68ce128["pgImports.ts"]
  09e5bcf1_0f03_3dbd_fbdb_762440f28855["utils.ts"]
  04ea3fca_c22c_3db0_5ecd_ef1de68ce128 --> 09e5bcf1_0f03_3dbd_fbdb_762440f28855
  54221957_c725_0bfe_4345_4f3837d39296["safeRegister"]
  04ea3fca_c22c_3db0_5ecd_ef1de68ce128 --> 54221957_c725_0bfe_4345_4f3837d39296
  690f7dfc_0aea_9ee8_d6e7_26bbb3689031["drizzle-orm"]
  04ea3fca_c22c_3db0_5ecd_ef1de68ce128 --> 690f7dfc_0aea_9ee8_d6e7_26bbb3689031
  53497908_16e7_977d_e97d_7414884a88a6["pg-core"]
  04ea3fca_c22c_3db0_5ecd_ef1de68ce128 --> 53497908_16e7_977d_e97d_7414884a88a6
  202c0b4f_d331_3b16_d76e_0c2d0db343df["relations"]
  04ea3fca_c22c_3db0_5ecd_ef1de68ce128 --> 202c0b4f_d331_3b16_d76e_0c2d0db343df
  e668bfef_9125_1ef0_2f94_a0f9605584bd["api.ts"]
  e668bfef_9125_1ef0_2f94_a0f9605584bd --> 04ea3fca_c22c_3db0_5ecd_ef1de68ce128
  style 04ea3fca_c22c_3db0_5ecd_ef1de68ce128 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { is } from 'drizzle-orm';
import {
	AnyPgTable,
	isPgEnum,
	isPgMaterializedView,
	isPgSequence,
	isPgView,
	PgEnum,
	PgMaterializedView,
	PgPolicy,
	PgRole,
	PgSchema,
	PgSequence,
	PgTable,
	PgView,
} from 'drizzle-orm/pg-core';
import { Relations } from 'drizzle-orm/relations';
import { safeRegister } from '../cli/commands/utils';

export const prepareFromExports = (exports: Record<string, unknown>) => {
	const tables: AnyPgTable[] = [];
	const enums: PgEnum<any>[] = [];
	const schemas: PgSchema[] = [];
	const sequences: PgSequence[] = [];
	const roles: PgRole[] = [];
	const policies: PgPolicy[] = [];
	const views: PgView[] = [];
	const matViews: PgMaterializedView[] = [];
	const relations: Relations[] = [];

	const i0values = Object.values(exports);
	i0values.forEach((t) => {
		if (isPgEnum(t)) {
			enums.push(t);
			return;
		}
		if (is(t, PgTable)) {
			tables.push(t);
		}

		if (is(t, PgSchema)) {
			schemas.push(t);
		}

		if (isPgView(t)) {
			views.push(t);
		}

		if (isPgMaterializedView(t)) {
			matViews.push(t);
		}

		if (isPgSequence(t)) {
			sequences.push(t);
		}

		if (is(t, PgRole)) {
			roles.push(t);
		}

		if (is(t, PgPolicy)) {
			policies.push(t);
		}

		if (is(t, Relations)) {
			relations.push(t);
		}
	});

	return { tables, enums, schemas, sequences, views, matViews, roles, policies, relations };
};

export const prepareFromPgImports = async (imports: string[]) => {
	const tables: AnyPgTable[] = [];
	const enums: PgEnum<any>[] = [];
	const schemas: PgSchema[] = [];
	const sequences: PgSequence[] = [];
	const views: PgView[] = [];
	const roles: PgRole[] = [];
	const policies: PgPolicy[] = [];
	const matViews: PgMaterializedView[] = [];
	const relations: Relations[] = [];

	const { unregister } = await safeRegister();
	for (let i = 0; i < imports.length; i++) {
		const it = imports[i];

		const i0: Record<string, unknown> = require(`${it}`);
		const prepared = prepareFromExports(i0);

		tables.push(...prepared.tables);
		enums.push(...prepared.enums);
		schemas.push(...prepared.schemas);
		sequences.push(...prepared.sequences);
		views.push(...prepared.views);
		matViews.push(...prepared.matViews);
		roles.push(...prepared.roles);
		policies.push(...prepared.policies);
		relations.push(...prepared.relations);
	}
	unregister();

	return {
		tables: Array.from(new Set(tables)),
		enums,
		schemas,
		sequences,
		views,
		matViews,
		roles,
		policies,
		relations,
	};
};

Domain

Subdomains

Dependencies

Frequently Asked Questions

What does pgImports.ts do?
pgImports.ts is a source file in the drizzle-orm codebase, written in typescript. It belongs to the DrizzleKit domain, SnapshotSerializer subdomain.
What functions are defined in pgImports.ts?
pgImports.ts defines 2 function(s): prepareFromExports, prepareFromPgImports.
What does pgImports.ts depend on?
pgImports.ts imports 5 module(s): drizzle-orm, pg-core, relations, safeRegister, utils.ts.
What files import pgImports.ts?
pgImports.ts is imported by 1 file(s): api.ts.
Where is pgImports.ts in the architecture?
pgImports.ts is located at drizzle-kit/src/serializer/pgImports.ts (domain: DrizzleKit, subdomain: SnapshotSerializer, directory: drizzle-kit/src/serializer).

Analyze Your Own Codebase

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

Try Supermodel Free