MCPcopy
hub / github.com/drizzle-team/drizzle-orm / transformFromDrizzleRelation

Function transformFromDrizzleRelation

drizzle-seed/src/index.ts:606–677  ·  view source on GitHub ↗
(
		schema: Record<string, PgTable | Relations>,
		getDbToTsColumnNamesMap: (table: PgTable) => {
			[dbColName: string]: string;
		},
		tableRelations: {
			[tableName: string]: RelationWithReferences[];
		},
	)

Source from the content-addressed store, hash-verified

604 };
605
606 const transformFromDrizzleRelation = (
607 schema: Record<string, PgTable | Relations>,
608 getDbToTsColumnNamesMap: (table: PgTable) => {
609 [dbColName: string]: string;
610 },
611 tableRelations: {
612 [tableName: string]: RelationWithReferences[];
613 },
614 ) => {
615 const schemaConfig = extractTablesRelationalConfig(schema, createTableRelationsHelpers);
616 const relations: RelationWithReferences[] = [];
617 for (const table of Object.values(schemaConfig.tables)) {
618 if (table.relations === undefined) continue;
619
620 for (const drizzleRel of Object.values(table.relations)) {
621 if (!is(drizzleRel, One)) continue;
622
623 const tableConfig = getPgTableConfig(drizzleRel.sourceTable as PgTable);
624 const tableDbSchema = tableConfig.schema ?? 'public';
625 const tableDbName = tableConfig.name;
626 const tableTsName = schemaConfig.tableNamesMap[`${tableDbSchema}.${tableDbName}`] ?? tableDbName;
627
628 const dbToTsColumnNamesMap = getDbToTsColumnNamesMap(drizzleRel.sourceTable);
629 const columns = drizzleRel.config?.fields.map((field) => dbToTsColumnNamesMap[field.name] as string)
630 ?? [];
631
632 const refTableConfig = getPgTableConfig(drizzleRel.referencedTable as PgTable);
633 const refTableDbSchema = refTableConfig.schema ?? 'public';
634 const refTableDbName = refTableConfig.name;
635 const refTableTsName = schemaConfig.tableNamesMap[`${refTableDbSchema}.${refTableDbName}`]
636 ?? refTableDbName;
637
638 const dbToTsColumnNamesMapForRefTable = getDbToTsColumnNamesMap(drizzleRel.referencedTable);
639 const refColumns = drizzleRel.config?.references.map((ref) =>
640 dbToTsColumnNamesMapForRefTable[ref.name] as string
641 )
642 ?? [];
643
644 if (tableRelations[refTableTsName] === undefined) {
645 tableRelations[refTableTsName] = [];
646 }
647
648 const relation: RelationWithReferences = {
649 table: tableTsName,
650 columns,
651 refTable: refTableTsName,
652 refColumns,
653 refTableRels: tableRelations[refTableTsName],
654 type: 'one',
655 };
656
657 // do not add duplicate relation
658 if (
659 tableRelations[tableTsName]?.some((rel) =>
660 rel.table === relation.table
661 && rel.refTable === relation.refTable
662 )
663 ) {

Callers 3

getPostgresInfoFunction · 0.85
getMySqlInfoFunction · 0.85
getSqliteInfoFunction · 0.85

Calls 4

isFunction · 0.90
getDbToTsColumnNamesMapFunction · 0.85
valuesMethod · 0.45

Tested by

no test coverage detected