drizzle-seed 0.3.0 → 0.3.1-00df263

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
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var drizzleOrm = require('drizzle-orm');
4
+ var _relations = require('drizzle-orm/_relations');
4
5
  var mysqlCore = require('drizzle-orm/mysql-core');
5
6
  var pgCore = require('drizzle-orm/pg-core');
6
7
  var sqliteCore = require('drizzle-orm/sqlite-core');
@@ -134483,7 +134484,7 @@ class SeedService {
134483
134484
  orderedTablesNames.push(parent);
134484
134485
  }
134485
134486
  else {
134486
- leafTablesNames.push(parent);
134487
+ leafTablesNames.push(...tablesInOutRelations[parent].requiredTableNames, parent);
134487
134488
  continue;
134488
134489
  }
134489
134490
  children = [...tablesInOutRelations[parent].dependantTableNames];
@@ -135214,7 +135215,7 @@ class SeedService {
135214
135215
  maxParametersNumber = this.mysqlMaxParametersNumber;
135215
135216
  }
135216
135217
  else {
135217
- // is(db, BaseSQLiteDatabase<any, any>)
135218
+ // is(db, BaseSQLiteDatabase<any, any, any, any, any ,any>)
135218
135219
  maxParametersNumber = this.sqliteMaxParametersNumber;
135219
135220
  }
135220
135221
  const maxBatchSize = Math.floor(maxParametersNumber / columnsNumber);
@@ -135539,7 +135540,7 @@ const resetPostgres = async (db, pgTables) => {
135539
135540
  await db.execute(drizzleOrm.sql.raw(`truncate ${tablesToTruncate.join(',')} cascade;`));
135540
135541
  };
135541
135542
  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 pgSchema = Object.fromEntries(Object.entries(schema).filter((keyValue) => drizzleOrm.is(keyValue[1], pgCore.PgTable) || drizzleOrm.is(keyValue[1], _relations.Relations)));
135543
135544
  const pgTables = Object.fromEntries(Object.entries(schema).filter((keyValue) => drizzleOrm.is(keyValue[1], pgCore.PgTable)));
135544
135545
  return { pgSchema, pgTables };
135545
135546
  };
@@ -135577,42 +135578,50 @@ const getPostgresInfo = (pgSchema, pgTables) => {
135577
135578
  return dbToTsColumnNamesMap;
135578
135579
  };
135579
135580
  const transformFromDrizzleRelation = (schema, getDbToTsColumnNamesMap, tableRelations) => {
135580
- const schemaConfig = drizzleOrm.extractTablesRelationalConfig(schema, drizzleOrm.createTableRelationsHelpers);
135581
+ const schemaConfig = _relations.extractTablesRelationalConfig(schema, _relations.createTableRelationsHelpers);
135581
135582
  const relations = [];
135582
135583
  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
- }
135584
+ if (table.relations === undefined)
135585
+ continue;
135586
+ for (const drizzleRel of Object.values(table.relations)) {
135587
+ if (!drizzleOrm.is(drizzleRel, _relations.One))
135588
+ continue;
135589
+ const tableConfig = pgCore.getTableConfig(drizzleRel.sourceTable);
135590
+ const tableDbSchema = tableConfig.schema ?? 'public';
135591
+ const tableDbName = tableConfig.name;
135592
+ const tableTsName = schemaConfig.tableNamesMap[`${tableDbSchema}.${tableDbName}`] ?? tableDbName;
135593
+ const dbToTsColumnNamesMap = getDbToTsColumnNamesMap(drizzleRel.sourceTable);
135594
+ const columns = drizzleRel.config?.fields.map((field) => dbToTsColumnNamesMap[field.name])
135595
+ ?? [];
135596
+ const refTableConfig = pgCore.getTableConfig(drizzleRel.referencedTable);
135597
+ const refTableDbSchema = refTableConfig.schema ?? 'public';
135598
+ const refTableDbName = refTableConfig.name;
135599
+ const refTableTsName = schemaConfig.tableNamesMap[`${refTableDbSchema}.${refTableDbName}`]
135600
+ ?? refTableDbName;
135601
+ const dbToTsColumnNamesMapForRefTable = getDbToTsColumnNamesMap(drizzleRel.referencedTable);
135602
+ const refColumns = drizzleRel.config?.references.map((ref) => dbToTsColumnNamesMapForRefTable[ref.name])
135603
+ ?? [];
135604
+ if (tableRelations[refTableTsName] === undefined) {
135605
+ tableRelations[refTableTsName] = [];
135606
+ }
135607
+ const relation = {
135608
+ table: tableTsName,
135609
+ columns,
135610
+ refTable: refTableTsName,
135611
+ refColumns,
135612
+ refTableRels: tableRelations[refTableTsName],
135613
+ type: 'one',
135614
+ };
135615
+ // do not add duplicate relation
135616
+ if (tableRelations[tableTsName]?.some((rel) => rel.table === relation.table
135617
+ && rel.refTable === relation.refTable)) {
135618
+ console.warn(`You are providing a one-to-many relation between the '${relation.refTable}' and '${relation.table}' tables,\n`
135619
+ + `while the '${relation.table}' table object already has foreign key constraint in the schema referencing '${relation.refTable}' table.\n`
135620
+ + `In this case, the foreign key constraint will be used.\n`);
135621
+ continue;
135615
135622
  }
135623
+ relations.push(relation);
135624
+ tableRelations[tableTsName].push(relation);
135616
135625
  }
135617
135626
  }
135618
135627
  return relations;
@@ -135781,7 +135790,7 @@ const resetMySql = async (db, schema) => {
135781
135790
  await db.execute(drizzleOrm.sql.raw('SET FOREIGN_KEY_CHECKS = 1;'));
135782
135791
  };
135783
135792
  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)));
135793
+ const mysqlSchema = Object.fromEntries(Object.entries(schema).filter((keyValue) => drizzleOrm.is(keyValue[1], mysqlCore.MySqlTable) || drizzleOrm.is(keyValue[1], _relations.Relations)));
135785
135794
  const mysqlTables = Object.fromEntries(Object.entries(schema).filter((keyValue) => drizzleOrm.is(keyValue[1], mysqlCore.MySqlTable)));
135786
135795
  return { mysqlSchema, mysqlTables };
135787
135796
  };
@@ -135819,42 +135828,50 @@ const getMySqlInfo = (mysqlSchema, mysqlTables) => {
135819
135828
  return dbToTsColumnNamesMap;
135820
135829
  };
135821
135830
  const transformFromDrizzleRelation = (schema, getDbToTsColumnNamesMap, tableRelations) => {
135822
- const schemaConfig = drizzleOrm.extractTablesRelationalConfig(schema, drizzleOrm.createTableRelationsHelpers);
135831
+ const schemaConfig = _relations.extractTablesRelationalConfig(schema, _relations.createTableRelationsHelpers);
135823
135832
  const relations = [];
135824
135833
  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
- }
135834
+ if (table.relations === undefined)
135835
+ continue;
135836
+ for (const drizzleRel of Object.values(table.relations)) {
135837
+ if (!drizzleOrm.is(drizzleRel, _relations.One))
135838
+ continue;
135839
+ const tableConfig = mysqlCore.getTableConfig(drizzleRel.sourceTable);
135840
+ const tableDbSchema = tableConfig.schema ?? 'public';
135841
+ const tableDbName = tableConfig.name;
135842
+ const tableTsName = schemaConfig.tableNamesMap[`${tableDbSchema}.${tableDbName}`] ?? tableDbName;
135843
+ const dbToTsColumnNamesMap = getDbToTsColumnNamesMap(drizzleRel.sourceTable);
135844
+ const columns = drizzleRel.config?.fields.map((field) => dbToTsColumnNamesMap[field.name])
135845
+ ?? [];
135846
+ const refTableConfig = mysqlCore.getTableConfig(drizzleRel.referencedTable);
135847
+ const refTableDbSchema = refTableConfig.schema ?? 'public';
135848
+ const refTableDbName = refTableConfig.name;
135849
+ const refTableTsName = schemaConfig.tableNamesMap[`${refTableDbSchema}.${refTableDbName}`]
135850
+ ?? refTableDbName;
135851
+ const dbToTsColumnNamesMapForRefTable = getDbToTsColumnNamesMap(drizzleRel.referencedTable);
135852
+ const refColumns = drizzleRel.config?.references.map((ref) => dbToTsColumnNamesMapForRefTable[ref.name])
135853
+ ?? [];
135854
+ if (tableRelations[refTableTsName] === undefined) {
135855
+ tableRelations[refTableTsName] = [];
135856
+ }
135857
+ const relation = {
135858
+ table: tableTsName,
135859
+ columns,
135860
+ refTable: refTableTsName,
135861
+ refColumns,
135862
+ refTableRels: tableRelations[refTableTsName],
135863
+ type: 'one',
135864
+ };
135865
+ // do not add duplicate relation
135866
+ if (tableRelations[tableTsName]?.some((rel) => rel.table === relation.table
135867
+ && rel.refTable === relation.refTable)) {
135868
+ console.warn(`You are providing a one-to-many relation between the '${relation.refTable}' and '${relation.table}' tables,\n`
135869
+ + `while the '${relation.table}' table object already has foreign key constraint in the schema referencing '${relation.refTable}' table.\n`
135870
+ + `In this case, the foreign key constraint will be used.\n`);
135871
+ continue;
135857
135872
  }
135873
+ relations.push(relation);
135874
+ tableRelations[tableTsName].push(relation);
135858
135875
  }
135859
135876
  }
135860
135877
  return relations;
@@ -135959,7 +135976,7 @@ const resetSqlite = async (db, schema) => {
135959
135976
  await db.run(drizzleOrm.sql.raw('PRAGMA foreign_keys = ON'));
135960
135977
  };
135961
135978
  const filterSqliteTables = (schema) => {
135962
- const sqliteSchema = Object.fromEntries(Object.entries(schema).filter((keyValue) => drizzleOrm.is(keyValue[1], sqliteCore.SQLiteTable) || drizzleOrm.is(keyValue[1], drizzleOrm.Relations)));
135979
+ const sqliteSchema = Object.fromEntries(Object.entries(schema).filter((keyValue) => drizzleOrm.is(keyValue[1], sqliteCore.SQLiteTable) || drizzleOrm.is(keyValue[1], _relations.Relations)));
135963
135980
  const sqliteTables = Object.fromEntries(Object.entries(schema).filter((keyValue) => drizzleOrm.is(keyValue[1], sqliteCore.SQLiteTable)));
135964
135981
  return { sqliteSchema, sqliteTables };
135965
135982
  };
@@ -135997,41 +136014,49 @@ const getSqliteInfo = (sqliteSchema, sqliteTables) => {
135997
136014
  return dbToTsColumnNamesMap;
135998
136015
  };
135999
136016
  const transformFromDrizzleRelation = (schema, getDbToTsColumnNamesMap, tableRelations) => {
136000
- const schemaConfig = drizzleOrm.extractTablesRelationalConfig(schema, drizzleOrm.createTableRelationsHelpers);
136017
+ const schemaConfig = _relations.extractTablesRelationalConfig(schema, _relations.createTableRelationsHelpers);
136001
136018
  const relations = [];
136002
136019
  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
- }
136020
+ if (table.relations === undefined)
136021
+ continue;
136022
+ for (const drizzleRel of Object.values(table.relations)) {
136023
+ if (!drizzleOrm.is(drizzleRel, _relations.One))
136024
+ continue;
136025
+ const tableConfig = sqliteCore.getTableConfig(drizzleRel.sourceTable);
136026
+ const tableDbName = tableConfig.name;
136027
+ // TODO: tableNamesMap: have {public.customer: 'customer'} structure in sqlite
136028
+ const tableTsName = schemaConfig.tableNamesMap[`public.${tableDbName}`] ?? tableDbName;
136029
+ const dbToTsColumnNamesMap = getDbToTsColumnNamesMap(drizzleRel.sourceTable);
136030
+ const columns = drizzleRel.config?.fields.map((field) => dbToTsColumnNamesMap[field.name])
136031
+ ?? [];
136032
+ const refTableConfig = sqliteCore.getTableConfig(drizzleRel.referencedTable);
136033
+ const refTableDbName = refTableConfig.name;
136034
+ const refTableTsName = schemaConfig.tableNamesMap[`public.${refTableDbName}`]
136035
+ ?? refTableDbName;
136036
+ const dbToTsColumnNamesMapForRefTable = getDbToTsColumnNamesMap(drizzleRel.referencedTable);
136037
+ const refColumns = drizzleRel.config?.references.map((ref) => dbToTsColumnNamesMapForRefTable[ref.name])
136038
+ ?? [];
136039
+ if (tableRelations[refTableTsName] === undefined) {
136040
+ tableRelations[refTableTsName] = [];
136041
+ }
136042
+ const relation = {
136043
+ table: tableTsName,
136044
+ columns,
136045
+ refTable: refTableTsName,
136046
+ refColumns,
136047
+ refTableRels: tableRelations[refTableTsName],
136048
+ type: 'one',
136049
+ };
136050
+ // do not add duplicate relation
136051
+ if (tableRelations[tableTsName]?.some((rel) => rel.table === relation.table
136052
+ && rel.refTable === relation.refTable)) {
136053
+ console.warn(`You are providing a one-to-many relation between the '${relation.refTable}' and '${relation.table}' tables,\n`
136054
+ + `while the '${relation.table}' table object already has foreign key constraint in the schema referencing '${relation.refTable}' table.\n`
136055
+ + `In this case, the foreign key constraint will be used.\n`);
136056
+ continue;
136034
136057
  }
136058
+ relations.push(relation);
136059
+ tableRelations[tableTsName].push(relation);
136035
136060
  }
136036
136061
  }
136037
136062
  return relations;