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

getMySqlInfo() — drizzle-orm Function Reference

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

Entity Profile

Dependency Diagram

graph TD
  7bfa7bb3_181b_ecad_deb4_686cdb9b0d10["getMySqlInfo()"]
  0fabdd81_61c9_bb7c_7ddf_dde7a6071abc["index.ts"]
  7bfa7bb3_181b_ecad_deb4_686cdb9b0d10 -->|defined in| 0fabdd81_61c9_bb7c_7ddf_dde7a6071abc
  91804a24_fdec_050d_343d_3b5365a9b5ca["seedMySql()"]
  91804a24_fdec_050d_343d_3b5365a9b5ca -->|calls| 7bfa7bb3_181b_ecad_deb4_686cdb9b0d10
  d8406fd4_31dc_5e40_765e_d2ea7f0d3134["isRelationCyclic()"]
  7bfa7bb3_181b_ecad_deb4_686cdb9b0d10 -->|calls| d8406fd4_31dc_5e40_765e_d2ea7f0d3134
  style 7bfa7bb3_181b_ecad_deb4_686cdb9b0d10 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-seed/src/index.ts lines 963–1185

const getMySqlInfo = (
	mysqlSchema: { [key: string]: MySqlTable | Relations },
	mysqlTables: { [key: string]: MySqlTable },
) => {
	let tableConfig: ReturnType<typeof getMysqlTableConfig>;
	let dbToTsColumnNamesMap: { [key: string]: string };

	const dbToTsTableNamesMap: { [key: string]: string } = Object.fromEntries(
		Object.entries(mysqlTables).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: MySqlTable) => {
		let dbToTsColumnNamesMap: { [dbColName: string]: string } = {};

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

		const tableConfig = getMysqlTableConfig(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, MySqlTable | Relations>,
		getDbToTsColumnNamesMap: (table: MySqlTable) => {
			[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 = getMysqlTableConfig(drizzleRel.sourceTable as MySqlTable);
				const tableDbSchema = tableConfig.schema ?? 'public';
				const tableDbName = tableConfig.name;
				const tableTsName = schemaConfig.tableNamesMap[`${tableDbSchema}.${tableDbName}`] ?? tableDbName;

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

				const refTableConfig = getMysqlTableConfig(drizzleRel.referencedTable as MySqlTable);
				const refTableDbSchema = refTableConfig.schema ?? 'public';
				const refTableDbName = refTableConfig.name;
				const refTableTsName = schemaConfig.tableNamesMap[`${refTableDbSchema}.${refTableDbName}`]
					?? refTableDbName;

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

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

				const relation: RelationWithReferences = {
					table: tableTsName,
					columns,

Domain

Subdomains

Called By

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free