orchid-orm 1.63.4 → 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 +4 -4
|
@@ -196,12 +196,12 @@ const renameSchemaInStructures = (items, from, to) => {
|
|
|
196
196
|
}
|
|
197
197
|
};
|
|
198
198
|
|
|
199
|
-
const processExtensions = (
|
|
199
|
+
const processExtensions = (ast, dbStructure, {
|
|
200
200
|
currentSchema,
|
|
201
201
|
internal: { extensions, generatorIgnore }
|
|
202
202
|
}) => {
|
|
203
203
|
const codeExtensions = extensions?.map((ext) => {
|
|
204
|
-
const [schema, name] = getSchemaAndTableFromName(
|
|
204
|
+
const [schema, name] = getSchemaAndTableFromName(currentSchema, ext.name);
|
|
205
205
|
return { schema, name, version: ext.version };
|
|
206
206
|
});
|
|
207
207
|
for (const dbExt of dbStructure.extensions) {
|
|
@@ -399,7 +399,6 @@ const changeColumns = async (adapter, config, structureToAstCtx, dbStructure, do
|
|
|
399
399
|
dbColumnStructure
|
|
400
400
|
);
|
|
401
401
|
const action = await compareColumns(
|
|
402
|
-
config,
|
|
403
402
|
adapter,
|
|
404
403
|
domainsMap,
|
|
405
404
|
ast,
|
|
@@ -437,13 +436,13 @@ const changeColumns = async (adapter, config, structureToAstCtx, dbStructure, do
|
|
|
437
436
|
}
|
|
438
437
|
}
|
|
439
438
|
};
|
|
440
|
-
const compareColumns = async (
|
|
439
|
+
const compareColumns = async (adapter, domainsMap, ast, currentSchema, compareSql, changeTableData, typeCastsCache, verifying, key, dbName, dbColumn, codeColumn) => {
|
|
441
440
|
if (dbColumn instanceof ArrayColumn && codeColumn instanceof ArrayColumn) {
|
|
442
441
|
dbColumn = dbColumn.data.item;
|
|
443
442
|
codeColumn = codeColumn.data.item;
|
|
444
443
|
}
|
|
445
|
-
const dbType = getColumnDbType(
|
|
446
|
-
const codeType = getColumnDbType(
|
|
444
|
+
const dbType = getColumnDbType(dbColumn, currentSchema);
|
|
445
|
+
const codeType = getColumnDbType(codeColumn, currentSchema);
|
|
447
446
|
if (dbType !== codeType) {
|
|
448
447
|
const typeCasts = await getTypeCasts(adapter, typeCastsCache);
|
|
449
448
|
const dbBaseType = getColumnBaseType(dbColumn, domainsMap, dbType);
|
|
@@ -601,10 +600,10 @@ const changeColumn = (changeTableData, key, dbName, dbColumn, codeColumn) => {
|
|
|
601
600
|
to: { column: simpleCodeColumn }
|
|
602
601
|
};
|
|
603
602
|
};
|
|
604
|
-
const getColumnDbType = (
|
|
603
|
+
const getColumnDbType = (column, currentSchema) => {
|
|
605
604
|
if (column instanceof EnumColumn) {
|
|
606
605
|
const [schema = currentSchema, name] = getSchemaAndTableFromName(
|
|
607
|
-
|
|
606
|
+
currentSchema,
|
|
608
607
|
column.enumName
|
|
609
608
|
);
|
|
610
609
|
return `${schema}.${name}`;
|
|
@@ -632,7 +631,7 @@ const renameColumn = (columns, from, to) => {
|
|
|
632
631
|
}
|
|
633
632
|
};
|
|
634
633
|
|
|
635
|
-
const processDomains = async (
|
|
634
|
+
const processDomains = async (ast, adapter, domainsMap, dbStructure, {
|
|
636
635
|
codeItems: { domains },
|
|
637
636
|
structureToAstCtx,
|
|
638
637
|
currentSchema,
|
|
@@ -642,7 +641,7 @@ const processDomains = async (config, ast, adapter, domainsMap, dbStructure, {
|
|
|
642
641
|
if (domains) {
|
|
643
642
|
for (const { schemaName, name, column } of domains) {
|
|
644
643
|
codeDomains.push(
|
|
645
|
-
makeComparableDomain(
|
|
644
|
+
makeComparableDomain(currentSchema, schemaName, name, column)
|
|
646
645
|
);
|
|
647
646
|
}
|
|
648
647
|
}
|
|
@@ -678,7 +677,6 @@ const processDomains = async (config, ast, adapter, domainsMap, dbStructure, {
|
|
|
678
677
|
}));
|
|
679
678
|
}
|
|
680
679
|
const dbDomain = makeComparableDomain(
|
|
681
|
-
config,
|
|
682
680
|
currentSchema,
|
|
683
681
|
domain.schemaName,
|
|
684
682
|
domain.name,
|
|
@@ -695,7 +693,6 @@ const processDomains = async (config, ast, adapter, domainsMap, dbStructure, {
|
|
|
695
693
|
pushCompareDefault(compare, domain, found);
|
|
696
694
|
pushCompareChecks(compare, domain, found);
|
|
697
695
|
const source = `(VALUES (NULL::${getColumnDbType(
|
|
698
|
-
config,
|
|
699
696
|
dbColumn,
|
|
700
697
|
currentSchema
|
|
701
698
|
)})) t(value)`;
|
|
@@ -749,7 +746,7 @@ const processDomains = async (config, ast, adapter, domainsMap, dbStructure, {
|
|
|
749
746
|
}
|
|
750
747
|
}
|
|
751
748
|
};
|
|
752
|
-
const makeComparableDomain = (
|
|
749
|
+
const makeComparableDomain = (currentSchema, schemaName, name, column) => {
|
|
753
750
|
let arrayDims = 0;
|
|
754
751
|
const isNullable = column.data.isNullable ?? false;
|
|
755
752
|
let inner = column;
|
|
@@ -757,9 +754,9 @@ const makeComparableDomain = (config, currentSchema, schemaName, name, column) =
|
|
|
757
754
|
inner = inner.data.item;
|
|
758
755
|
arrayDims++;
|
|
759
756
|
}
|
|
760
|
-
const fullType = getColumnDbType(
|
|
757
|
+
const fullType = getColumnDbType(inner, currentSchema);
|
|
761
758
|
const [typeSchema = "pg_catalog", type] = getSchemaAndTableFromName(
|
|
762
|
-
|
|
759
|
+
currentSchema,
|
|
763
760
|
fullType
|
|
764
761
|
);
|
|
765
762
|
return {
|
|
@@ -1667,7 +1664,7 @@ const fnOrTableToString = (fnOrTable) => {
|
|
|
1667
1664
|
};
|
|
1668
1665
|
const parseForeignKey = (config, codeConstraint, references, currentSchema) => {
|
|
1669
1666
|
const { fnOrTable, columns, foreignColumns, options } = references;
|
|
1670
|
-
const [schema, table] = getSchemaAndTableFromName(
|
|
1667
|
+
const [schema, table] = getSchemaAndTableFromName(currentSchema, fnOrTable);
|
|
1671
1668
|
return {
|
|
1672
1669
|
references: {
|
|
1673
1670
|
foreignSchema: schema ?? currentSchema,
|
|
@@ -1853,6 +1850,7 @@ const processTables = async (ast, domainsMap, adapter, dbStructure, config, {
|
|
|
1853
1850
|
const compareSql = { values: [], expressions: [] };
|
|
1854
1851
|
const tableExpressions = [];
|
|
1855
1852
|
const { changeTables, changeTableSchemas, dropTables, tableShapes } = collectChangeAndDropTables(
|
|
1853
|
+
adapter,
|
|
1856
1854
|
config,
|
|
1857
1855
|
tables,
|
|
1858
1856
|
dbStructure,
|
|
@@ -1908,19 +1906,19 @@ const collectCreateTables = (tables, dbStructure, currentSchema) => {
|
|
|
1908
1906
|
return acc;
|
|
1909
1907
|
}, []);
|
|
1910
1908
|
};
|
|
1911
|
-
const collectChangeAndDropTables = (config, tables, dbStructure, currentSchema, createTables, generatorIgnore) => {
|
|
1909
|
+
const collectChangeAndDropTables = (adapter, config, tables, dbStructure, currentSchema, createTables, generatorIgnore) => {
|
|
1912
1910
|
const changeTables = [];
|
|
1913
1911
|
const changeTableSchemas = [];
|
|
1914
1912
|
const dropTables = [];
|
|
1915
1913
|
const tableShapes = {};
|
|
1916
1914
|
const ignoreTables = generatorIgnore?.tables?.map((name) => {
|
|
1917
1915
|
const [schema = currentSchema, table] = getSchemaAndTableFromName(
|
|
1918
|
-
|
|
1916
|
+
currentSchema,
|
|
1919
1917
|
name
|
|
1920
1918
|
);
|
|
1921
1919
|
return { schema, table };
|
|
1922
1920
|
});
|
|
1923
|
-
const { schema: migrationsSchema = "public", table: migrationsTable } = getMigrationsSchemaAndTable(config);
|
|
1921
|
+
const { schema: migrationsSchema = "public", table: migrationsTable } = getMigrationsSchemaAndTable(adapter, config);
|
|
1924
1922
|
for (const dbTable of dbStructure.tables) {
|
|
1925
1923
|
if (dbTable.name === migrationsTable && dbTable.schemaName === migrationsSchema || generatorIgnore?.schemas?.includes(dbTable.schemaName) || ignoreTables?.some(
|
|
1926
1924
|
({ schema, table }) => table === dbTable.name && schema === dbTable.schemaName
|
|
@@ -2178,10 +2176,9 @@ const composeMigration = async (adapter, config, ast, dbStructure, params) => {
|
|
|
2178
2176
|
const { structureToAstCtx, currentSchema } = params;
|
|
2179
2177
|
const domainsMap = makeDomainsMap(structureToAstCtx, dbStructure);
|
|
2180
2178
|
await processSchemas(ast, dbStructure, params);
|
|
2181
|
-
processExtensions(
|
|
2179
|
+
processExtensions(ast, dbStructure, params);
|
|
2182
2180
|
const pendingDbTypes = new PendingDbTypes();
|
|
2183
2181
|
await processDomains(
|
|
2184
|
-
config,
|
|
2185
2182
|
ast,
|
|
2186
2183
|
adapter,
|
|
2187
2184
|
domainsMap,
|
|
@@ -2207,7 +2204,7 @@ const verifyMigration = async (adapter, config, migrationCode, generateMigration
|
|
|
2207
2204
|
const migrationFn = new Function("change", migrationCode);
|
|
2208
2205
|
let code;
|
|
2209
2206
|
try {
|
|
2210
|
-
await adapter.transaction(
|
|
2207
|
+
await adapter.transaction(async (trx) => {
|
|
2211
2208
|
const changeFns = [];
|
|
2212
2209
|
migrationFn((changeCb) => {
|
|
2213
2210
|
changeFns.push(changeCb);
|
|
@@ -2324,7 +2321,7 @@ const report = (ast, config, currentSchema) => {
|
|
|
2324
2321
|
const column = change.item;
|
|
2325
2322
|
const { primaryKey, indexes, excludes, foreignKeys, checks } = column.data;
|
|
2326
2323
|
inner.push(
|
|
2327
|
-
`${change.type === "add" ? green("+ add column") : red("- drop column")} ${key} ${column.data.alias ?? getColumnDbType(
|
|
2324
|
+
`${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) => {
|
|
2328
2325
|
return `${fnOrTableToString(
|
|
2329
2326
|
fk.fnOrTable
|
|
2330
2327
|
)}(${fk.foreignColumns.join(", ")})`;
|
|
@@ -2385,7 +2382,7 @@ const report = (ast, config, currentSchema) => {
|
|
|
2385
2382
|
for (const { references } of a.drop.constraints) {
|
|
2386
2383
|
if (!references) continue;
|
|
2387
2384
|
const [schema, name] = getSchemaAndTableFromName(
|
|
2388
|
-
|
|
2385
|
+
currentSchema,
|
|
2389
2386
|
references.fnOrTable
|
|
2390
2387
|
);
|
|
2391
2388
|
inner.push(
|
|
@@ -2576,11 +2573,11 @@ const generate = async (adapters, config, args, afterPull) => {
|
|
|
2576
2573
|
afterPull
|
|
2577
2574
|
);
|
|
2578
2575
|
const [adapter] = adapters;
|
|
2579
|
-
const
|
|
2576
|
+
const adapterSchema = adapter.getSchema();
|
|
2577
|
+
const currentSchema = (typeof adapterSchema === "function" ? adapterSchema() : adapterSchema) ?? "public";
|
|
2580
2578
|
const db = await getDbFromConfig(config, dbPath);
|
|
2581
2579
|
const { columnTypes, internal } = db.$qb;
|
|
2582
2580
|
const codeItems = await getActualItems(
|
|
2583
|
-
config,
|
|
2584
2581
|
db,
|
|
2585
2582
|
currentSchema,
|
|
2586
2583
|
internal,
|
|
@@ -2737,7 +2734,7 @@ const compareDbStructures = (a, b, i, path2) => {
|
|
|
2737
2734
|
throw new Error(`${path2} in the db 0 does not match db ${i}`);
|
|
2738
2735
|
}
|
|
2739
2736
|
};
|
|
2740
|
-
const getActualItems = async (
|
|
2737
|
+
const getActualItems = async (db, currentSchema, internal, columnTypes) => {
|
|
2741
2738
|
const tableNames = /* @__PURE__ */ new Set();
|
|
2742
2739
|
const habtmTables = /* @__PURE__ */ new Map();
|
|
2743
2740
|
const codeItems = {
|
|
@@ -2780,7 +2777,7 @@ const getActualItems = async (config, db, currentSchema, internal, columnTypes)
|
|
|
2780
2777
|
delete table.shape[key2];
|
|
2781
2778
|
} else if (column instanceof DomainColumn) {
|
|
2782
2779
|
const [schemaName = currentSchema, name2] = getSchemaAndTableFromName(
|
|
2783
|
-
|
|
2780
|
+
currentSchema,
|
|
2784
2781
|
column.dataType
|
|
2785
2782
|
);
|
|
2786
2783
|
domains.set(column.dataType, {
|
|
@@ -2791,21 +2788,21 @@ const getActualItems = async (config, db, currentSchema, internal, columnTypes)
|
|
|
2791
2788
|
} else {
|
|
2792
2789
|
const en = column.dataType === "enum" ? column : column instanceof ArrayColumn && column.data.item.dataType === "enum" ? column.data.item : void 0;
|
|
2793
2790
|
if (en) {
|
|
2794
|
-
processEnumColumn(
|
|
2791
|
+
processEnumColumn(en, currentSchema, codeItems);
|
|
2795
2792
|
}
|
|
2796
2793
|
}
|
|
2797
2794
|
}
|
|
2798
2795
|
}
|
|
2799
2796
|
if (internal.extensions) {
|
|
2800
2797
|
for (const extension of internal.extensions) {
|
|
2801
|
-
const [schema] = getSchemaAndTableFromName(
|
|
2798
|
+
const [schema] = getSchemaAndTableFromName(currentSchema, extension.name);
|
|
2802
2799
|
if (schema) codeItems.schemas.add(schema);
|
|
2803
2800
|
}
|
|
2804
2801
|
}
|
|
2805
2802
|
if (internal.domains) {
|
|
2806
2803
|
for (const key in internal.domains) {
|
|
2807
2804
|
const [schemaName = currentSchema, name] = getSchemaAndTableFromName(
|
|
2808
|
-
|
|
2805
|
+
currentSchema,
|
|
2809
2806
|
key
|
|
2810
2807
|
);
|
|
2811
2808
|
const column = internal.domains[key](columnTypes);
|
|
@@ -2822,9 +2819,9 @@ const getActualItems = async (config, db, currentSchema, internal, columnTypes)
|
|
|
2822
2819
|
}
|
|
2823
2820
|
return codeItems;
|
|
2824
2821
|
};
|
|
2825
|
-
const processEnumColumn = (
|
|
2822
|
+
const processEnumColumn = (column, currentSchema, codeItems) => {
|
|
2826
2823
|
const { enumName, options } = column;
|
|
2827
|
-
const [schema, name] = getSchemaAndTableFromName(
|
|
2824
|
+
const [schema, name] = getSchemaAndTableFromName(currentSchema, enumName);
|
|
2828
2825
|
const enumSchema = schema ?? currentSchema;
|
|
2829
2826
|
codeItems.enums.set(`${enumSchema}.${name}`, {
|
|
2830
2827
|
schema: enumSchema,
|
|
@@ -3168,7 +3165,8 @@ const pull = async (adapters, config) => {
|
|
|
3168
3165
|
const baseTablePath = config.baseTable.getFilePath();
|
|
3169
3166
|
const baseTableExportedAs = config.baseTable.exportAs;
|
|
3170
3167
|
const [adapter] = adapters;
|
|
3171
|
-
const
|
|
3168
|
+
const adapterSchema = adapter.getSchema();
|
|
3169
|
+
const currentSchema = (typeof adapterSchema === "function" ? adapterSchema() : adapterSchema) ?? "public";
|
|
3172
3170
|
const ctx = makeStructureToAstCtx(config, currentSchema);
|
|
3173
3171
|
const asts = await structureToAst(ctx, adapter, config);
|
|
3174
3172
|
const { tableInfos, fkeys } = getTableInfosAndFKeys(asts, config);
|