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.
- package/dist/migrations/index.js +36 -34
- package/dist/migrations/index.js.map +1 -1
- package/dist/migrations/index.mjs +36 -34
- package/dist/migrations/index.mjs.map +1 -1
- package/dist/migrations/node-postgres.js +36 -34
- package/dist/migrations/node-postgres.js.map +1 -1
- package/dist/migrations/node-postgres.mjs +36 -34
- package/dist/migrations/node-postgres.mjs.map +1 -1
- package/dist/migrations/postgres-js.js +36 -34
- package/dist/migrations/postgres-js.js.map +1 -1
- package/dist/migrations/postgres-js.mjs +36 -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(
|
|
@@ -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
|
|
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 (
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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 = (
|
|
2828
|
+
const processEnumColumn = (column, currentSchema, codeItems) => {
|
|
2828
2829
|
const { enumName, options } = column;
|
|
2829
|
-
const [schema, name] = rakeDb.getSchemaAndTableFromName(
|
|
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
|
|
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);
|