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

schemaToTypeScript() — drizzle-orm Function Reference

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

Entity Profile

Dependency Diagram

graph TD
  5a8c82ee_a5ea_c82a_7f3f_71133b91a28a["schemaToTypeScript()"]
  c1c349dd_2e31_d056_728c_c034cebb41c0["introspect-sqlite.ts"]
  5a8c82ee_a5ea_c82a_7f3f_71133b91a28a -->|defined in| c1c349dd_2e31_d056_728c_c034cebb41c0
  7c863cc4_5d6c_f72d_cf36_6aa755ac2321["sqliteIntrospect()"]
  7c863cc4_5d6c_f72d_cf36_6aa755ac2321 -->|calls| 5a8c82ee_a5ea_c82a_7f3f_71133b91a28a
  d11905b4_a7b6_40f4_09ff_114b87f29eed["withCasing()"]
  5a8c82ee_a5ea_c82a_7f3f_71133b91a28a -->|calls| d11905b4_a7b6_40f4_09ff_114b87f29eed
  154c5f90_2024_d20f_7338_69f47fcd8698["createTableColumns()"]
  5a8c82ee_a5ea_c82a_7f3f_71133b91a28a -->|calls| 154c5f90_2024_d20f_7338_69f47fcd8698
  5b76307c_ebf1_1efd_2cb6_5014e6794762["isSelf()"]
  5a8c82ee_a5ea_c82a_7f3f_71133b91a28a -->|calls| 5b76307c_ebf1_1efd_2cb6_5014e6794762
  53155f85_7a2d_6004_4b1e_e7114e23ba01["createTableIndexes()"]
  5a8c82ee_a5ea_c82a_7f3f_71133b91a28a -->|calls| 53155f85_7a2d_6004_4b1e_e7114e23ba01
  48befb78_597d_08a4_28c3_0043e79f20bd["createTableFKs()"]
  5a8c82ee_a5ea_c82a_7f3f_71133b91a28a -->|calls| 48befb78_597d_08a4_28c3_0043e79f20bd
  6c849061_c169_d087_fe83_43fe80a19ac3["createTablePKs()"]
  5a8c82ee_a5ea_c82a_7f3f_71133b91a28a -->|calls| 6c849061_c169_d087_fe83_43fe80a19ac3
  259f76dc_c2d5_a363_60c7_501a2c95a74e["createTableUniques()"]
  5a8c82ee_a5ea_c82a_7f3f_71133b91a28a -->|calls| 259f76dc_c2d5_a363_60c7_501a2c95a74e
  430cd54b_14d4_9033_5310_2a68699c4da0["createTableChecks()"]
  5a8c82ee_a5ea_c82a_7f3f_71133b91a28a -->|calls| 430cd54b_14d4_9033_5310_2a68699c4da0
  style 5a8c82ee_a5ea_c82a_7f3f_71133b91a28a fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-kit/src/introspect-sqlite.ts lines 73–246

export const schemaToTypeScript = (
	schema: SQLiteSchemaInternal,
	casing: Casing,
) => {
	// collectFKs
	Object.values(schema.tables).forEach((table) => {
		Object.values(table.foreignKeys).forEach((fk) => {
			const relation = `${fk.tableFrom}-${fk.tableTo}`;
			relations.add(relation);
		});
	});

	const imports = Object.values(schema.tables).reduce(
		(res, it) => {
			const idxImports = Object.values(it.indexes).map((idx) => idx.isUnique ? 'uniqueIndex' : 'index');
			const fkImpots = Object.values(it.foreignKeys).map((it) => 'foreignKey');
			const pkImports = Object.values(it.compositePrimaryKeys).map(
				(it) => 'primaryKey',
			);
			const uniqueImports = Object.values(it.uniqueConstraints).map(
				(it) => 'unique',
			);
			const checkImports = Object.values(it.checkConstraints).map(
				(it) => 'check',
			);

			res.sqlite.push(...idxImports);
			res.sqlite.push(...fkImpots);
			res.sqlite.push(...pkImports);
			res.sqlite.push(...uniqueImports);
			res.sqlite.push(...checkImports);

			const columnImports = Object.values(it.columns)
				.map((col) => {
					return col.type;
				})
				.filter((type) => {
					return sqliteImportsList.has(type);
				});

			res.sqlite.push(...columnImports);
			return res;
		},
		{ sqlite: [] as string[] },
	);

	Object.values(schema.views).forEach((it) => {
		imports.sqlite.push('sqliteView');

		const columnImports = Object.values(it.columns)
			.map((col) => {
				return col.type;
			})
			.filter((type) => {
				return sqliteImportsList.has(type);
			});

		imports.sqlite.push(...columnImports);
	});

	const tableStatements = Object.values(schema.tables).map((table) => {
		const func = 'sqliteTable';
		let statement = '';
		if (imports.sqlite.includes(withCasing(table.name, casing))) {
			statement = `// Table name is in conflict with ${
				withCasing(
					table.name,
					casing,
				)
			} import.\n// Please change to any other name, that is not in imports list\n`;
		}
		statement += `export const ${withCasing(table.name, casing)} = ${func}("${table.name}", {\n`;
		statement += createTableColumns(
			Object.values(table.columns),
			Object.values(table.foreignKeys),
			casing,
		);
		statement += '}';

		// more than 2 fields or self reference or cyclic
		const filteredFKs = Object.values(table.foreignKeys).filter((it) => {

Domain

Subdomains

Called By

Frequently Asked Questions

What does schemaToTypeScript() do?
schemaToTypeScript() is a function in the drizzle-orm codebase, defined in drizzle-kit/src/introspect-sqlite.ts.
Where is schemaToTypeScript() defined?
schemaToTypeScript() is defined in drizzle-kit/src/introspect-sqlite.ts at line 73.
What does schemaToTypeScript() call?
schemaToTypeScript() calls 8 function(s): createTableChecks, createTableColumns, createTableFKs, createTableIndexes, createTablePKs, createTableUniques, isSelf, withCasing.
What calls schemaToTypeScript()?
schemaToTypeScript() is called by 1 function(s): sqliteIntrospect.

Analyze Your Own Codebase

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

Try Supermodel Free