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

getSqliteInfo() — drizzle-orm Function Reference

Architecture documentation for the getSqliteInfo() function in index.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  e8a71082_205b_2757_2e0b_855628ebd207["getSqliteInfo()"]
  0fabdd81_61c9_bb7c_7ddf_dde7a6071abc["index.ts"]
  e8a71082_205b_2757_2e0b_855628ebd207 -->|defined in| 0fabdd81_61c9_bb7c_7ddf_dde7a6071abc
  098c3fad_5eaa_f8ac_60ed_8791f3fd9e74["seedSqlite()"]
  098c3fad_5eaa_f8ac_60ed_8791f3fd9e74 -->|calls| e8a71082_205b_2757_2e0b_855628ebd207
  d8406fd4_31dc_5e40_765e_d2ea7f0d3134["isRelationCyclic()"]
  e8a71082_205b_2757_2e0b_855628ebd207 -->|calls| d8406fd4_31dc_5e40_765e_d2ea7f0d3134
  style e8a71082_205b_2757_2e0b_855628ebd207 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-seed/src/index.ts lines 1285–1502

const getSqliteInfo = (
	sqliteSchema: { [key: string]: SQLiteTable | Relations },
	sqliteTables: { [key: string]: SQLiteTable },
) => {
	let tableConfig: ReturnType<typeof getSqliteTableConfig>;
	let dbToTsColumnNamesMap: { [key: string]: string };
	const dbToTsTableNamesMap: { [key: string]: string } = Object.fromEntries(
		Object.entries(sqliteTables).map(([key, value]) => [getTableName(value), key]),
	);

	const tables: Table[] = [];
	const relations: RelationWithReferences[] = [];
	const dbToTsColumnNamesMapGlobal: {
		[tableName: string]: { [dbColumnName: string]: string };
	} = {};
	const tableRelations: { [tableName: string]: RelationWithReferences[] } = {};

	const getDbToTsColumnNamesMap = (table: SQLiteTable) => {
		let dbToTsColumnNamesMap: { [dbColName: string]: string } = {};

		const tableName = getTableName(table);
		if (Object.hasOwn(dbToTsColumnNamesMapGlobal, tableName)) {
			dbToTsColumnNamesMap = dbToTsColumnNamesMapGlobal[tableName]!;
			return dbToTsColumnNamesMap;
		}

		const tableConfig = getSqliteTableConfig(table);
		for (const [tsCol, col] of Object.entries(tableConfig.columns[0]!.table)) {
			dbToTsColumnNamesMap[col.name] = tsCol;
		}
		dbToTsColumnNamesMapGlobal[tableName] = dbToTsColumnNamesMap;

		return dbToTsColumnNamesMap;
	};

	const transformFromDrizzleRelation = (
		schema: Record<string, SQLiteTable | Relations>,
		getDbToTsColumnNamesMap: (table: SQLiteTable) => {
			[dbColName: string]: string;
		},
		tableRelations: {
			[tableName: string]: RelationWithReferences[];
		},
	) => {
		const schemaConfig = extractTablesRelationalConfig(schema, createTableRelationsHelpers);
		const relations: RelationWithReferences[] = [];
		for (const table of Object.values(schemaConfig.tables)) {
			if (table.relations === undefined) continue;

			for (const drizzleRel of Object.values(table.relations)) {
				if (!is(drizzleRel, One)) continue;

				const tableConfig = getSqliteTableConfig(drizzleRel.sourceTable as SQLiteTable);
				const tableDbName = tableConfig.name;
				// TODO: tableNamesMap: have {public.customer: 'customer'} structure in sqlite
				const tableTsName = schemaConfig.tableNamesMap[`public.${tableDbName}`] ?? tableDbName;

				const dbToTsColumnNamesMap = getDbToTsColumnNamesMap(drizzleRel.sourceTable as SQLiteTable);
				const columns = drizzleRel.config?.fields.map((field) => dbToTsColumnNamesMap[field.name] as string)
					?? [];

				const refTableConfig = getSqliteTableConfig(drizzleRel.referencedTable as SQLiteTable);
				const refTableDbName = refTableConfig.name;
				const refTableTsName = schemaConfig.tableNamesMap[`public.${refTableDbName}`]
					?? refTableDbName;

				const dbToTsColumnNamesMapForRefTable = getDbToTsColumnNamesMap(drizzleRel.referencedTable as SQLiteTable);
				const refColumns = drizzleRel.config?.references.map((ref) =>
					dbToTsColumnNamesMapForRefTable[ref.name] as string
				)
					?? [];

				if (tableRelations[refTableTsName] === undefined) {
					tableRelations[refTableTsName] = [];
				}

				const relation: RelationWithReferences = {
					table: tableTsName,
					columns,
					refTable: refTableTsName,
					refColumns,

Domain

Subdomains

Called By

Frequently Asked Questions

What does getSqliteInfo() do?
getSqliteInfo() is a function in the drizzle-orm codebase, defined in drizzle-seed/src/index.ts.
Where is getSqliteInfo() defined?
getSqliteInfo() is defined in drizzle-seed/src/index.ts at line 1285.
What does getSqliteInfo() call?
getSqliteInfo() calls 1 function(s): isRelationCyclic.
What calls getSqliteInfo()?
getSqliteInfo() is called by 1 function(s): seedSqlite.

Analyze Your Own Codebase

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

Try Supermodel Free