drizzle-seed 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.cjs CHANGED
@@ -134254,6 +134254,7 @@ class SeedService {
134254
134254
  const table1Order = orderedTablesNames.indexOf(table1.name), table2Order = orderedTablesNames.indexOf(table2.name);
134255
134255
  return table1Order - table2Order;
134256
134256
  });
134257
+ const tableNamesSet = new Set(tables.map((table) => table.name));
134257
134258
  const tablesPossibleGenerators = tables.map((table) => ({
134258
134259
  tableName: table.name,
134259
134260
  columnsPossibleGenerators: [],
@@ -134284,8 +134285,10 @@ class SeedService {
134284
134285
  if (!tablesInOutRelations[table.name]?.dependantTableNames.has(fkTableName)) {
134285
134286
  const reason = tablesInOutRelations[table.name]?.selfRelation === true
134286
134287
  ? `"${table.name}" table has self reference`
134287
- : `"${fkTableName}" table doesn't have reference to "${table.name}" table`;
134288
- throw new Error(`${reason}. you can't specify "${fkTableName}" as parameter in ${table.name}.with object.`);
134288
+ : `"${fkTableName}" table doesn't have a reference to "${table.name}" table or`
134289
+ + `\nyou didn't include your one-to-many relation in the seed function schema`;
134290
+ throw new Error(`${reason}.` + `\nYou can't specify "${fkTableName}" as parameter in ${table.name}.with object.`
134291
+ + `\n\nFor more details, check this: https://orm.drizzle.team/docs/guides/seeding-using-with-option`);
134289
134292
  }
134290
134293
  idx = tablesPossibleGenerators.findIndex((table) => table.tableName === fkTableName);
134291
134294
  if (idx !== -1) {
@@ -134353,15 +134356,23 @@ class SeedService {
134353
134356
  if (cyclicRelation !== undefined) {
134354
134357
  columnPossibleGenerator.isCyclic = true;
134355
134358
  }
134356
- if (foreignKeyColumns[col.name]?.table === undefined && col.notNull === true) {
134357
- throw new Error(`Column '${col.name}' has no null contraint, and you didn't specify a table for foreign key on column '${col.name}' in '${table.name}' table. You should pass `);
134359
+ if ((foreignKeyColumns[col.name]?.table === undefined || !tableNamesSet.has(foreignKeyColumns[col.name].table))
134360
+ && col.notNull === true) {
134361
+ throw new Error(`Column '${col.name}' has not null contraint,`
134362
+ + `\nand you didn't specify a table for foreign key on column '${col.name}' in '${table.name}' table.`
134363
+ + `\n\nFor more details, check this: https://orm.drizzle.team/docs/guides/seeding-with-partially-exposed-tables#example-1`);
134358
134364
  }
134359
- const predicate = (cyclicRelation !== undefined || foreignKeyColumns[col.name]?.table === undefined)
134365
+ const predicate = (cyclicRelation !== undefined
134366
+ || (foreignKeyColumns[col.name]?.table === undefined
134367
+ || !tableNamesSet.has(foreignKeyColumns[col.name].table)))
134360
134368
  && col.notNull === false;
134361
134369
  if (predicate === true) {
134362
- if (foreignKeyColumns[col.name]?.table === undefined && col.notNull === false) {
134370
+ if ((foreignKeyColumns[col.name]?.table === undefined
134371
+ || !tableNamesSet.has(foreignKeyColumns[col.name].table)) && col.notNull === false) {
134363
134372
  console.warn(`Column '${col.name}' in '${table.name}' table will be filled with Null values`
134364
- + `\nbecause you specified neither a table for foreign key on column '${col.name}' nor a function for '${col.name}' column in refinements.`);
134373
+ + `\nbecause you specified neither a table for foreign key on column '${col.name}'`
134374
+ + `\nnor a function for '${col.name}' column in refinements.`
134375
+ + `\n\nFor more details, check this: https://orm.drizzle.team/docs/guides/seeding-with-partially-exposed-tables#example-2`);
134365
134376
  }
134366
134377
  columnPossibleGenerator.generator = new generatorsMap.GenerateDefault[0]({ defaultValue: null });
134367
134378
  columnPossibleGenerator.wasDefinedBefore = true;
@@ -135442,16 +135453,13 @@ const seedFunc = async (db, schema, options = {}, refinements) => {
135442
135453
  version = Number(options?.version);
135443
135454
  }
135444
135455
  if (drizzleOrm.is(db, (pgCore.PgDatabase))) {
135445
- const { pgSchema } = filterPgTables(schema);
135446
- await seedPostgres(db, pgSchema, { ...options, version }, refinements);
135456
+ await seedPostgres(db, schema, { ...options, version }, refinements);
135447
135457
  }
135448
135458
  else if (drizzleOrm.is(db, (mysqlCore.MySqlDatabase))) {
135449
- const { mySqlSchema } = filterMySqlTables(schema);
135450
- await seedMySql(db, mySqlSchema, { ...options, version }, refinements);
135459
+ await seedMySql(db, schema, { ...options, version }, refinements);
135451
135460
  }
135452
135461
  else if (drizzleOrm.is(db, (sqliteCore.BaseSQLiteDatabase))) {
135453
- const { sqliteSchema } = filterSqliteTables(schema);
135454
- await seedSqlite(db, sqliteSchema, { ...options, version }, refinements);
135462
+ await seedSqlite(db, schema, { ...options, version }, refinements);
135455
135463
  }
135456
135464
  else {
135457
135465
  throw new Error('The drizzle-seed package currently supports only PostgreSQL, MySQL, and SQLite databases. Please ensure your database is one of these supported types');
@@ -135500,21 +135508,21 @@ const seedFunc = async (db, schema, options = {}, refinements) => {
135500
135508
  */
135501
135509
  async function reset(db, schema) {
135502
135510
  if (drizzleOrm.is(db, (pgCore.PgDatabase))) {
135503
- const { pgSchema } = filterPgTables(schema);
135504
- if (Object.entries(pgSchema).length > 0) {
135505
- await resetPostgres(db, pgSchema);
135511
+ const { pgTables } = filterPgSchema(schema);
135512
+ if (Object.entries(pgTables).length > 0) {
135513
+ await resetPostgres(db, pgTables);
135506
135514
  }
135507
135515
  }
135508
135516
  else if (drizzleOrm.is(db, (mysqlCore.MySqlDatabase))) {
135509
- const { mySqlSchema } = filterMySqlTables(schema);
135510
- if (Object.entries(mySqlSchema).length > 0) {
135511
- await resetMySql(db, mySqlSchema);
135517
+ const { mysqlTables } = filterMysqlTables(schema);
135518
+ if (Object.entries(mysqlTables).length > 0) {
135519
+ await resetMySql(db, mysqlTables);
135512
135520
  }
135513
135521
  }
135514
135522
  else if (drizzleOrm.is(db, (sqliteCore.BaseSQLiteDatabase))) {
135515
- const { sqliteSchema } = filterSqliteTables(schema);
135516
- if (Object.entries(sqliteSchema).length > 0) {
135517
- await resetSqlite(db, sqliteSchema);
135523
+ const { sqliteTables } = filterSqliteTables(schema);
135524
+ if (Object.entries(sqliteTables).length > 0) {
135525
+ await resetSqlite(db, sqliteTables);
135518
135526
  }
135519
135527
  }
135520
135528
  else {
@@ -135522,32 +135530,34 @@ async function reset(db, schema) {
135522
135530
  }
135523
135531
  }
135524
135532
  // Postgres-----------------------------------------------------------------------------------------------------------
135525
- const resetPostgres = async (db, schema) => {
135526
- const tablesToTruncate = Object.entries(schema).map(([_, table]) => {
135533
+ const resetPostgres = async (db, pgTables) => {
135534
+ const tablesToTruncate = Object.entries(pgTables).map(([_, table]) => {
135527
135535
  const config = pgCore.getTableConfig(table);
135528
135536
  config.schema = config.schema === undefined ? 'public' : config.schema;
135529
135537
  return `"${config.schema}"."${config.name}"`;
135530
135538
  });
135531
135539
  await db.execute(drizzleOrm.sql.raw(`truncate ${tablesToTruncate.join(',')} cascade;`));
135532
135540
  };
135533
- const filterPgTables = (schema) => {
135534
- const pgSchema = Object.fromEntries(Object.entries(schema).filter((keyValue) => drizzleOrm.is(keyValue[1], pgCore.PgTable)));
135535
- return { pgSchema };
135541
+ const filterPgSchema = (schema) => {
135542
+ const pgSchema = Object.fromEntries(Object.entries(schema).filter((keyValue) => drizzleOrm.is(keyValue[1], pgCore.PgTable) || drizzleOrm.is(keyValue[1], drizzleOrm.Relations)));
135543
+ const pgTables = Object.fromEntries(Object.entries(schema).filter((keyValue) => drizzleOrm.is(keyValue[1], pgCore.PgTable)));
135544
+ return { pgSchema, pgTables };
135536
135545
  };
135537
135546
  const seedPostgres = async (db, schema, options = {}, refinements) => {
135538
135547
  const seedService = new SeedService();
135539
- const { tables, relations } = getPostgresInfo(schema);
135548
+ const { pgSchema, pgTables } = filterPgSchema(schema);
135549
+ const { tables, relations } = getPostgresInfo(pgSchema, pgTables);
135540
135550
  const generatedTablesGenerators = seedService.generatePossibleGenerators('postgresql', tables, relations, refinements, options);
135541
135551
  const preserveCyclicTablesData = relations.some((rel) => rel.isCyclic === true);
135542
- const tablesValues = await seedService.generateTablesValues(relations, generatedTablesGenerators, db, schema, { ...options, preserveCyclicTablesData });
135552
+ const tablesValues = await seedService.generateTablesValues(relations, generatedTablesGenerators, db, pgTables, { ...options, preserveCyclicTablesData });
135543
135553
  const { filteredTablesGenerators, tablesUniqueNotNullColumn } = seedService.filterCyclicTables(generatedTablesGenerators);
135544
135554
  const updateDataInDb = filteredTablesGenerators.length === 0 ? false : true;
135545
- await seedService.generateTablesValues(relations, filteredTablesGenerators, db, schema, { ...options, tablesValues, updateDataInDb, tablesUniqueNotNullColumn });
135555
+ await seedService.generateTablesValues(relations, filteredTablesGenerators, db, pgTables, { ...options, tablesValues, updateDataInDb, tablesUniqueNotNullColumn });
135546
135556
  };
135547
- const getPostgresInfo = (schema) => {
135557
+ const getPostgresInfo = (pgSchema, pgTables) => {
135548
135558
  let tableConfig;
135549
135559
  let dbToTsColumnNamesMap;
135550
- const dbToTsTableNamesMap = Object.fromEntries(Object.entries(schema).map(([key, value]) => [drizzleOrm.getTableName(value), key]));
135560
+ const dbToTsTableNamesMap = Object.fromEntries(Object.entries(pgTables).map(([key, value]) => [drizzleOrm.getTableName(value), key]));
135551
135561
  const tables = [];
135552
135562
  const relations = [];
135553
135563
  const dbToTsColumnNamesMapGlobal = {};
@@ -135566,7 +135576,48 @@ const getPostgresInfo = (schema) => {
135566
135576
  dbToTsColumnNamesMapGlobal[tableName] = dbToTsColumnNamesMap;
135567
135577
  return dbToTsColumnNamesMap;
135568
135578
  };
135569
- for (const table of Object.values(schema)) {
135579
+ const transformFromDrizzleRelation = (schema, getDbToTsColumnNamesMap, tableRelations) => {
135580
+ const schemaConfig = drizzleOrm.extractTablesRelationalConfig(schema, drizzleOrm.createTableRelationsHelpers);
135581
+ const relations = [];
135582
+ for (const table of Object.values(schemaConfig.tables)) {
135583
+ if (table.relations !== undefined) {
135584
+ for (const drizzleRel of Object.values(table.relations)) {
135585
+ if (drizzleOrm.is(drizzleRel, drizzleOrm.One)) {
135586
+ const tableConfig = pgCore.getTableConfig(drizzleRel.sourceTable);
135587
+ const tableDbSchema = tableConfig.schema ?? 'public';
135588
+ const tableDbName = tableConfig.name;
135589
+ const tableTsName = schemaConfig.tableNamesMap[`${tableDbSchema}.${tableDbName}`] ?? tableDbName;
135590
+ const dbToTsColumnNamesMap = getDbToTsColumnNamesMap(drizzleRel.sourceTable);
135591
+ const columns = drizzleRel.config?.fields.map((field) => dbToTsColumnNamesMap[field.name])
135592
+ ?? [];
135593
+ const refTableConfig = pgCore.getTableConfig(drizzleRel.referencedTable);
135594
+ const refTableDbSchema = refTableConfig.schema ?? 'public';
135595
+ const refTableDbName = refTableConfig.name;
135596
+ const refTableTsName = schemaConfig.tableNamesMap[`${refTableDbSchema}.${refTableDbName}`]
135597
+ ?? refTableDbName;
135598
+ const dbToTsColumnNamesMapForRefTable = getDbToTsColumnNamesMap(drizzleRel.referencedTable);
135599
+ const refColumns = drizzleRel.config?.references.map((ref) => dbToTsColumnNamesMapForRefTable[ref.name])
135600
+ ?? [];
135601
+ if (tableRelations[refTableTsName] === undefined) {
135602
+ tableRelations[refTableTsName] = [];
135603
+ }
135604
+ const relation = {
135605
+ table: tableTsName,
135606
+ columns,
135607
+ refTable: refTableTsName,
135608
+ refColumns,
135609
+ refTableRels: tableRelations[refTableTsName],
135610
+ type: 'one',
135611
+ };
135612
+ relations.push(relation);
135613
+ tableRelations[tableTsName].push(relation);
135614
+ }
135615
+ }
135616
+ }
135617
+ }
135618
+ return relations;
135619
+ };
135620
+ for (const table of Object.values(pgTables)) {
135570
135621
  tableConfig = pgCore.getTableConfig(table);
135571
135622
  dbToTsColumnNamesMap = {};
135572
135623
  for (const [tsCol, col] of Object.entries(tableConfig.columns[0].table)) {
@@ -135673,6 +135724,8 @@ const getPostgresInfo = (schema) => {
135673
135724
  .map((column) => dbToTsColumnNamesMap[column.name]),
135674
135725
  });
135675
135726
  }
135727
+ const transformedDrizzleRelations = transformFromDrizzleRelation(pgSchema, getDbToTsColumnNamesMap, tableRelations);
135728
+ relations.push(...transformedDrizzleRelations);
135676
135729
  const isCyclicRelations = relations.map((relI) => {
135677
135730
  // if (relations.some((relj) => relI.table === relj.refTable && relI.refTable === relj.table)) {
135678
135731
  const tableRel = tableRelations[relI.table].find((relJ) => relJ.refTable === relI.refTable);
@@ -135727,24 +135780,26 @@ const resetMySql = async (db, schema) => {
135727
135780
  }
135728
135781
  await db.execute(drizzleOrm.sql.raw('SET FOREIGN_KEY_CHECKS = 1;'));
135729
135782
  };
135730
- const filterMySqlTables = (schema) => {
135731
- const mySqlSchema = Object.fromEntries(Object.entries(schema).filter((keyValue) => drizzleOrm.is(keyValue[1], mysqlCore.MySqlTable)));
135732
- return { mySqlSchema };
135783
+ const filterMysqlTables = (schema) => {
135784
+ const mysqlSchema = Object.fromEntries(Object.entries(schema).filter((keyValue) => drizzleOrm.is(keyValue[1], mysqlCore.MySqlTable) || drizzleOrm.is(keyValue[1], drizzleOrm.Relations)));
135785
+ const mysqlTables = Object.fromEntries(Object.entries(schema).filter((keyValue) => drizzleOrm.is(keyValue[1], mysqlCore.MySqlTable)));
135786
+ return { mysqlSchema, mysqlTables };
135733
135787
  };
135734
135788
  const seedMySql = async (db, schema, options = {}, refinements) => {
135735
- const { tables, relations } = getMySqlInfo(schema);
135789
+ const { mysqlSchema, mysqlTables } = filterMysqlTables(schema);
135790
+ const { tables, relations } = getMySqlInfo(mysqlSchema, mysqlTables);
135736
135791
  const seedService = new SeedService();
135737
135792
  const generatedTablesGenerators = seedService.generatePossibleGenerators('mysql', tables, relations, refinements, options);
135738
135793
  const preserveCyclicTablesData = relations.some((rel) => rel.isCyclic === true);
135739
- const tablesValues = await seedService.generateTablesValues(relations, generatedTablesGenerators, db, schema, { ...options, preserveCyclicTablesData });
135794
+ const tablesValues = await seedService.generateTablesValues(relations, generatedTablesGenerators, db, mysqlTables, { ...options, preserveCyclicTablesData });
135740
135795
  const { filteredTablesGenerators, tablesUniqueNotNullColumn } = seedService.filterCyclicTables(generatedTablesGenerators);
135741
135796
  const updateDataInDb = filteredTablesGenerators.length === 0 ? false : true;
135742
- await seedService.generateTablesValues(relations, filteredTablesGenerators, db, schema, { ...options, tablesValues, updateDataInDb, tablesUniqueNotNullColumn });
135797
+ await seedService.generateTablesValues(relations, filteredTablesGenerators, db, mysqlTables, { ...options, tablesValues, updateDataInDb, tablesUniqueNotNullColumn });
135743
135798
  };
135744
- const getMySqlInfo = (schema) => {
135799
+ const getMySqlInfo = (mysqlSchema, mysqlTables) => {
135745
135800
  let tableConfig;
135746
135801
  let dbToTsColumnNamesMap;
135747
- const dbToTsTableNamesMap = Object.fromEntries(Object.entries(schema).map(([key, value]) => [drizzleOrm.getTableName(value), key]));
135802
+ const dbToTsTableNamesMap = Object.fromEntries(Object.entries(mysqlTables).map(([key, value]) => [drizzleOrm.getTableName(value), key]));
135748
135803
  const tables = [];
135749
135804
  const relations = [];
135750
135805
  const dbToTsColumnNamesMapGlobal = {};
@@ -135763,7 +135818,48 @@ const getMySqlInfo = (schema) => {
135763
135818
  dbToTsColumnNamesMapGlobal[tableName] = dbToTsColumnNamesMap;
135764
135819
  return dbToTsColumnNamesMap;
135765
135820
  };
135766
- for (const table of Object.values(schema)) {
135821
+ const transformFromDrizzleRelation = (schema, getDbToTsColumnNamesMap, tableRelations) => {
135822
+ const schemaConfig = drizzleOrm.extractTablesRelationalConfig(schema, drizzleOrm.createTableRelationsHelpers);
135823
+ const relations = [];
135824
+ for (const table of Object.values(schemaConfig.tables)) {
135825
+ if (table.relations !== undefined) {
135826
+ for (const drizzleRel of Object.values(table.relations)) {
135827
+ if (drizzleOrm.is(drizzleRel, drizzleOrm.One)) {
135828
+ const tableConfig = mysqlCore.getTableConfig(drizzleRel.sourceTable);
135829
+ const tableDbSchema = tableConfig.schema ?? 'public';
135830
+ const tableDbName = tableConfig.name;
135831
+ const tableTsName = schemaConfig.tableNamesMap[`${tableDbSchema}.${tableDbName}`] ?? tableDbName;
135832
+ const dbToTsColumnNamesMap = getDbToTsColumnNamesMap(drizzleRel.sourceTable);
135833
+ const columns = drizzleRel.config?.fields.map((field) => dbToTsColumnNamesMap[field.name])
135834
+ ?? [];
135835
+ const refTableConfig = mysqlCore.getTableConfig(drizzleRel.referencedTable);
135836
+ const refTableDbSchema = refTableConfig.schema ?? 'public';
135837
+ const refTableDbName = refTableConfig.name;
135838
+ const refTableTsName = schemaConfig.tableNamesMap[`${refTableDbSchema}.${refTableDbName}`]
135839
+ ?? refTableDbName;
135840
+ const dbToTsColumnNamesMapForRefTable = getDbToTsColumnNamesMap(drizzleRel.referencedTable);
135841
+ const refColumns = drizzleRel.config?.references.map((ref) => dbToTsColumnNamesMapForRefTable[ref.name])
135842
+ ?? [];
135843
+ if (tableRelations[refTableTsName] === undefined) {
135844
+ tableRelations[refTableTsName] = [];
135845
+ }
135846
+ const relation = {
135847
+ table: tableTsName,
135848
+ columns,
135849
+ refTable: refTableTsName,
135850
+ refColumns,
135851
+ refTableRels: tableRelations[refTableTsName],
135852
+ type: 'one',
135853
+ };
135854
+ relations.push(relation);
135855
+ tableRelations[tableTsName].push(relation);
135856
+ }
135857
+ }
135858
+ }
135859
+ }
135860
+ return relations;
135861
+ };
135862
+ for (const table of Object.values(mysqlTables)) {
135767
135863
  tableConfig = mysqlCore.getTableConfig(table);
135768
135864
  dbToTsColumnNamesMap = {};
135769
135865
  for (const [tsCol, col] of Object.entries(tableConfig.columns[0].table)) {
@@ -135836,6 +135932,8 @@ const getMySqlInfo = (schema) => {
135836
135932
  .map((column) => dbToTsColumnNamesMap[column.name]),
135837
135933
  });
135838
135934
  }
135935
+ const transformedDrizzleRelations = transformFromDrizzleRelation(mysqlSchema, getDbToTsColumnNamesMap, tableRelations);
135936
+ relations.push(...transformedDrizzleRelations);
135839
135937
  const isCyclicRelations = relations.map((relI) => {
135840
135938
  const tableRel = tableRelations[relI.table].find((relJ) => relJ.refTable === relI.refTable);
135841
135939
  if (isRelationCyclic(relI)) {
@@ -135861,23 +135959,25 @@ const resetSqlite = async (db, schema) => {
135861
135959
  await db.run(drizzleOrm.sql.raw('PRAGMA foreign_keys = ON'));
135862
135960
  };
135863
135961
  const filterSqliteTables = (schema) => {
135864
- const sqliteSchema = Object.fromEntries(Object.entries(schema).filter((keyValue) => drizzleOrm.is(keyValue[1], sqliteCore.SQLiteTable)));
135865
- return { sqliteSchema };
135962
+ const sqliteSchema = Object.fromEntries(Object.entries(schema).filter((keyValue) => drizzleOrm.is(keyValue[1], sqliteCore.SQLiteTable) || drizzleOrm.is(keyValue[1], drizzleOrm.Relations)));
135963
+ const sqliteTables = Object.fromEntries(Object.entries(schema).filter((keyValue) => drizzleOrm.is(keyValue[1], sqliteCore.SQLiteTable)));
135964
+ return { sqliteSchema, sqliteTables };
135866
135965
  };
135867
135966
  const seedSqlite = async (db, schema, options = {}, refinements) => {
135868
- const { tables, relations } = getSqliteInfo(schema);
135967
+ const { sqliteSchema, sqliteTables } = filterSqliteTables(schema);
135968
+ const { tables, relations } = getSqliteInfo(sqliteSchema, sqliteTables);
135869
135969
  const seedService = new SeedService();
135870
135970
  const generatedTablesGenerators = seedService.generatePossibleGenerators('sqlite', tables, relations, refinements, options);
135871
135971
  const preserveCyclicTablesData = relations.some((rel) => rel.isCyclic === true);
135872
- const tablesValues = await seedService.generateTablesValues(relations, generatedTablesGenerators, db, schema, { ...options, preserveCyclicTablesData });
135972
+ const tablesValues = await seedService.generateTablesValues(relations, generatedTablesGenerators, db, sqliteTables, { ...options, preserveCyclicTablesData });
135873
135973
  const { filteredTablesGenerators, tablesUniqueNotNullColumn } = seedService.filterCyclicTables(generatedTablesGenerators);
135874
135974
  const updateDataInDb = filteredTablesGenerators.length === 0 ? false : true;
135875
- await seedService.generateTablesValues(relations, filteredTablesGenerators, db, schema, { ...options, tablesValues, updateDataInDb, tablesUniqueNotNullColumn });
135975
+ await seedService.generateTablesValues(relations, filteredTablesGenerators, db, sqliteTables, { ...options, tablesValues, updateDataInDb, tablesUniqueNotNullColumn });
135876
135976
  };
135877
- const getSqliteInfo = (schema) => {
135977
+ const getSqliteInfo = (sqliteSchema, sqliteTables) => {
135878
135978
  let tableConfig;
135879
135979
  let dbToTsColumnNamesMap;
135880
- const dbToTsTableNamesMap = Object.fromEntries(Object.entries(schema).map(([key, value]) => [drizzleOrm.getTableName(value), key]));
135980
+ const dbToTsTableNamesMap = Object.fromEntries(Object.entries(sqliteTables).map(([key, value]) => [drizzleOrm.getTableName(value), key]));
135881
135981
  const tables = [];
135882
135982
  const relations = [];
135883
135983
  const dbToTsColumnNamesMapGlobal = {};
@@ -135896,7 +135996,47 @@ const getSqliteInfo = (schema) => {
135896
135996
  dbToTsColumnNamesMapGlobal[tableName] = dbToTsColumnNamesMap;
135897
135997
  return dbToTsColumnNamesMap;
135898
135998
  };
135899
- for (const table of Object.values(schema)) {
135999
+ const transformFromDrizzleRelation = (schema, getDbToTsColumnNamesMap, tableRelations) => {
136000
+ const schemaConfig = drizzleOrm.extractTablesRelationalConfig(schema, drizzleOrm.createTableRelationsHelpers);
136001
+ const relations = [];
136002
+ for (const table of Object.values(schemaConfig.tables)) {
136003
+ if (table.relations !== undefined) {
136004
+ for (const drizzleRel of Object.values(table.relations)) {
136005
+ if (drizzleOrm.is(drizzleRel, drizzleOrm.One)) {
136006
+ const tableConfig = sqliteCore.getTableConfig(drizzleRel.sourceTable);
136007
+ const tableDbName = tableConfig.name;
136008
+ // TODO: tableNamesMap: have {public.customer: 'customer'} structure in sqlite
136009
+ const tableTsName = schemaConfig.tableNamesMap[`public.${tableDbName}`] ?? tableDbName;
136010
+ const dbToTsColumnNamesMap = getDbToTsColumnNamesMap(drizzleRel.sourceTable);
136011
+ const columns = drizzleRel.config?.fields.map((field) => dbToTsColumnNamesMap[field.name])
136012
+ ?? [];
136013
+ const refTableConfig = sqliteCore.getTableConfig(drizzleRel.referencedTable);
136014
+ const refTableDbName = refTableConfig.name;
136015
+ const refTableTsName = schemaConfig.tableNamesMap[`public.${refTableDbName}`]
136016
+ ?? refTableDbName;
136017
+ const dbToTsColumnNamesMapForRefTable = getDbToTsColumnNamesMap(drizzleRel.referencedTable);
136018
+ const refColumns = drizzleRel.config?.references.map((ref) => dbToTsColumnNamesMapForRefTable[ref.name])
136019
+ ?? [];
136020
+ if (tableRelations[refTableTsName] === undefined) {
136021
+ tableRelations[refTableTsName] = [];
136022
+ }
136023
+ const relation = {
136024
+ table: tableTsName,
136025
+ columns,
136026
+ refTable: refTableTsName,
136027
+ refColumns,
136028
+ refTableRels: tableRelations[refTableTsName],
136029
+ type: 'one',
136030
+ };
136031
+ relations.push(relation);
136032
+ tableRelations[tableTsName].push(relation);
136033
+ }
136034
+ }
136035
+ }
136036
+ }
136037
+ return relations;
136038
+ };
136039
+ for (const table of Object.values(sqliteTables)) {
135900
136040
  tableConfig = sqliteCore.getTableConfig(table);
135901
136041
  dbToTsColumnNamesMap = {};
135902
136042
  for (const [tsCol, col] of Object.entries(tableConfig.columns[0].table)) {
@@ -135965,6 +136105,8 @@ const getSqliteInfo = (schema) => {
135965
136105
  .map((column) => dbToTsColumnNamesMap[column.name]),
135966
136106
  });
135967
136107
  }
136108
+ const transformedDrizzleRelations = transformFromDrizzleRelation(sqliteSchema, getDbToTsColumnNamesMap, tableRelations);
136109
+ relations.push(...transformedDrizzleRelations);
135968
136110
  const isCyclicRelations = relations.map((relI) => {
135969
136111
  const tableRel = tableRelations[relI.table].find((relJ) => relJ.refTable === relI.refTable);
135970
136112
  if (isRelationCyclic(relI)) {