orchid-orm 1.58.3 → 1.58.4
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/node-postgres.js +51 -14
- package/dist/migrations/node-postgres.js.map +1 -1
- package/dist/migrations/node-postgres.mjs +51 -14
- package/dist/migrations/node-postgres.mjs.map +1 -1
- package/dist/migrations/postgres-js.js +51 -14
- package/dist/migrations/postgres-js.js.map +1 -1
- package/dist/migrations/postgres-js.mjs +51 -14
- package/dist/migrations/postgres-js.mjs.map +1 -1
- package/package.json +5 -5
|
@@ -636,7 +636,7 @@ const processDomains = async (ast, adapter, domainsMap, dbStructure, {
|
|
|
636
636
|
structureToAstCtx,
|
|
637
637
|
currentSchema,
|
|
638
638
|
internal: { generatorIgnore }
|
|
639
|
-
}) => {
|
|
639
|
+
}, pendingDbTypes) => {
|
|
640
640
|
const codeDomains = [];
|
|
641
641
|
if (domains) {
|
|
642
642
|
for (const { schemaName, name, column } of domains) {
|
|
@@ -723,6 +723,7 @@ const processDomains = async (ast, adapter, domainsMap, dbStructure, {
|
|
|
723
723
|
toSchema: first.schemaName,
|
|
724
724
|
to: first.name
|
|
725
725
|
});
|
|
726
|
+
pendingDbTypes.add(first.schemaName, first.name);
|
|
726
727
|
}
|
|
727
728
|
codeDomains.splice(i, 1);
|
|
728
729
|
} else {
|
|
@@ -732,6 +733,7 @@ const processDomains = async (ast, adapter, domainsMap, dbStructure, {
|
|
|
732
733
|
for (const codeDomain of codeDomains) {
|
|
733
734
|
if (!holdCodeDomains.has(codeDomain)) {
|
|
734
735
|
ast.push(createAst(codeDomain));
|
|
736
|
+
pendingDbTypes.add(codeDomain.schemaName, codeDomain.name);
|
|
735
737
|
}
|
|
736
738
|
}
|
|
737
739
|
if (tableExpressions.length) {
|
|
@@ -739,6 +741,7 @@ const processDomains = async (ast, adapter, domainsMap, dbStructure, {
|
|
|
739
741
|
if (holdCodeDomains.size) {
|
|
740
742
|
for (const codeDomain of holdCodeDomains.keys()) {
|
|
741
743
|
ast.push(createAst(codeDomain));
|
|
744
|
+
pendingDbTypes.add(codeDomain.schemaName, codeDomain.name);
|
|
742
745
|
}
|
|
743
746
|
}
|
|
744
747
|
}
|
|
@@ -821,7 +824,7 @@ const processEnums = async (ast, dbStructure, {
|
|
|
821
824
|
currentSchema,
|
|
822
825
|
verifying,
|
|
823
826
|
internal: { generatorIgnore }
|
|
824
|
-
}) => {
|
|
827
|
+
}, pendingDbTypes) => {
|
|
825
828
|
const createEnums = [];
|
|
826
829
|
const dropEnums = [];
|
|
827
830
|
for (const [, codeEnum] of enums) {
|
|
@@ -839,7 +842,7 @@ const processEnums = async (ast, dbStructure, {
|
|
|
839
842
|
}
|
|
840
843
|
const codeEnum = enums.get(`${dbEnum.schemaName}.${dbEnum.name}`);
|
|
841
844
|
if (codeEnum) {
|
|
842
|
-
changeEnum(ast, dbEnum, codeEnum);
|
|
845
|
+
changeEnum(ast, dbEnum, codeEnum, pendingDbTypes);
|
|
843
846
|
continue;
|
|
844
847
|
}
|
|
845
848
|
const i = createEnums.findIndex((x) => x.name === dbEnum.name);
|
|
@@ -857,7 +860,8 @@ const processEnums = async (ast, dbStructure, {
|
|
|
857
860
|
toSchema,
|
|
858
861
|
to: dbEnum.name
|
|
859
862
|
});
|
|
860
|
-
|
|
863
|
+
pendingDbTypes.add(toSchema, dbEnum.name);
|
|
864
|
+
changeEnum(ast, dbEnum, codeEnum2, pendingDbTypes);
|
|
861
865
|
continue;
|
|
862
866
|
}
|
|
863
867
|
dropEnums.push(dbEnum);
|
|
@@ -895,7 +899,8 @@ const processEnums = async (ast, dbStructure, {
|
|
|
895
899
|
toSchema,
|
|
896
900
|
to
|
|
897
901
|
});
|
|
898
|
-
|
|
902
|
+
pendingDbTypes.add(toSchema, to);
|
|
903
|
+
changeEnum(ast, dbEnum, codeEnum, pendingDbTypes);
|
|
899
904
|
continue;
|
|
900
905
|
}
|
|
901
906
|
}
|
|
@@ -904,6 +909,7 @@ const processEnums = async (ast, dbStructure, {
|
|
|
904
909
|
action: "create",
|
|
905
910
|
...codeEnum
|
|
906
911
|
});
|
|
912
|
+
pendingDbTypes.add(codeEnum.schema, codeEnum.name);
|
|
907
913
|
}
|
|
908
914
|
for (const dbEnum of dropEnums) {
|
|
909
915
|
ast.push({
|
|
@@ -915,7 +921,7 @@ const processEnums = async (ast, dbStructure, {
|
|
|
915
921
|
});
|
|
916
922
|
}
|
|
917
923
|
};
|
|
918
|
-
const changeEnum = (ast, dbEnum, codeEnum) => {
|
|
924
|
+
const changeEnum = (ast, dbEnum, codeEnum, pendingDbTypes) => {
|
|
919
925
|
const { values: dbValues } = dbEnum;
|
|
920
926
|
const { values: codeValues, schema, name } = codeEnum;
|
|
921
927
|
if (dbValues.length < codeValues.length) {
|
|
@@ -927,6 +933,7 @@ const changeEnum = (ast, dbEnum, codeEnum) => {
|
|
|
927
933
|
name,
|
|
928
934
|
values: codeValues.filter((value) => !dbValues.includes(value))
|
|
929
935
|
});
|
|
936
|
+
pendingDbTypes.add(schema, name);
|
|
930
937
|
return;
|
|
931
938
|
}
|
|
932
939
|
} else if (dbValues.length > codeValues.length) {
|
|
@@ -938,6 +945,7 @@ const changeEnum = (ast, dbEnum, codeEnum) => {
|
|
|
938
945
|
name,
|
|
939
946
|
values: dbValues.filter((value) => !codeValues.includes(value))
|
|
940
947
|
});
|
|
948
|
+
pendingDbTypes.add(schema, name);
|
|
941
949
|
return;
|
|
942
950
|
}
|
|
943
951
|
} else if (!dbValues.some((value) => !codeValues.includes(value))) {
|
|
@@ -950,6 +958,7 @@ const changeEnum = (ast, dbEnum, codeEnum) => {
|
|
|
950
958
|
fromValues: dbValues,
|
|
951
959
|
toValues: codeValues
|
|
952
960
|
});
|
|
961
|
+
pendingDbTypes.add(schema, name);
|
|
953
962
|
};
|
|
954
963
|
const renameColumnsTypeSchema = (dbStructure, from, to) => {
|
|
955
964
|
for (const table of dbStructure.tables) {
|
|
@@ -1828,7 +1837,7 @@ const processTables = async (ast, domainsMap, adapter, dbStructure, config, {
|
|
|
1828
1837
|
currentSchema,
|
|
1829
1838
|
internal: { generatorIgnore },
|
|
1830
1839
|
verifying
|
|
1831
|
-
}) => {
|
|
1840
|
+
}, pendingDbTypes) => {
|
|
1832
1841
|
const createTables = collectCreateTables(
|
|
1833
1842
|
tables,
|
|
1834
1843
|
dbStructure,
|
|
@@ -1866,7 +1875,8 @@ const processTables = async (ast, domainsMap, adapter, dbStructure, config, {
|
|
|
1866
1875
|
config,
|
|
1867
1876
|
compareSql,
|
|
1868
1877
|
tableExpressions,
|
|
1869
|
-
verifying
|
|
1878
|
+
verifying,
|
|
1879
|
+
pendingDbTypes
|
|
1870
1880
|
);
|
|
1871
1881
|
processForeignKeys(config, ast, changeTables, currentSchema, tableShapes);
|
|
1872
1882
|
await Promise.all([
|
|
@@ -1944,7 +1954,7 @@ const applyChangeTableSchemas = (changeTableSchemas, currentSchema, ast) => {
|
|
|
1944
1954
|
});
|
|
1945
1955
|
}
|
|
1946
1956
|
};
|
|
1947
|
-
const applyChangeTables = async (adapter, changeTables, structureToAstCtx, dbStructure, domainsMap, ast, currentSchema, config, compareSql, tableExpressions, verifying) => {
|
|
1957
|
+
const applyChangeTables = async (adapter, changeTables, structureToAstCtx, dbStructure, domainsMap, ast, currentSchema, config, compareSql, tableExpressions, verifying, pendingDbTypes) => {
|
|
1948
1958
|
const compareExpressions = [];
|
|
1949
1959
|
const typeCastsCache = {};
|
|
1950
1960
|
for (const changeTableData of changeTables) {
|
|
@@ -1971,8 +1981,11 @@ const applyChangeTables = async (adapter, changeTables, structureToAstCtx, dbStr
|
|
|
1971
1981
|
const column = codeTable.shape[key];
|
|
1972
1982
|
if (!column.dataType) continue;
|
|
1973
1983
|
const name = column.data.name ?? key;
|
|
1974
|
-
|
|
1975
|
-
|
|
1984
|
+
const type = getColumnDbTypeQuoted(column, currentSchema);
|
|
1985
|
+
if (!pendingDbTypes.set.has(type)) {
|
|
1986
|
+
names.push(name);
|
|
1987
|
+
types.push(type);
|
|
1988
|
+
}
|
|
1976
1989
|
}
|
|
1977
1990
|
const tableName = codeTable.table;
|
|
1978
1991
|
const source = `(VALUES (${types.map((x) => `NULL::${x}`).join(", ")})) "${tableName}"(${names.map((x) => `"${x}"`).join(", ")})`;
|
|
@@ -2117,14 +2130,38 @@ const processTableChange = async (adapter, structureToAstCtx, dbStructure, domai
|
|
|
2117
2130
|
}
|
|
2118
2131
|
};
|
|
2119
2132
|
|
|
2133
|
+
class PendingDbTypes {
|
|
2134
|
+
constructor() {
|
|
2135
|
+
this.set = /* @__PURE__ */ new Set();
|
|
2136
|
+
}
|
|
2137
|
+
add(schemaName = "public", name) {
|
|
2138
|
+
this.set.add(`"${schemaName}"."${name}"`);
|
|
2139
|
+
}
|
|
2140
|
+
}
|
|
2120
2141
|
const composeMigration = async (adapter, config, ast, dbStructure, params) => {
|
|
2121
2142
|
const { structureToAstCtx, currentSchema } = params;
|
|
2122
2143
|
const domainsMap = rakeDb.makeDomainsMap(structureToAstCtx, dbStructure);
|
|
2123
2144
|
await processSchemas(ast, dbStructure, params);
|
|
2124
2145
|
processExtensions(ast, dbStructure, params);
|
|
2125
|
-
|
|
2126
|
-
await
|
|
2127
|
-
|
|
2146
|
+
const pendingDbTypes = new PendingDbTypes();
|
|
2147
|
+
await processDomains(
|
|
2148
|
+
ast,
|
|
2149
|
+
adapter,
|
|
2150
|
+
domainsMap,
|
|
2151
|
+
dbStructure,
|
|
2152
|
+
params,
|
|
2153
|
+
pendingDbTypes
|
|
2154
|
+
);
|
|
2155
|
+
await processEnums(ast, dbStructure, params, pendingDbTypes);
|
|
2156
|
+
await processTables(
|
|
2157
|
+
ast,
|
|
2158
|
+
domainsMap,
|
|
2159
|
+
adapter,
|
|
2160
|
+
dbStructure,
|
|
2161
|
+
config,
|
|
2162
|
+
params,
|
|
2163
|
+
pendingDbTypes
|
|
2164
|
+
);
|
|
2128
2165
|
return rakeDb.astToMigration(currentSchema, config, ast);
|
|
2129
2166
|
};
|
|
2130
2167
|
|