orchid-orm 1.63.5 → 1.64.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/dist/migrations/index.js +32 -34
- package/dist/migrations/index.js.map +1 -1
- package/dist/migrations/index.mjs +32 -34
- package/dist/migrations/index.mjs.map +1 -1
- package/dist/migrations/node-postgres.js +32 -34
- package/dist/migrations/node-postgres.js.map +1 -1
- package/dist/migrations/node-postgres.mjs +32 -34
- package/dist/migrations/node-postgres.mjs.map +1 -1
- package/dist/migrations/postgres-js.js +32 -34
- package/dist/migrations/postgres-js.js.map +1 -1
- package/dist/migrations/postgres-js.mjs +32 -34
- package/dist/migrations/postgres-js.mjs.map +1 -1
- package/package.json +5 -5
|
@@ -198,12 +198,12 @@ const renameSchemaInStructures = (items, from, to) => {
|
|
|
198
198
|
}
|
|
199
199
|
};
|
|
200
200
|
|
|
201
|
-
const processExtensions = (
|
|
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(
|
|
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 (
|
|
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(
|
|
448
|
-
const codeType = getColumnDbType(
|
|
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 = (
|
|
605
|
+
const getColumnDbType = (column, currentSchema) => {
|
|
607
606
|
if (column instanceof pqb.EnumColumn) {
|
|
608
607
|
const [schema = currentSchema, name] = rakeDb.getSchemaAndTableFromName(
|
|
609
|
-
|
|
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 (
|
|
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(
|
|
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 = (
|
|
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(
|
|
759
|
+
const fullType = getColumnDbType(inner, currentSchema);
|
|
763
760
|
const [typeSchema = "pg_catalog", type] = rakeDb.getSchemaAndTableFromName(
|
|
764
|
-
|
|
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(
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
2387
|
+
currentSchema,
|
|
2391
2388
|
references.fnOrTable
|
|
2392
2389
|
);
|
|
2393
2390
|
inner.push(
|
|
@@ -2578,11 +2575,11 @@ const generate = async (adapters, config, args, afterPull) => {
|
|
|
2578
2575
|
afterPull
|
|
2579
2576
|
);
|
|
2580
2577
|
const [adapter] = adapters;
|
|
2581
|
-
const
|
|
2578
|
+
const adapterSchema = adapter.getSchema();
|
|
2579
|
+
const currentSchema = (typeof adapterSchema === "function" ? adapterSchema() : adapterSchema) ?? "public";
|
|
2582
2580
|
const db = await getDbFromConfig(config, dbPath);
|
|
2583
2581
|
const { columnTypes, internal } = db.$qb;
|
|
2584
2582
|
const codeItems = await getActualItems(
|
|
2585
|
-
config,
|
|
2586
2583
|
db,
|
|
2587
2584
|
currentSchema,
|
|
2588
2585
|
internal,
|
|
@@ -2739,7 +2736,7 @@ const compareDbStructures = (a, b, i, path2) => {
|
|
|
2739
2736
|
throw new Error(`${path2} in the db 0 does not match db ${i}`);
|
|
2740
2737
|
}
|
|
2741
2738
|
};
|
|
2742
|
-
const getActualItems = async (
|
|
2739
|
+
const getActualItems = async (db, currentSchema, internal, columnTypes) => {
|
|
2743
2740
|
const tableNames = /* @__PURE__ */ new Set();
|
|
2744
2741
|
const habtmTables = /* @__PURE__ */ new Map();
|
|
2745
2742
|
const codeItems = {
|
|
@@ -2782,7 +2779,7 @@ const getActualItems = async (config, db, currentSchema, internal, columnTypes)
|
|
|
2782
2779
|
delete table.shape[key2];
|
|
2783
2780
|
} else if (column instanceof pqb.DomainColumn) {
|
|
2784
2781
|
const [schemaName = currentSchema, name2] = rakeDb.getSchemaAndTableFromName(
|
|
2785
|
-
|
|
2782
|
+
currentSchema,
|
|
2786
2783
|
column.dataType
|
|
2787
2784
|
);
|
|
2788
2785
|
domains.set(column.dataType, {
|
|
@@ -2793,21 +2790,21 @@ const getActualItems = async (config, db, currentSchema, internal, columnTypes)
|
|
|
2793
2790
|
} else {
|
|
2794
2791
|
const en = column.dataType === "enum" ? column : column instanceof pqb.ArrayColumn && column.data.item.dataType === "enum" ? column.data.item : void 0;
|
|
2795
2792
|
if (en) {
|
|
2796
|
-
processEnumColumn(
|
|
2793
|
+
processEnumColumn(en, currentSchema, codeItems);
|
|
2797
2794
|
}
|
|
2798
2795
|
}
|
|
2799
2796
|
}
|
|
2800
2797
|
}
|
|
2801
2798
|
if (internal.extensions) {
|
|
2802
2799
|
for (const extension of internal.extensions) {
|
|
2803
|
-
const [schema] = rakeDb.getSchemaAndTableFromName(
|
|
2800
|
+
const [schema] = rakeDb.getSchemaAndTableFromName(currentSchema, extension.name);
|
|
2804
2801
|
if (schema) codeItems.schemas.add(schema);
|
|
2805
2802
|
}
|
|
2806
2803
|
}
|
|
2807
2804
|
if (internal.domains) {
|
|
2808
2805
|
for (const key in internal.domains) {
|
|
2809
2806
|
const [schemaName = currentSchema, name] = rakeDb.getSchemaAndTableFromName(
|
|
2810
|
-
|
|
2807
|
+
currentSchema,
|
|
2811
2808
|
key
|
|
2812
2809
|
);
|
|
2813
2810
|
const column = internal.domains[key](columnTypes);
|
|
@@ -2824,9 +2821,9 @@ const getActualItems = async (config, db, currentSchema, internal, columnTypes)
|
|
|
2824
2821
|
}
|
|
2825
2822
|
return codeItems;
|
|
2826
2823
|
};
|
|
2827
|
-
const processEnumColumn = (
|
|
2824
|
+
const processEnumColumn = (column, currentSchema, codeItems) => {
|
|
2828
2825
|
const { enumName, options } = column;
|
|
2829
|
-
const [schema, name] = rakeDb.getSchemaAndTableFromName(
|
|
2826
|
+
const [schema, name] = rakeDb.getSchemaAndTableFromName(currentSchema, enumName);
|
|
2830
2827
|
const enumSchema = schema ?? currentSchema;
|
|
2831
2828
|
codeItems.enums.set(`${enumSchema}.${name}`, {
|
|
2832
2829
|
schema: enumSchema,
|
|
@@ -3170,7 +3167,8 @@ const pull = async (adapters, config) => {
|
|
|
3170
3167
|
const baseTablePath = config.baseTable.getFilePath();
|
|
3171
3168
|
const baseTableExportedAs = config.baseTable.exportAs;
|
|
3172
3169
|
const [adapter] = adapters;
|
|
3173
|
-
const
|
|
3170
|
+
const adapterSchema = adapter.getSchema();
|
|
3171
|
+
const currentSchema = (typeof adapterSchema === "function" ? adapterSchema() : adapterSchema) ?? "public";
|
|
3174
3172
|
const ctx = rakeDb.makeStructureToAstCtx(config, currentSchema);
|
|
3175
3173
|
const asts = await rakeDb.structureToAst(ctx, adapter, config);
|
|
3176
3174
|
const { tableInfos, fkeys } = getTableInfosAndFKeys(asts, config);
|