orchid-orm 1.63.5 → 1.64.1

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.
@@ -198,12 +198,12 @@ const renameSchemaInStructures = (items, from, to) => {
198
198
  }
199
199
  };
200
200
 
201
- const processExtensions = (config, ast, dbStructure, {
201
+ const processExtensions = (ast, dbStructure, {
202
202
  currentSchema,
203
203
  internal: { extensions, generatorIgnore }
204
204
  }) => {
205
205
  const codeExtensions = extensions?.map((ext) => {
206
- const [schema, name] = rakeDb.getSchemaAndTableFromName(config, ext.name);
206
+ const [schema, name] = rakeDb.getSchemaAndTableFromName(currentSchema, ext.name);
207
207
  return { schema, name, version: ext.version };
208
208
  });
209
209
  for (const dbExt of dbStructure.extensions) {
@@ -401,7 +401,6 @@ const changeColumns = async (adapter, config, structureToAstCtx, dbStructure, do
401
401
  dbColumnStructure
402
402
  );
403
403
  const action = await compareColumns(
404
- config,
405
404
  adapter,
406
405
  domainsMap,
407
406
  ast,
@@ -439,13 +438,13 @@ const changeColumns = async (adapter, config, structureToAstCtx, dbStructure, do
439
438
  }
440
439
  }
441
440
  };
442
- const compareColumns = async (config, adapter, domainsMap, ast, currentSchema, compareSql, changeTableData, typeCastsCache, verifying, key, dbName, dbColumn, codeColumn) => {
441
+ const compareColumns = async (adapter, domainsMap, ast, currentSchema, compareSql, changeTableData, typeCastsCache, verifying, key, dbName, dbColumn, codeColumn) => {
443
442
  if (dbColumn instanceof pqb.ArrayColumn && codeColumn instanceof pqb.ArrayColumn) {
444
443
  dbColumn = dbColumn.data.item;
445
444
  codeColumn = codeColumn.data.item;
446
445
  }
447
- const dbType = getColumnDbType(config, dbColumn, currentSchema);
448
- const codeType = getColumnDbType(config, codeColumn, currentSchema);
446
+ const dbType = getColumnDbType(dbColumn, currentSchema);
447
+ const codeType = getColumnDbType(codeColumn, currentSchema);
449
448
  if (dbType !== codeType) {
450
449
  const typeCasts = await getTypeCasts(adapter, typeCastsCache);
451
450
  const dbBaseType = pqb.getColumnBaseType(dbColumn, domainsMap, dbType);
@@ -603,10 +602,10 @@ const changeColumn = (changeTableData, key, dbName, dbColumn, codeColumn) => {
603
602
  to: { column: simpleCodeColumn }
604
603
  };
605
604
  };
606
- const getColumnDbType = (config, column, currentSchema) => {
605
+ const getColumnDbType = (column, currentSchema) => {
607
606
  if (column instanceof pqb.EnumColumn) {
608
607
  const [schema = currentSchema, name] = rakeDb.getSchemaAndTableFromName(
609
- config,
608
+ currentSchema,
610
609
  column.enumName
611
610
  );
612
611
  return `${schema}.${name}`;
@@ -634,7 +633,7 @@ const renameColumn = (columns, from, to) => {
634
633
  }
635
634
  };
636
635
 
637
- const processDomains = async (config, ast, adapter, domainsMap, dbStructure, {
636
+ const processDomains = async (ast, adapter, domainsMap, dbStructure, {
638
637
  codeItems: { domains },
639
638
  structureToAstCtx,
640
639
  currentSchema,
@@ -644,7 +643,7 @@ const processDomains = async (config, ast, adapter, domainsMap, dbStructure, {
644
643
  if (domains) {
645
644
  for (const { schemaName, name, column } of domains) {
646
645
  codeDomains.push(
647
- makeComparableDomain(config, currentSchema, schemaName, name, column)
646
+ makeComparableDomain(currentSchema, schemaName, name, column)
648
647
  );
649
648
  }
650
649
  }
@@ -680,7 +679,6 @@ const processDomains = async (config, ast, adapter, domainsMap, dbStructure, {
680
679
  }));
681
680
  }
682
681
  const dbDomain = makeComparableDomain(
683
- config,
684
682
  currentSchema,
685
683
  domain.schemaName,
686
684
  domain.name,
@@ -697,7 +695,6 @@ const processDomains = async (config, ast, adapter, domainsMap, dbStructure, {
697
695
  pushCompareDefault(compare, domain, found);
698
696
  pushCompareChecks(compare, domain, found);
699
697
  const source = `(VALUES (NULL::${getColumnDbType(
700
- config,
701
698
  dbColumn,
702
699
  currentSchema
703
700
  )})) t(value)`;
@@ -751,7 +748,7 @@ const processDomains = async (config, ast, adapter, domainsMap, dbStructure, {
751
748
  }
752
749
  }
753
750
  };
754
- const makeComparableDomain = (config, currentSchema, schemaName, name, column) => {
751
+ const makeComparableDomain = (currentSchema, schemaName, name, column) => {
755
752
  let arrayDims = 0;
756
753
  const isNullable = column.data.isNullable ?? false;
757
754
  let inner = column;
@@ -759,9 +756,9 @@ const makeComparableDomain = (config, currentSchema, schemaName, name, column) =
759
756
  inner = inner.data.item;
760
757
  arrayDims++;
761
758
  }
762
- const fullType = getColumnDbType(config, inner, currentSchema);
759
+ const fullType = getColumnDbType(inner, currentSchema);
763
760
  const [typeSchema = "pg_catalog", type] = rakeDb.getSchemaAndTableFromName(
764
- config,
761
+ currentSchema,
765
762
  fullType
766
763
  );
767
764
  return {
@@ -1669,7 +1666,7 @@ const fnOrTableToString = (fnOrTable) => {
1669
1666
  };
1670
1667
  const parseForeignKey = (config, codeConstraint, references, currentSchema) => {
1671
1668
  const { fnOrTable, columns, foreignColumns, options } = references;
1672
- const [schema, table] = rakeDb.getSchemaAndTableFromName(config, fnOrTable);
1669
+ const [schema, table] = rakeDb.getSchemaAndTableFromName(currentSchema, fnOrTable);
1673
1670
  return {
1674
1671
  references: {
1675
1672
  foreignSchema: schema ?? currentSchema,
@@ -1855,6 +1852,7 @@ const processTables = async (ast, domainsMap, adapter, dbStructure, config, {
1855
1852
  const compareSql = { values: [], expressions: [] };
1856
1853
  const tableExpressions = [];
1857
1854
  const { changeTables, changeTableSchemas, dropTables, tableShapes } = collectChangeAndDropTables(
1855
+ adapter,
1858
1856
  config,
1859
1857
  tables,
1860
1858
  dbStructure,
@@ -1910,19 +1908,19 @@ const collectCreateTables = (tables, dbStructure, currentSchema) => {
1910
1908
  return acc;
1911
1909
  }, []);
1912
1910
  };
1913
- const collectChangeAndDropTables = (config, tables, dbStructure, currentSchema, createTables, generatorIgnore) => {
1911
+ const collectChangeAndDropTables = (adapter, config, tables, dbStructure, currentSchema, createTables, generatorIgnore) => {
1914
1912
  const changeTables = [];
1915
1913
  const changeTableSchemas = [];
1916
1914
  const dropTables = [];
1917
1915
  const tableShapes = {};
1918
1916
  const ignoreTables = generatorIgnore?.tables?.map((name) => {
1919
1917
  const [schema = currentSchema, table] = rakeDb.getSchemaAndTableFromName(
1920
- config,
1918
+ currentSchema,
1921
1919
  name
1922
1920
  );
1923
1921
  return { schema, table };
1924
1922
  });
1925
- const { schema: migrationsSchema = "public", table: migrationsTable } = rakeDb.getMigrationsSchemaAndTable(config);
1923
+ const { schema: migrationsSchema = "public", table: migrationsTable } = rakeDb.getMigrationsSchemaAndTable(adapter, config);
1926
1924
  for (const dbTable of dbStructure.tables) {
1927
1925
  if (dbTable.name === migrationsTable && dbTable.schemaName === migrationsSchema || generatorIgnore?.schemas?.includes(dbTable.schemaName) || ignoreTables?.some(
1928
1926
  ({ schema, table }) => table === dbTable.name && schema === dbTable.schemaName
@@ -2180,10 +2178,9 @@ const composeMigration = async (adapter, config, ast, dbStructure, params) => {
2180
2178
  const { structureToAstCtx, currentSchema } = params;
2181
2179
  const domainsMap = rakeDb.makeDomainsMap(structureToAstCtx, dbStructure);
2182
2180
  await processSchemas(ast, dbStructure, params);
2183
- processExtensions(config, ast, dbStructure, params);
2181
+ processExtensions(ast, dbStructure, params);
2184
2182
  const pendingDbTypes = new PendingDbTypes();
2185
2183
  await processDomains(
2186
- config,
2187
2184
  ast,
2188
2185
  adapter,
2189
2186
  domainsMap,
@@ -2209,7 +2206,7 @@ const verifyMigration = async (adapter, config, migrationCode, generateMigration
2209
2206
  const migrationFn = new Function("change", migrationCode);
2210
2207
  let code;
2211
2208
  try {
2212
- await adapter.transaction(void 0, async (trx) => {
2209
+ await adapter.transaction(async (trx) => {
2213
2210
  const changeFns = [];
2214
2211
  migrationFn((changeCb) => {
2215
2212
  changeFns.push(changeCb);
@@ -2326,7 +2323,7 @@ const report = (ast, config, currentSchema) => {
2326
2323
  const column = change.item;
2327
2324
  const { primaryKey, indexes, excludes, foreignKeys, checks } = column.data;
2328
2325
  inner.push(
2329
- `${change.type === "add" ? green("+ add column") : red("- drop column")} ${key} ${column.data.alias ?? getColumnDbType(config, column, currentSchema)}${column.data.isNullable ? " nullable" : ""}${primaryKey ? " primary key" : ""}${foreignKeys ? ` references ${foreignKeys.map((fk) => {
2326
+ `${change.type === "add" ? green("+ add column") : red("- drop column")} ${key} ${column.data.alias ?? getColumnDbType(column, currentSchema)}${column.data.isNullable ? " nullable" : ""}${primaryKey ? " primary key" : ""}${foreignKeys ? ` references ${foreignKeys.map((fk) => {
2330
2327
  return `${fnOrTableToString(
2331
2328
  fk.fnOrTable
2332
2329
  )}(${fk.foreignColumns.join(", ")})`;
@@ -2387,7 +2384,7 @@ const report = (ast, config, currentSchema) => {
2387
2384
  for (const { references } of a.drop.constraints) {
2388
2385
  if (!references) continue;
2389
2386
  const [schema, name] = rakeDb.getSchemaAndTableFromName(
2390
- config,
2387
+ currentSchema,
2391
2388
  references.fnOrTable
2392
2389
  );
2393
2390
  inner.push(
@@ -2543,6 +2540,10 @@ const report = (ast, config, currentSchema) => {
2543
2540
  );
2544
2541
  break;
2545
2542
  }
2543
+ case "role":
2544
+ case "changeRole": {
2545
+ break;
2546
+ }
2546
2547
  default:
2547
2548
  pqb.exhaustive(a);
2548
2549
  }
@@ -2578,11 +2579,11 @@ const generate = async (adapters, config, args, afterPull) => {
2578
2579
  afterPull
2579
2580
  );
2580
2581
  const [adapter] = adapters;
2581
- const currentSchema = (typeof config.schema === "function" ? config.schema() : config.schema) ?? "public";
2582
+ const adapterSchema = adapter.getSchema();
2583
+ const currentSchema = (typeof adapterSchema === "function" ? adapterSchema() : adapterSchema) ?? "public";
2582
2584
  const db = await getDbFromConfig(config, dbPath);
2583
2585
  const { columnTypes, internal } = db.$qb;
2584
2586
  const codeItems = await getActualItems(
2585
- config,
2586
2587
  db,
2587
2588
  currentSchema,
2588
2589
  internal,
@@ -2739,7 +2740,7 @@ const compareDbStructures = (a, b, i, path2) => {
2739
2740
  throw new Error(`${path2} in the db 0 does not match db ${i}`);
2740
2741
  }
2741
2742
  };
2742
- const getActualItems = async (config, db, currentSchema, internal, columnTypes) => {
2743
+ const getActualItems = async (db, currentSchema, internal, columnTypes) => {
2743
2744
  const tableNames = /* @__PURE__ */ new Set();
2744
2745
  const habtmTables = /* @__PURE__ */ new Map();
2745
2746
  const codeItems = {
@@ -2782,7 +2783,7 @@ const getActualItems = async (config, db, currentSchema, internal, columnTypes)
2782
2783
  delete table.shape[key2];
2783
2784
  } else if (column instanceof pqb.DomainColumn) {
2784
2785
  const [schemaName = currentSchema, name2] = rakeDb.getSchemaAndTableFromName(
2785
- config,
2786
+ currentSchema,
2786
2787
  column.dataType
2787
2788
  );
2788
2789
  domains.set(column.dataType, {
@@ -2793,21 +2794,21 @@ const getActualItems = async (config, db, currentSchema, internal, columnTypes)
2793
2794
  } else {
2794
2795
  const en = column.dataType === "enum" ? column : column instanceof pqb.ArrayColumn && column.data.item.dataType === "enum" ? column.data.item : void 0;
2795
2796
  if (en) {
2796
- processEnumColumn(config, en, currentSchema, codeItems);
2797
+ processEnumColumn(en, currentSchema, codeItems);
2797
2798
  }
2798
2799
  }
2799
2800
  }
2800
2801
  }
2801
2802
  if (internal.extensions) {
2802
2803
  for (const extension of internal.extensions) {
2803
- const [schema] = rakeDb.getSchemaAndTableFromName(config, extension.name);
2804
+ const [schema] = rakeDb.getSchemaAndTableFromName(currentSchema, extension.name);
2804
2805
  if (schema) codeItems.schemas.add(schema);
2805
2806
  }
2806
2807
  }
2807
2808
  if (internal.domains) {
2808
2809
  for (const key in internal.domains) {
2809
2810
  const [schemaName = currentSchema, name] = rakeDb.getSchemaAndTableFromName(
2810
- config,
2811
+ currentSchema,
2811
2812
  key
2812
2813
  );
2813
2814
  const column = internal.domains[key](columnTypes);
@@ -2824,9 +2825,9 @@ const getActualItems = async (config, db, currentSchema, internal, columnTypes)
2824
2825
  }
2825
2826
  return codeItems;
2826
2827
  };
2827
- const processEnumColumn = (config, column, currentSchema, codeItems) => {
2828
+ const processEnumColumn = (column, currentSchema, codeItems) => {
2828
2829
  const { enumName, options } = column;
2829
- const [schema, name] = rakeDb.getSchemaAndTableFromName(config, enumName);
2830
+ const [schema, name] = rakeDb.getSchemaAndTableFromName(currentSchema, enumName);
2830
2831
  const enumSchema = schema ?? currentSchema;
2831
2832
  codeItems.enums.set(`${enumSchema}.${name}`, {
2832
2833
  schema: enumSchema,
@@ -3170,7 +3171,8 @@ const pull = async (adapters, config) => {
3170
3171
  const baseTablePath = config.baseTable.getFilePath();
3171
3172
  const baseTableExportedAs = config.baseTable.exportAs;
3172
3173
  const [adapter] = adapters;
3173
- const currentSchema = (typeof config.schema === "function" ? config.schema() : config.schema) ?? "public";
3174
+ const adapterSchema = adapter.getSchema();
3175
+ const currentSchema = (typeof adapterSchema === "function" ? adapterSchema() : adapterSchema) ?? "public";
3174
3176
  const ctx = rakeDb.makeStructureToAstCtx(config, currentSchema);
3175
3177
  const asts = await rakeDb.structureToAst(ctx, adapter, config);
3176
3178
  const { tableInfos, fkeys } = getTableInfosAndFKeys(asts, config);