diff --git a/src/csv-loader/reference-resolver.ts b/src/csv-loader/reference-resolver.ts index e09a077..d81bc16 100644 --- a/src/csv-loader/reference-resolver.ts +++ b/src/csv-loader/reference-resolver.ts @@ -41,13 +41,11 @@ export function hasNestedReferences(schema: Schema): boolean { } } -export function loadReferenceTable( +function loadReferenceTableData( schema: ReferenceSchema | ReverseReferenceSchema, refBaseDir: string | undefined, - defaultPrimaryKey: string, currentFilePath: string | undefined, ): { - lookup: Map>; refTable: Record[]; refFilePath: string; } { @@ -86,6 +84,30 @@ export function loadReferenceTable( } } + return { refTable, refFilePath }; +} + +/** + * Load a referenced table and build a forward lookup keyed by primary key. + * Only call this when forward resolution is actually needed; the reverse + * path uses `loadReferenceTableData` directly to avoid building a throwaway map. + */ +export function loadReferenceTable( + schema: ReferenceSchema | ReverseReferenceSchema, + refBaseDir: string | undefined, + defaultPrimaryKey: string, + currentFilePath: string | undefined, +): { + lookup: Map>; + refTable: Record[]; + refFilePath: string; +} { + const { refTable, refFilePath } = loadReferenceTableData( + schema, + refBaseDir, + currentFilePath, + ); + const lookup = new Map>(); refTable.forEach((row) => { const pkValue = row[defaultPrimaryKey]; @@ -107,10 +129,9 @@ function getReverseLookup( defaultPrimaryKey: string, currentFilePath: string | undefined, ): Map[]> { - const { refTable, refFilePath } = loadReferenceTable( + const { refTable, refFilePath } = loadReferenceTableData( schema, refBaseDir, - defaultPrimaryKey, currentFilePath, );