@voltro/database 0.86.0 → 0.88.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/CHANGELOG.md +5484 -0
- package/THIRD-PARTY-NOTICES.md +2 -226
- package/dist/actorSnapshot.js +1 -2
- package/dist/arrayCodec.js +1 -2
- package/dist/branchExecute.js +1 -2
- package/dist/branching.js +1 -2
- package/dist/bulkInsertLimits.js +16 -12
- package/dist/cdcOffsetsTables.js +1 -2
- package/dist/changeEvent.js +1 -2
- package/dist/changeIdentity.js +1 -2
- package/dist/changeListenerCeiling.js +1 -2
- package/dist/columnReference.js +1 -2
- package/dist/columns.js +1 -2
- package/dist/committedChanges.js +1 -2
- package/dist/connectionIdentity.js +1 -2
- package/dist/coreTables.js +1 -2
- package/dist/coreTablesRegistry.js +1 -2
- package/dist/dataTransfers.js +3 -3
- package/dist/dbCause.js +1 -2
- package/dist/dbMetrics.js +1 -2
- package/dist/decimalComparison.js +1 -2
- package/dist/derivedRowId.js +1 -2
- package/dist/dialect.js +1 -2
- package/dist/enumRenames.js +1 -2
- package/dist/expiresMixin.js +1 -2
- package/dist/fieldEncryption.js +65 -43
- package/dist/frameworkTables.js +16 -4
- package/dist/ginIndex.js +1 -2
- package/dist/hybridSearch.js +1 -2
- package/dist/idGenerator.js +5 -6
- package/dist/identifierLimits.js +1 -2
- package/dist/index.d.ts +153 -22
- package/dist/index.js +78 -78
- package/dist/indexAudit.js +45 -44
- package/dist/indexStorage.js +1 -2
- package/dist/joinCompiler.js +1 -2
- package/dist/jsonEagerCompiler.js +1 -2
- package/dist/jsonPatch.js +1 -2
- package/dist/jsonPatchAssignments.js +1 -2
- package/dist/jsonPath.js +1 -2
- package/dist/localFirstMixin.js +1 -2
- package/dist/migrate.js +52 -33
- package/dist/migration.js +1 -2
- package/dist/migrations/appliedAtValue.js +1 -2
- package/dist/migrations/applier.js +400 -386
- package/dist/migrations/boot.js +2 -3
- package/dist/migrations/branchRehearsal.js +1 -2
- package/dist/migrations/columnEquivalence.js +1 -2
- package/dist/migrations/ddlError.js +1 -2
- package/dist/migrations/ddlStatements.js +8 -0
- package/dist/migrations/declaredSchema.js +2 -3
- package/dist/migrations/deployLedger.js +1 -2
- package/dist/migrations/fileBased.js +1 -2
- package/dist/migrations/fileContext.js +1 -2
- package/dist/migrations/fileDiscovery.js +146 -133
- package/dist/migrations/fileSkipProbes.js +1 -2
- package/dist/migrations/fingerprint.js +1 -2
- package/dist/migrations/fkCycles.js +1 -2
- package/dist/migrations/frameworkLiveTables.js +1 -2
- package/dist/migrations/idempotentDdl.js +1 -2
- package/dist/migrations/indexPredicate.js +1 -2
- package/dist/migrations/introspect.js +188 -187
- package/dist/migrations/ledgerRows.js +1 -2
- package/dist/migrations/lock.js +1 -2
- package/dist/migrations/migrationTableExists.js +1 -2
- package/dist/migrations/mssqlColumnDependencies.js +1 -2
- package/dist/migrations/mysqlEngine.js +1 -2
- package/dist/migrations/namespaceCharset.js +1 -2
- package/dist/migrations/planner.js +25 -16
- package/dist/migrations/postgresEnumCheck.js +5 -3
- package/dist/migrations/reactiveTriggerDrift.js +1 -2
- package/dist/migrations/reactiveTriggerName.js +1 -2
- package/dist/migrations/renameMssqlCheck.js +1 -2
- package/dist/migrations/restoreSnapshots.js +1 -2
- package/dist/migrations/resumeLedger.js +1 -2
- package/dist/migrations/rollingDeploy.js +1 -2
- package/dist/migrations/schemaOwner.js +1 -2
- package/dist/migrations/schemaOwnerTable.js +1 -2
- package/dist/migrations/softDropSnapshot.js +1 -2
- package/dist/migrations/sqlLimit.js +1 -2
- package/dist/migrations/sqliteCatalogName.js +12 -0
- package/dist/migrations/sqliteConstraintIdentity.js +1 -2
- package/dist/migrations/sqliteDecimalBoot.js +1 -2
- package/dist/migrations/sqliteDecimalPublication.js +1 -2
- package/dist/migrations/sqliteDecimalReview.js +1 -2
- package/dist/migrations/sqliteDecimalReviewStore.js +1 -2
- package/dist/migrations/sqliteDecimalReviewWitness.js +1 -2
- package/dist/migrations/sqliteDecimalSource.js +1 -2
- package/dist/migrations/sqliteDecimalStage.js +1 -2
- package/dist/migrations/sqliteForeignKeys.js +1 -2
- package/dist/migrations/sqliteMigrationBatch.js +1 -2
- package/dist/migrations/sqliteRetainedSource.js +1 -2
- package/dist/migrations/sqliteRowIdentity.js +1 -2
- package/dist/migrations/sqliteSchemaEpoch.js +1 -2
- package/dist/migrations/sqliteSnapshotGuard.js +1 -2
- package/dist/migrations/sqliteTableContents.js +1 -2
- package/dist/migrations/sqliteTableCopy.js +1 -2
- package/dist/migrations/sqliteTableSchema.js +1 -2
- package/dist/migrations/sqliteWitnessProtection.js +1 -2
- package/dist/migrations/squash.js +1 -2
- package/dist/migrations/storeCharset.js +1 -2
- package/dist/migrations/transactionCause.js +1 -2
- package/dist/migrations/undeclaredCharset.js +1 -2
- package/dist/migrations/uniqueActiveLowering.js +1 -2
- package/dist/mixins.js +1 -2
- package/dist/mssqlDecimalDistinct.js +1 -2
- package/dist/mssqlJsonValueCheck.js +1 -2
- package/dist/mssqlTextStorage.js +1 -2
- package/dist/namespace.js +1 -2
- package/dist/optimisticVersion.js +1 -2
- package/dist/pendingAttribution.js +1 -2
- package/dist/pluginRef.js +1 -2
- package/dist/predicate.js +28 -22
- package/dist/predicateCoercion.js +1 -2
- package/dist/projectedColumn.js +1 -2
- package/dist/queryBuilder.js +7 -2
- package/dist/rawSql.js +1 -2
- package/dist/relations.js +1 -2
- package/dist/relationsRegistry.js +1 -2
- package/dist/replaceInProgress.js +1 -2
- package/dist/requiredColumns.js +1 -2
- package/dist/residency.js +1 -2
- package/dist/retention.js +1 -2
- package/dist/rowDecoder.js +62 -13
- package/dist/rowKey.js +1 -2
- package/dist/rowSchema.js +1 -2
- package/dist/scopeKey.js +1 -2
- package/dist/seed.js +1 -2
- package/dist/snowflake.js +1 -2
- package/dist/sql.d.ts +2746 -3748
- package/dist/sql.js +15 -14
- package/dist/sqlCompiler.js +89 -73
- package/dist/sqlError.js +1 -2
- package/dist/sqlMutation.js +54 -0
- package/dist/sqlPoolCapacity.js +1 -2
- package/dist/sqliteDecimal.js +1 -2
- package/dist/sqliteDecimalAggregateSql.js +1 -2
- package/dist/sqliteDecimalColumnSql.js +1 -2
- package/dist/sqliteDecimalConversion.js +1 -2
- package/dist/sqliteDecimalCte.js +1 -2
- package/dist/sqliteDecimalEncodeSql.js +1 -2
- package/dist/sqliteDecimalOutputs.js +1 -2
- package/dist/sqliteDecimalPredicate.js +1 -2
- package/dist/sqliteDecimalQuery.js +1 -2
- package/dist/sqliteDecimalQueryPlan.js +1 -2
- package/dist/sqliteDecimalResultSql.js +1 -2
- package/dist/sqliteDecimalRowQuery.js +1 -2
- package/dist/sqliteDecimalSetQuery.js +1 -2
- package/dist/sqliteDecimalSource.js +1 -2
- package/dist/sqliteDecimalStorage.js +1 -2
- package/dist/sqliteDecimalSubquery.js +1 -2
- package/dist/sqliteDecimalWindowQuery.js +1 -2
- package/dist/sqliteValueCoercion.js +1 -2
- package/dist/stampId.js +1 -2
- package/dist/storeErrors.js +1 -2
- package/dist/storeRefusal.js +1 -2
- package/dist/stream.js +1 -2
- package/dist/subjectGraph.js +1 -2
- package/dist/table.js +1 -2
- package/dist/tableRegistry.js +1 -2
- package/dist/tenantSelection.js +1 -2
- package/dist/transactionOutcome.js +5 -3
- package/dist/transientContention.js +1 -2
- package/dist/typeId.js +50 -0
- package/dist/typedStore.js +2 -3
- package/dist/upsertUpdate.js +1 -2
- package/dist/vectorEmbedding.js +1 -2
- package/dist/view.js +1 -2
- package/dist/wire.js +1 -2
- package/dist/writeAttribution.js +1 -2
- package/dist/writeRecorder.js +22 -22
- package/package.json +3 -4
|
@@ -7,14 +7,15 @@ import { idStorageOfType as o } from "./columnEquivalence.js";
|
|
|
7
7
|
import { DEPLOY_LEDGER_TABLE as s } from "./deployLedger.js";
|
|
8
8
|
import { SCHEMA_OWNER_TABLE as c } from "./schemaOwnerTable.js";
|
|
9
9
|
import { postgresEnumCheckValues as l } from "./postgresEnumCheck.js";
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
import { sqliteCatalogKey as u, sqliteCatalogName as d } from "./sqliteCatalogName.js";
|
|
11
|
+
import { sqliteNamedUniqueConstraints as f, sqliteUniqueColumnsKey as p } from "./sqliteConstraintIdentity.js";
|
|
12
|
+
import { Effect as m } from "effect";
|
|
13
|
+
// src/migrations/introspect.ts
|
|
14
|
+
var h = (e) => {
|
|
14
15
|
let t = [String(e)], n = e.cause;
|
|
15
16
|
for (let e = 0; e < 6 && n != null; e++) t.push(typeof n == "object" && typeof n.message == "string" ? n.message : String(n)), n = typeof n == "object" ? n.cause : void 0;
|
|
16
17
|
return t.join(" ");
|
|
17
|
-
},
|
|
18
|
+
}, g = (e) => {
|
|
18
19
|
let t = /[`"[]?([A-Za-z_][A-Za-z0-9_]*)[`"\]]?\s*(?:in\b|=)/i.exec(e);
|
|
19
20
|
if (!t) return null;
|
|
20
21
|
let n = [...e.replace(/\\'/g, "'").matchAll(/'((?:[^']|'')*)'/g)].map((e) => e[1].replace(/''/g, "'")).filter((e) => e.length > 0);
|
|
@@ -22,7 +23,7 @@ var p = (e) => {
|
|
|
22
23
|
column: t[1],
|
|
23
24
|
values: n
|
|
24
25
|
};
|
|
25
|
-
},
|
|
26
|
+
}, _ = (e, t) => {
|
|
26
27
|
if (t === "vector" || t === "halfvec") return "vector";
|
|
27
28
|
switch (e) {
|
|
28
29
|
case "text":
|
|
@@ -50,7 +51,7 @@ var p = (e) => {
|
|
|
50
51
|
case "USER-DEFINED": return "text";
|
|
51
52
|
default: return "text";
|
|
52
53
|
}
|
|
53
|
-
},
|
|
54
|
+
}, v = {
|
|
54
55
|
_text: "text",
|
|
55
56
|
_varchar: "text",
|
|
56
57
|
_uuid: "text",
|
|
@@ -66,10 +67,10 @@ var p = (e) => {
|
|
|
66
67
|
_date: "date",
|
|
67
68
|
_jsonb: "json",
|
|
68
69
|
_json: "json"
|
|
69
|
-
},
|
|
70
|
+
}, y = (e) => e === void 0 ? void 0 : v[e], b = (e, t) => e == null || e === "" ? void 0 : { generatedAs: {
|
|
70
71
|
expr: e,
|
|
71
72
|
stored: t
|
|
72
|
-
} },
|
|
73
|
+
} }, x = (e) => {
|
|
73
74
|
switch (e.toUpperCase()) {
|
|
74
75
|
case "CASCADE": return "cascade";
|
|
75
76
|
case "RESTRICT": return "restrict";
|
|
@@ -77,25 +78,25 @@ var p = (e) => {
|
|
|
77
78
|
case "SET DEFAULT": return "noAction";
|
|
78
79
|
default: return "noAction";
|
|
79
80
|
}
|
|
80
|
-
},
|
|
81
|
+
}, S = (e, t) => {
|
|
81
82
|
let n = e !== void 0 && e !== "" ? Number(e) : NaN;
|
|
82
83
|
return Number.isInteger(n) && n > 0 ? n : t;
|
|
83
|
-
},
|
|
84
|
+
}, C = () => S(process.env.VOLTRO_INTROSPECT_BATCH, 20), w = 300, T = () => {
|
|
84
85
|
let e = process.env.VOLTRO_INTROSPECT_TIMEOUT_MS;
|
|
85
|
-
return e !== void 0 && e.trim() === "0" ? 0 :
|
|
86
|
-
},
|
|
86
|
+
return e !== void 0 && e.trim() === "0" ? 0 : S(e, 3e4);
|
|
87
|
+
}, E = (e, t) => {
|
|
87
88
|
let n = Number.isFinite(t) && t >= 1 ? Math.floor(t) : 1, r = [];
|
|
88
89
|
for (let t = 0; t < e.length; t += n) r.push(e.slice(t, t + n));
|
|
89
90
|
return r;
|
|
90
|
-
},
|
|
91
|
-
let n =
|
|
91
|
+
}, D = (e) => {
|
|
92
|
+
let n = T(), r = m.gen(function* () {
|
|
92
93
|
n > 0 && (yield* e.unsafe(`SET LOCAL statement_timeout = ${n}`));
|
|
93
|
-
let r = (t) => e.unsafe("(" + t.map((e) => `'${e.replace(/'/g, "''")}'`).join(", ") + ")"), i = (t) => e.unsafe(String(Math.max(0, Math.trunc(t)))), a =
|
|
94
|
+
let r = (t) => e.unsafe("(" + t.map((e) => `'${e.replace(/'/g, "''")}'`).join(", ") + ")"), i = (t) => e.unsafe(String(Math.max(0, Math.trunc(t)))), a = C(), s = (e, t) => m.gen(function* () {
|
|
94
95
|
let n = [];
|
|
95
|
-
for (let i of
|
|
96
|
+
for (let i of E(e, a)) i.length !== 0 && n.push(...yield* t(r(i)));
|
|
96
97
|
return n;
|
|
97
98
|
}), c = [];
|
|
98
|
-
for (let t = 0;; t +=
|
|
99
|
+
for (let t = 0;; t += w) {
|
|
99
100
|
let n = yield* e`
|
|
100
101
|
SELECT c.relname AS table_name,
|
|
101
102
|
COALESCE(c.reltuples::bigint, 0) AS row_count
|
|
@@ -103,13 +104,13 @@ var p = (e) => {
|
|
|
103
104
|
JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
104
105
|
WHERE n.nspname = current_schema() AND c.relkind = 'r'
|
|
105
106
|
ORDER BY c.relname
|
|
106
|
-
LIMIT ${i(
|
|
107
|
+
LIMIT ${i(w)} OFFSET ${i(t)}
|
|
107
108
|
`;
|
|
108
|
-
if (c.push(...n), n.length <
|
|
109
|
+
if (c.push(...n), n.length < w) break;
|
|
109
110
|
}
|
|
110
111
|
let u = /* @__PURE__ */ new Set(), d = [];
|
|
111
112
|
for (let e of c) u.has(e.table_name) || (u.add(e.table_name), d.push(e));
|
|
112
|
-
let
|
|
113
|
+
let f = d.map((e) => e.table_name), p = yield* s(f, (t) => e`
|
|
113
114
|
SELECT table_name, column_name, data_type, udt_name, is_nullable, column_default,
|
|
114
115
|
character_maximum_length, numeric_precision, numeric_scale,
|
|
115
116
|
is_generated, generation_expression,
|
|
@@ -121,7 +122,7 @@ var p = (e) => {
|
|
|
121
122
|
FROM information_schema.columns col
|
|
122
123
|
WHERE table_schema = current_schema() AND table_name IN ${t}
|
|
123
124
|
ORDER BY table_name, ordinal_position
|
|
124
|
-
`),
|
|
125
|
+
`), h = yield* s(f, (t) => e`
|
|
125
126
|
SELECT rel.relname AS table_name, att.attname AS column_name
|
|
126
127
|
FROM pg_constraint con
|
|
127
128
|
JOIN pg_class rel ON rel.oid = con.conrelid
|
|
@@ -130,7 +131,7 @@ var p = (e) => {
|
|
|
130
131
|
WHERE con.contype = 'p' AND nsp.nspname = current_schema()
|
|
131
132
|
AND rel.relname IN ${t}
|
|
132
133
|
ORDER BY rel.relname, array_position(con.conkey, att.attnum)
|
|
133
|
-
`),
|
|
134
|
+
`), g = yield* s(f, (t) => e`
|
|
134
135
|
SELECT rel.relname AS table_name, con.conname AS constraint_name,
|
|
135
136
|
att.attname AS column_name, array_position(con.conkey, att.attnum) AS position
|
|
136
137
|
FROM pg_constraint con
|
|
@@ -138,7 +139,7 @@ var p = (e) => {
|
|
|
138
139
|
JOIN pg_namespace nsp ON nsp.oid = rel.relnamespace
|
|
139
140
|
JOIN pg_attribute att ON att.attrelid = rel.oid AND att.attnum = ANY (con.conkey)
|
|
140
141
|
WHERE con.contype = 'u' AND nsp.nspname = current_schema() AND rel.relname IN ${t}
|
|
141
|
-
`),
|
|
142
|
+
`), v = yield* s(f, (t) => e`
|
|
142
143
|
SELECT rel.relname AS table_name, att.attname AS column_name, pg_get_constraintdef(con.oid) AS def
|
|
143
144
|
FROM pg_constraint con
|
|
144
145
|
JOIN pg_class rel ON rel.oid = con.conrelid
|
|
@@ -146,16 +147,16 @@ var p = (e) => {
|
|
|
146
147
|
JOIN pg_attribute att ON att.attrelid = rel.oid AND att.attnum = con.conkey[1]
|
|
147
148
|
WHERE con.contype = 'c' AND nsp.nspname = current_schema() AND array_length(con.conkey, 1) = 1
|
|
148
149
|
AND rel.relname IN ${t}
|
|
149
|
-
`),
|
|
150
|
+
`), S = yield* m.orElseSucceed(e`
|
|
150
151
|
SELECT t.typname, e.enumlabel
|
|
151
152
|
FROM pg_type t JOIN pg_enum e ON e.enumtypid = t.oid
|
|
152
153
|
WHERE t.typtype = 'e'
|
|
153
|
-
ORDER BY t.typname, e.enumsortorder`, () => []),
|
|
154
|
-
for (let e of
|
|
155
|
-
let t =
|
|
156
|
-
t ? t.push(e.enumlabel) :
|
|
154
|
+
ORDER BY t.typname, e.enumsortorder`, () => []), T = /* @__PURE__ */ new Map();
|
|
155
|
+
for (let e of S) {
|
|
156
|
+
let t = T.get(e.typname);
|
|
157
|
+
t ? t.push(e.enumlabel) : T.set(e.typname, [e.enumlabel]);
|
|
157
158
|
}
|
|
158
|
-
let D = new Set(
|
|
159
|
+
let D = new Set(T.keys()), O = (yield* m.orElseSucceed(e`SELECT EXISTS (SELECT 1 FROM pg_extension WHERE extname = 'postgis') AS present`, () => []))[0]?.present === !0 ? yield* e`
|
|
159
160
|
SELECT f_table_name AS table_name, f_geometry_column AS column_name,
|
|
160
161
|
'geometry' AS kind, type AS geom_kind, srid
|
|
161
162
|
FROM geometry_columns WHERE f_table_schema = current_schema()
|
|
@@ -167,11 +168,11 @@ var p = (e) => {
|
|
|
167
168
|
geomKind: e.geom_kind,
|
|
168
169
|
srid: e.srid
|
|
169
170
|
}])), A = /* @__PURE__ */ new Map();
|
|
170
|
-
for (let e of
|
|
171
|
+
for (let e of v) {
|
|
171
172
|
let t = l(e.def, e.column_name);
|
|
172
173
|
t !== null && A.set(`${e.table_name}.${e.column_name}`, t);
|
|
173
174
|
}
|
|
174
|
-
let j = yield* s(
|
|
175
|
+
let j = yield* s(f, (t) => e`
|
|
175
176
|
SELECT
|
|
176
177
|
rel.relname AS source_table,
|
|
177
178
|
att.attname AS source_column,
|
|
@@ -197,7 +198,7 @@ var p = (e) => {
|
|
|
197
198
|
WHERE con.contype = 'f' AND nsp.nspname = current_schema()
|
|
198
199
|
AND rel.relname IN ${t}
|
|
199
200
|
ORDER BY rel.relname, con.conname, ck.ord
|
|
200
|
-
`), M = yield* s(
|
|
201
|
+
`), M = yield* s(f, (t) => e`
|
|
201
202
|
WITH ix AS (
|
|
202
203
|
SELECT
|
|
203
204
|
c.relname AS table_name,
|
|
@@ -239,26 +240,26 @@ var p = (e) => {
|
|
|
239
240
|
)
|
|
240
241
|
SELECT * FROM ix ORDER BY table_name, index_name, position
|
|
241
242
|
`), N = /* @__PURE__ */ new Map(), P = /* @__PURE__ */ new Map(), F = /* @__PURE__ */ new Map(), I = /* @__PURE__ */ new Map(), L = /* @__PURE__ */ new Map(), R = /* @__PURE__ */ new Map();
|
|
242
|
-
for (let e of
|
|
243
|
+
for (let e of p) {
|
|
243
244
|
let t = N.get(e.table_name);
|
|
244
245
|
t || (t = [], N.set(e.table_name, t)), t.push(e);
|
|
245
246
|
}
|
|
246
|
-
for (let e of
|
|
247
|
+
for (let e of h) {
|
|
247
248
|
let t = P.get(e.table_name);
|
|
248
249
|
t || (t = /* @__PURE__ */ new Set(), P.set(e.table_name, t)), t.add(e.column_name);
|
|
249
250
|
}
|
|
250
|
-
let
|
|
251
|
-
for (let e of
|
|
252
|
-
let t = `${e.table_name}\u0000${e.constraint_name}`, n =
|
|
251
|
+
let z = /* @__PURE__ */ new Map();
|
|
252
|
+
for (let e of g) {
|
|
253
|
+
let t = `${e.table_name}\u0000${e.constraint_name}`, n = z.get(t);
|
|
253
254
|
n || (n = {
|
|
254
255
|
table: e.table_name,
|
|
255
256
|
columns: []
|
|
256
|
-
},
|
|
257
|
+
}, z.set(t, n)), n.columns.push({
|
|
257
258
|
name: e.column_name,
|
|
258
259
|
position: e.position
|
|
259
260
|
});
|
|
260
261
|
}
|
|
261
|
-
for (let [e, t] of
|
|
262
|
+
for (let [e, t] of z) {
|
|
262
263
|
let n = [...t.columns].sort((e, t) => e.position - t.position).map((e) => e.name);
|
|
263
264
|
if (n.length === 1) {
|
|
264
265
|
let e = F.get(t.table);
|
|
@@ -283,14 +284,14 @@ var p = (e) => {
|
|
|
283
284
|
let n = t.get(e.index_name);
|
|
284
285
|
n || (n = [], t.set(e.index_name, n)), n.push(e);
|
|
285
286
|
}
|
|
286
|
-
let
|
|
287
|
+
let B = [];
|
|
287
288
|
for (let e of d) {
|
|
288
289
|
let n = /* @__PURE__ */ new Set(), r = (N.get(e.table_name) ?? []).filter((e) => !n.has(e.column_name) && (n.add(e.column_name), !0)), i = P.get(e.table_name) ?? /* @__PURE__ */ new Set(), a = F.get(e.table_name) ?? /* @__PURE__ */ new Set(), s = L.get(e.table_name) ?? [], c = new Map(s.map((e) => [e.source_column, e])), l = new Set(r.filter((e) => e.udt_name === "tsvector").map((e) => e.column_name)), u = r.filter((e) => !l.has(e.column_name)).map((t) => {
|
|
289
|
-
let n = i.has(t.column_name) && i.size === 1, r = c.get(t.column_name), s = t.data_type === "USER-DEFINED" && t.udt_name !== void 0 && D.has(t.udt_name), l = s ? "enum" :
|
|
290
|
+
let n = i.has(t.column_name) && i.size === 1, r = c.get(t.column_name), s = t.data_type === "USER-DEFINED" && t.udt_name !== void 0 && D.has(t.udt_name), l = s ? "enum" : _(t.data_type, t.udt_name), u = !r && n && t.column_name === "id", d = r ? "reference" : u ? "id" : l, f = r ? {
|
|
290
291
|
table: r.target_table,
|
|
291
292
|
column: r.target_column,
|
|
292
|
-
onDelete:
|
|
293
|
-
onUpdate:
|
|
293
|
+
onDelete: x(r.delete_rule),
|
|
294
|
+
onUpdate: x(r.update_rule),
|
|
294
295
|
constraintName: r.constraint_name
|
|
295
296
|
} : void 0, p = A.get(`${e.table_name}.${t.column_name}`);
|
|
296
297
|
return {
|
|
@@ -298,16 +299,16 @@ var p = (e) => {
|
|
|
298
299
|
type: d,
|
|
299
300
|
...s ? {
|
|
300
301
|
enumName: t.udt_name,
|
|
301
|
-
enumValues:
|
|
302
|
+
enumValues: T.get(t.udt_name) ?? []
|
|
302
303
|
} : {},
|
|
303
|
-
...d === "array" &&
|
|
304
|
+
...d === "array" && y(t.udt_name) !== void 0 ? { arrayElement: y(t.udt_name) } : {},
|
|
304
305
|
...k.has(`${e.table_name}.${t.column_name}`) ? { spatial: k.get(`${e.table_name}.${t.column_name}`) } : {},
|
|
305
306
|
...u ? { idStorage: o(l) } : {},
|
|
306
307
|
...d === "vector" ? {
|
|
307
308
|
vectorPrecision: t.udt_name === "halfvec" ? "half" : "float32",
|
|
308
309
|
...t.type_modifier !== void 0 && t.type_modifier > 0 ? { vectorDim: t.type_modifier } : {}
|
|
309
310
|
} : {},
|
|
310
|
-
...
|
|
311
|
+
...V(t.data_type, t.character_maximum_length) === void 0 ? {} : { maxLength: V(t.data_type, t.character_maximum_length) },
|
|
311
312
|
...l === "decimal" && typeof t.numeric_precision == "number" ? {
|
|
312
313
|
precision: t.numeric_precision,
|
|
313
314
|
...typeof t.numeric_scale == "number" ? { scale: t.numeric_scale } : {}
|
|
@@ -317,9 +318,9 @@ var p = (e) => {
|
|
|
317
318
|
hasDefault: t.column_default !== null,
|
|
318
319
|
...t.column_default === null ? {} : { defaultValue: t.column_default },
|
|
319
320
|
...f ? { references: f } : {},
|
|
320
|
-
...r ? { referenceStorage: ["integer", "bigint"].includes(
|
|
321
|
+
...r ? { referenceStorage: ["integer", "bigint"].includes(_(t.data_type, t.udt_name)) ? "numeric" : "text" } : {},
|
|
321
322
|
...p ? { oneOf: p } : {},
|
|
322
|
-
...
|
|
323
|
+
...b(t.is_generated === "ALWAYS" ? t.generation_expression ?? "generated" : null, !0) ?? {}
|
|
323
324
|
};
|
|
324
325
|
}), d = [], f = R.get(e.table_name);
|
|
325
326
|
if (f) for (let [n, r] of f) {
|
|
@@ -356,20 +357,20 @@ var p = (e) => {
|
|
|
356
357
|
unique: !0
|
|
357
358
|
});
|
|
358
359
|
let p = Number(e.row_count ?? 0);
|
|
359
|
-
|
|
360
|
+
B.push({
|
|
360
361
|
name: e.table_name,
|
|
361
362
|
columns: u,
|
|
362
363
|
indexes: d,
|
|
363
364
|
...p > 0 ? { rowCount: p } : {}
|
|
364
365
|
});
|
|
365
366
|
}
|
|
366
|
-
return { tables:
|
|
367
|
+
return { tables: B };
|
|
367
368
|
});
|
|
368
|
-
return (n > 0 ? e.withTransaction(r) : r).pipe(
|
|
369
|
-
let t =
|
|
370
|
-
return t.includes("statement timeout") || t.includes("57014") ?
|
|
369
|
+
return (n > 0 ? e.withTransaction(r) : r).pipe(m.catch((e) => {
|
|
370
|
+
let t = h(e).toLowerCase();
|
|
371
|
+
return t.includes("statement timeout") || t.includes("57014") ? m.die(/* @__PURE__ */ Error(`schema introspection exceeded VOLTRO_INTROSPECT_TIMEOUT_MS (${n}ms) — the schema is very large / FK-dense or the database is slow. Raise VOLTRO_INTROSPECT_TIMEOUT_MS, set it to 0 to disable the ceiling, or use DB_DIRECT_URL for a non-pooler connection.`)) : m.fail(e);
|
|
371
372
|
}));
|
|
372
|
-
},
|
|
373
|
+
}, O = (e, t) => {
|
|
373
374
|
switch (e.toLowerCase()) {
|
|
374
375
|
case "varchar":
|
|
375
376
|
case "char":
|
|
@@ -401,22 +402,22 @@ var p = (e) => {
|
|
|
401
402
|
case "json": return "json";
|
|
402
403
|
default: return "text";
|
|
403
404
|
}
|
|
404
|
-
},
|
|
405
|
+
}, k = (e) => e.map((e) => {
|
|
405
406
|
let t = e, n = {};
|
|
406
407
|
for (let e of Object.keys(t)) n[e.toLowerCase()] = t[e];
|
|
407
408
|
return n;
|
|
408
|
-
}),
|
|
409
|
-
let t =
|
|
409
|
+
}), A = (e) => m.gen(function* () {
|
|
410
|
+
let t = k(yield* e`
|
|
410
411
|
SELECT table_name, COALESCE(table_rows, 0) AS table_rows
|
|
411
412
|
FROM information_schema.tables
|
|
412
413
|
WHERE table_schema = DATABASE() AND table_type = 'BASE TABLE'
|
|
413
|
-
ORDER BY table_name`), n =
|
|
414
|
+
ORDER BY table_name`), n = k(yield* e`
|
|
414
415
|
SELECT table_name, column_name, data_type, column_type, is_nullable, column_default, column_key,
|
|
415
416
|
character_maximum_length, numeric_precision, numeric_scale,
|
|
416
417
|
generation_expression, extra, character_set_name
|
|
417
418
|
FROM information_schema.columns
|
|
418
419
|
WHERE table_schema = DATABASE()
|
|
419
|
-
ORDER BY table_name, ordinal_position`), r =
|
|
420
|
+
ORDER BY table_name, ordinal_position`), r = k(yield* e`
|
|
420
421
|
SELECT k.table_name AS source_table,
|
|
421
422
|
k.column_name AS source_column,
|
|
422
423
|
k.referenced_table_name AS target_table,
|
|
@@ -427,7 +428,7 @@ var p = (e) => {
|
|
|
427
428
|
JOIN information_schema.referential_constraints r
|
|
428
429
|
ON k.constraint_name = r.constraint_name
|
|
429
430
|
AND k.table_schema = r.constraint_schema
|
|
430
|
-
WHERE k.table_schema = DATABASE() AND k.referenced_table_name IS NOT NULL`), i =
|
|
431
|
+
WHERE k.table_schema = DATABASE() AND k.referenced_table_name IS NOT NULL`), i = k(yield* e`
|
|
431
432
|
SELECT table_name, index_name, non_unique, column_name, seq_in_index
|
|
432
433
|
FROM information_schema.statistics
|
|
433
434
|
WHERE table_schema = DATABASE() AND index_name <> 'PRIMARY' AND index_type <> 'FULLTEXT'
|
|
@@ -440,41 +441,41 @@ var p = (e) => {
|
|
|
440
441
|
JOIN information_schema.table_constraints tc
|
|
441
442
|
ON tc.constraint_schema = cc.constraint_schema
|
|
442
443
|
AND tc.constraint_name = cc.constraint_name
|
|
443
|
-
WHERE cc.constraint_schema = DATABASE()`.unprepared, c =
|
|
444
|
+
WHERE cc.constraint_schema = DATABASE()`.unprepared, c = k(yield* a.pipe(m.catch(() => s), m.orElseSucceed(() => []))), l = /* @__PURE__ */ new Set(), u = /* @__PURE__ */ new Map();
|
|
444
445
|
for (let e of c) {
|
|
445
446
|
let t = /json_valid\(`?([^`)]+)`?\)/i.exec(e.check_clause);
|
|
446
447
|
if (t) {
|
|
447
448
|
l.add(`${e.table_name}.${t[1]}`);
|
|
448
449
|
continue;
|
|
449
450
|
}
|
|
450
|
-
let n =
|
|
451
|
+
let n = g(e.check_clause);
|
|
451
452
|
n && u.set(`${e.table_name}.${n.column}`, n.values);
|
|
452
453
|
}
|
|
453
|
-
let d = /* @__PURE__ */ new Map(),
|
|
454
|
+
let d = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map(), p = /* @__PURE__ */ new Map();
|
|
454
455
|
for (let e of n) {
|
|
455
456
|
let t = d.get(e.table_name) ?? [];
|
|
456
457
|
t.push(e), d.set(e.table_name, t);
|
|
457
458
|
}
|
|
458
459
|
for (let e of r) {
|
|
459
|
-
let t =
|
|
460
|
-
t.push(e),
|
|
460
|
+
let t = f.get(e.source_table) ?? [];
|
|
461
|
+
t.push(e), f.set(e.source_table, t);
|
|
461
462
|
}
|
|
462
463
|
for (let e of i) {
|
|
463
|
-
let t =
|
|
464
|
-
t || (t = /* @__PURE__ */ new Map(),
|
|
464
|
+
let t = p.get(e.table_name);
|
|
465
|
+
t || (t = /* @__PURE__ */ new Map(), p.set(e.table_name, t));
|
|
465
466
|
let n = t.get(e.index_name) ?? [];
|
|
466
467
|
n.push(e), t.set(e.index_name, n);
|
|
467
468
|
}
|
|
468
|
-
let
|
|
469
|
+
let h = [];
|
|
469
470
|
for (let e of t) {
|
|
470
|
-
let t = d.get(e.table_name) ?? [], n =
|
|
471
|
+
let t = d.get(e.table_name) ?? [], n = f.get(e.table_name) ?? [], r = new Map(n.map((e) => [e.source_column, e])), i = t.filter((e) => e.column_key === "PRI").map((e) => e.column_name), a = /* @__PURE__ */ new Set(), s = p.get(e.table_name);
|
|
471
472
|
if (s) for (let e of s.values()) e.length === 1 && e[0].non_unique === 0 && a.add(e[0].column_name);
|
|
472
473
|
let c = t.map((t) => {
|
|
473
|
-
let n = i.includes(t.column_name) && i.length === 1, s = r.get(t.column_name), c = l.has(`${e.table_name}.${t.column_name}`) ? "json" :
|
|
474
|
+
let n = i.includes(t.column_name) && i.length === 1, s = r.get(t.column_name), c = l.has(`${e.table_name}.${t.column_name}`) ? "json" : O(t.data_type, t.column_type), d = !s && n && t.column_name === "id", f = s ? "reference" : d ? "id" : c, p = s ? {
|
|
474
475
|
table: s.target_table,
|
|
475
476
|
column: s.target_column,
|
|
476
|
-
onDelete:
|
|
477
|
-
onUpdate:
|
|
477
|
+
onDelete: x(s.delete_rule),
|
|
478
|
+
onUpdate: x(s.update_rule),
|
|
478
479
|
constraintName: s.constraint_name
|
|
479
480
|
} : void 0, m = a.has(t.column_name) || n && t.column_name === "id", h = t.column_default === "NULL" ? null : t.column_default, g = u.get(`${e.table_name}.${t.column_name}`), _ = t.data_type.toLowerCase() === "enum" ? [...t.column_type.matchAll(/'((?:[^']|'')*)'/g)].map((e) => e[1].replace(/''/g, "'")) : void 0;
|
|
480
481
|
return {
|
|
@@ -483,7 +484,7 @@ var p = (e) => {
|
|
|
483
484
|
...d ? { idStorage: o(c) } : {},
|
|
484
485
|
...f === "enum" && _ !== void 0 ? { enumValues: _ } : {},
|
|
485
486
|
nullable: t.is_nullable === "YES",
|
|
486
|
-
...
|
|
487
|
+
...V(t.data_type, t.character_maximum_length) === void 0 ? {} : { maxLength: V(t.data_type, t.character_maximum_length) },
|
|
487
488
|
...c === "decimal" && typeof t.numeric_precision == "number" ? {
|
|
488
489
|
precision: t.numeric_precision,
|
|
489
490
|
...typeof t.numeric_scale == "number" ? { scale: t.numeric_scale } : {}
|
|
@@ -492,41 +493,41 @@ var p = (e) => {
|
|
|
492
493
|
hasDefault: h !== null,
|
|
493
494
|
...h === null ? {} : { defaultValue: h },
|
|
494
495
|
...p ? { references: p } : {},
|
|
495
|
-
...s ? { referenceStorage: ["integer", "bigint"].includes(
|
|
496
|
+
...s ? { referenceStorage: ["integer", "bigint"].includes(O(t.data_type, t.column_type)) ? "numeric" : "text" } : {},
|
|
496
497
|
...g ? { oneOf: g } : {},
|
|
497
|
-
...
|
|
498
|
+
...b(t.generation_expression, /STORED/i.test(t.extra ?? "")) ?? {},
|
|
498
499
|
...t.character_set_name !== null && t.character_set_name !== void 0 && f !== "json" ? { charset: t.character_set_name } : {}
|
|
499
500
|
};
|
|
500
|
-
}),
|
|
501
|
+
}), m = new Set(n.map((e) => e.source_column)), g = [];
|
|
501
502
|
if (s) for (let [t, n] of s) {
|
|
502
503
|
let r = [...n].sort((e, t) => e.seq_in_index - t.seq_in_index);
|
|
503
|
-
|
|
504
|
+
r.length === 1 && r[0].non_unique === 0 || r.length === 1 && r[0].non_unique !== 0 && m.has(r[0].column_name) && t !== `${e.table_name}_${r[0].column_name}_idx` || g.push({
|
|
504
505
|
name: t,
|
|
505
506
|
table: e.table_name,
|
|
506
507
|
columns: r.map((e) => e.column_name),
|
|
507
508
|
unique: r[0].non_unique === 0
|
|
508
|
-
})
|
|
509
|
+
});
|
|
509
510
|
}
|
|
510
|
-
i.length > 0 &&
|
|
511
|
+
i.length > 0 && g.push({
|
|
511
512
|
name: `${e.table_name}_pkey`,
|
|
512
513
|
table: e.table_name,
|
|
513
514
|
columns: i,
|
|
514
515
|
unique: !0
|
|
515
516
|
});
|
|
516
517
|
let _ = Number(e.table_rows ?? 0);
|
|
517
|
-
|
|
518
|
+
h.push({
|
|
518
519
|
name: e.table_name,
|
|
519
520
|
columns: c,
|
|
520
|
-
indexes:
|
|
521
|
+
indexes: g,
|
|
521
522
|
..._ > 0 ? { rowCount: _ } : {}
|
|
522
523
|
});
|
|
523
524
|
}
|
|
524
|
-
return { tables:
|
|
525
|
-
}),
|
|
525
|
+
return { tables: h };
|
|
526
|
+
}), j = (t) => {
|
|
526
527
|
if (e(t)) return "decimal";
|
|
527
528
|
let n = t.toUpperCase();
|
|
528
529
|
return n.includes("INT") ? "integer" : n.includes("CHAR") || n.includes("CLOB") || n.includes("TEXT") ? "text" : n.includes("REAL") || n.includes("FLOA") || n.includes("DOUB") ? "real" : n.includes("BLOB") ? "bytes" : /^(NUMERIC|DECIMAL)\b/.test(n.trim()) ? "decimal" : "text";
|
|
529
|
-
},
|
|
530
|
+
}, M = (e) => e === 1 || e === !0, N = [
|
|
530
531
|
"content",
|
|
531
532
|
"data",
|
|
532
533
|
"idx",
|
|
@@ -535,35 +536,36 @@ var p = (e) => {
|
|
|
535
536
|
"segments",
|
|
536
537
|
"segdir",
|
|
537
538
|
"stat"
|
|
538
|
-
],
|
|
539
|
+
], P = (t) => m.gen(function* () {
|
|
539
540
|
let n = yield* t`
|
|
540
541
|
SELECT name, sql FROM sqlite_master
|
|
541
542
|
WHERE type = 'table' AND name NOT LIKE 'sqlite_%'
|
|
542
|
-
ORDER BY name`, r = (e) =>
|
|
543
|
-
|
|
544
|
-
let
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
543
|
+
ORDER BY name`, r = new Map(n.map((e) => [u(e.name), d("table", e.name, e.sql)])), i = yield* t`
|
|
544
|
+
SELECT name, sql FROM sqlite_master WHERE type = 'index'`, s = new Map(i.map((e) => [e.name, e.sql])), c = (e) => `'${e.replace(/'/g, "''")}'`, l = [], m = n.filter((e) => /^\s*CREATE\s+VIRTUAL\s+TABLE\b/i.test(e.sql ?? "")).map((e) => e.name), h = new Set(m);
|
|
545
|
+
for (let e of m) for (let t of N) h.add(`${e}_${t}`);
|
|
546
|
+
let g = (e) => h.has(e);
|
|
547
|
+
for (let { name: i, sql: m } of n.filter((e) => !g(e.name))) {
|
|
548
|
+
let n = r.get(u(i)) ?? i, h = /* @__PURE__ */ new Map();
|
|
549
|
+
for (let e of (m ?? "").matchAll(/CHECK\s*\(\s*"([^"]+)"\s+IN\s*\(([^)]*)\)/gi)) {
|
|
548
550
|
let t = [...e[2].matchAll(/'((?:[^']|'')*)'/g)].map((e) => e[1].replace(/''/g, "'"));
|
|
549
|
-
t.length > 0 &&
|
|
551
|
+
t.length > 0 && h.set(e[1], t);
|
|
550
552
|
}
|
|
551
|
-
let
|
|
552
|
-
for (let e of
|
|
553
|
-
let n = (yield* t.unsafe(`PRAGMA index_info(${
|
|
554
|
-
if (
|
|
555
|
-
let
|
|
556
|
-
|
|
553
|
+
let g = yield* t.unsafe(`PRAGMA table_xinfo(${c(n)})`), _ = yield* t.unsafe(`PRAGMA foreign_key_list(${c(n)})`), v = yield* t.unsafe(`PRAGMA index_list(${c(n)})`), y = new Map(_.map((e) => [e.from, e])), S = g.filter((e) => e.pk > 0).sort((e, t) => e.pk - t.pk).map((e) => e.name), C = new Map(g.map((e) => [e.name.toLowerCase(), e.name])), w = /* @__PURE__ */ new Map(), T = /* @__PURE__ */ new Map(), E = /* @__PURE__ */ new Set();
|
|
554
|
+
for (let e of v) {
|
|
555
|
+
let n = (yield* t.unsafe(`PRAGMA index_info(${c(e.name)})`)).map((e) => e.name).filter((e) => e !== null).map((e) => C.get(e.toLowerCase()) ?? e);
|
|
556
|
+
if (w.set(e.name, n), e.partial !== void 0 && M(e.partial)) {
|
|
557
|
+
let t = a(s.get(e.name) ?? "");
|
|
558
|
+
t !== void 0 && T.set(e.name, t);
|
|
557
559
|
}
|
|
558
|
-
!
|
|
560
|
+
!T.has(e.name) && M(e.unique) && n.length === 1 && E.add(n[0]);
|
|
559
561
|
}
|
|
560
|
-
let
|
|
561
|
-
let
|
|
562
|
-
table: i.table,
|
|
562
|
+
let D = g.map((t) => {
|
|
563
|
+
let n = S.length === 1 && S[0] === t.name, i = y.get(t.name), a = j(t.type), s = e(t.type), c = !i && n && t.name === "id", l = i ? "reference" : c ? "id" : a, d = i ? {
|
|
564
|
+
table: r.get(u(i.table)) ?? i.table,
|
|
563
565
|
column: i.to,
|
|
564
|
-
onDelete:
|
|
565
|
-
onUpdate:
|
|
566
|
-
} : void 0,
|
|
566
|
+
onDelete: x(i.on_delete),
|
|
567
|
+
onUpdate: x(i.on_update)
|
|
568
|
+
} : void 0, f = h.get(t.name);
|
|
567
569
|
return {
|
|
568
570
|
name: t.name,
|
|
569
571
|
type: l,
|
|
@@ -572,42 +574,42 @@ var p = (e) => {
|
|
|
572
574
|
sqliteDecimalEncoding: "sortable-v1"
|
|
573
575
|
} : {},
|
|
574
576
|
...c ? { idStorage: o(a) } : {},
|
|
575
|
-
nullable: t.notnull === 0 && !(
|
|
576
|
-
unique:
|
|
577
|
+
nullable: t.notnull === 0 && !(n && t.type.trim().toUpperCase() === "INTEGER" && !v.some((e) => e.origin === "pk")),
|
|
578
|
+
unique: E.has(t.name) || n && t.name === "id",
|
|
577
579
|
hasDefault: t.dflt_value !== null,
|
|
578
580
|
...t.dflt_value === null ? {} : { defaultValue: t.dflt_value },
|
|
579
|
-
...
|
|
580
|
-
...i ? { referenceStorage: ["integer", "bigint"].includes(
|
|
581
|
-
...
|
|
582
|
-
...
|
|
581
|
+
...d ? { references: d } : {},
|
|
582
|
+
...i ? { referenceStorage: ["integer", "bigint"].includes(j(t.type)) ? "numeric" : "text" } : {},
|
|
583
|
+
...f ? { oneOf: f } : {},
|
|
584
|
+
...b(t.hidden === 2 || t.hidden === 3 ? "generated" : null, t.hidden === 3) ?? {}
|
|
583
585
|
};
|
|
584
|
-
}),
|
|
585
|
-
for (let e of
|
|
586
|
+
}), O = new Set(_.map((e) => e.from)), k, A = [];
|
|
587
|
+
for (let e of v) {
|
|
586
588
|
if (e.origin === "pk") continue;
|
|
587
|
-
let t =
|
|
588
|
-
if (
|
|
589
|
-
let
|
|
590
|
-
|
|
591
|
-
name:
|
|
592
|
-
table:
|
|
589
|
+
let t = w.get(e.name) ?? [], r = T.get(e.name);
|
|
590
|
+
if (r === void 0 && t.length === 1 && M(e.unique) || r === void 0 && t.length === 1 && !M(e.unique) && O.has(t[0]) && e.name.toLowerCase() !== `${n}_${t[0]}_idx`.toLowerCase()) continue;
|
|
591
|
+
let i = d("index", e.name, s.get(e.name) ?? null), a = e.origin === "u" && r === void 0 && M(e.unique) ? (k ??= f(m ?? "")).get(p(t)) ?? i : i;
|
|
592
|
+
A.push({
|
|
593
|
+
name: a,
|
|
594
|
+
table: n,
|
|
593
595
|
columns: t,
|
|
594
|
-
unique:
|
|
595
|
-
...
|
|
596
|
+
unique: M(e.unique),
|
|
597
|
+
...r === void 0 ? {} : { where: r }
|
|
596
598
|
});
|
|
597
599
|
}
|
|
598
|
-
|
|
599
|
-
name: `${
|
|
600
|
-
table:
|
|
601
|
-
columns: h,
|
|
602
|
-
unique: !0
|
|
603
|
-
}), i.push({
|
|
604
|
-
name: s,
|
|
600
|
+
S.length > 0 && A.push({
|
|
601
|
+
name: `${n}_pkey`,
|
|
602
|
+
table: n,
|
|
605
603
|
columns: S,
|
|
606
|
-
|
|
604
|
+
unique: !0
|
|
605
|
+
}), l.push({
|
|
606
|
+
name: n,
|
|
607
|
+
columns: D,
|
|
608
|
+
indexes: A
|
|
607
609
|
});
|
|
608
610
|
}
|
|
609
|
-
return { tables:
|
|
610
|
-
}),
|
|
611
|
+
return { tables: l };
|
|
612
|
+
}), F = (e) => {
|
|
611
613
|
switch (e.toLowerCase()) {
|
|
612
614
|
case "int":
|
|
613
615
|
case "smallint":
|
|
@@ -629,7 +631,7 @@ var p = (e) => {
|
|
|
629
631
|
case "image": return "bytes";
|
|
630
632
|
default: return "text";
|
|
631
633
|
}
|
|
632
|
-
},
|
|
634
|
+
}, I = (e) => e === !0 || e === 1, L = (e) => m.gen(function* () {
|
|
633
635
|
let t = yield* e`
|
|
634
636
|
SELECT TABLE_NAME AS table_name FROM INFORMATION_SCHEMA.TABLES
|
|
635
637
|
WHERE TABLE_TYPE = 'BASE TABLE' ORDER BY TABLE_NAME`, n = yield* e`
|
|
@@ -637,7 +639,7 @@ var p = (e) => {
|
|
|
637
639
|
IS_NULLABLE AS is_nullable, COLUMN_DEFAULT AS column_default,
|
|
638
640
|
CHARACTER_MAXIMUM_LENGTH AS character_maximum_length,
|
|
639
641
|
NUMERIC_PRECISION AS numeric_precision, NUMERIC_SCALE AS numeric_scale
|
|
640
|
-
FROM INFORMATION_SCHEMA.COLUMNS ORDER BY TABLE_NAME, ORDINAL_POSITION`, a = yield*
|
|
642
|
+
FROM INFORMATION_SCHEMA.COLUMNS ORDER BY TABLE_NAME, ORDINAL_POSITION`, a = yield* m.orElseSucceed(e`
|
|
641
643
|
SELECT t.name AS table_name, c.name AS column_name, cc.definition AS definition,
|
|
642
644
|
cc.is_persisted AS is_persisted
|
|
643
645
|
FROM sys.computed_columns cc
|
|
@@ -669,131 +671,130 @@ var p = (e) => {
|
|
|
669
671
|
JOIN sys.tables t ON t.object_id = cc.parent_object_id
|
|
670
672
|
LEFT JOIN sys.columns c ON c.object_id = cc.parent_object_id AND c.column_id = cc.parent_column_id`, d = /* @__PURE__ */ new Map();
|
|
671
673
|
for (let e of u) {
|
|
672
|
-
let t =
|
|
674
|
+
let t = g(e.def);
|
|
673
675
|
t?.column === e.column_name && d.set(`${e.table_name}.${e.column_name}`, t.values);
|
|
674
676
|
}
|
|
675
|
-
let
|
|
677
|
+
let f = /* @__PURE__ */ new Map();
|
|
676
678
|
for (let e of n) {
|
|
677
|
-
let t =
|
|
678
|
-
t.push(e),
|
|
679
|
+
let t = f.get(e.table_name) ?? [];
|
|
680
|
+
t.push(e), f.set(e.table_name, t);
|
|
679
681
|
}
|
|
680
|
-
let
|
|
682
|
+
let p = /* @__PURE__ */ new Map();
|
|
681
683
|
for (let e of c) {
|
|
682
|
-
let t =
|
|
683
|
-
t.push(e),
|
|
684
|
+
let t = p.get(e.source_table) ?? [];
|
|
685
|
+
t.push(e), p.set(e.source_table, t);
|
|
684
686
|
}
|
|
685
|
-
let
|
|
687
|
+
let h = /* @__PURE__ */ new Map();
|
|
686
688
|
for (let e of l) {
|
|
687
|
-
let t =
|
|
688
|
-
t || (t = /* @__PURE__ */ new Map(),
|
|
689
|
+
let t = h.get(e.table_name);
|
|
690
|
+
t || (t = /* @__PURE__ */ new Map(), h.set(e.table_name, t));
|
|
689
691
|
let n = t.get(e.index_name) ?? [];
|
|
690
692
|
n.push(e), t.set(e.index_name, n);
|
|
691
693
|
}
|
|
692
694
|
let _ = [];
|
|
693
695
|
for (let { table_name: e } of t) {
|
|
694
|
-
let t =
|
|
696
|
+
let t = f.get(e) ?? [], n = p.get(e) ?? [], a = new Map(n.map((e) => [e.source_column, e])), c = new Set(n.map((e) => e.source_column)), l = h.get(e), m = [], g = /* @__PURE__ */ new Set();
|
|
695
697
|
if (l) for (let [, e] of l) {
|
|
696
698
|
let t = [...e].sort((e, t) => e.key_ordinal - t.key_ordinal);
|
|
697
|
-
if (
|
|
698
|
-
else t[0].predicate == null &&
|
|
699
|
+
if (I(t[0].is_primary)) for (let e of t) m.push(e.column_name);
|
|
700
|
+
else t[0].predicate == null && I(t[0].is_unique) && t.length === 1 && g.add(t[0].column_name);
|
|
699
701
|
}
|
|
700
|
-
let
|
|
701
|
-
let n =
|
|
702
|
+
let v = t.map((t) => {
|
|
703
|
+
let n = m.length === 1 && m[0] === t.column_name, c = a.get(t.column_name), l = F(t.data_type), f = !c && n && t.column_name === "id", p = c ? "reference" : f ? "id" : l, h = c ? {
|
|
702
704
|
table: c.target_table,
|
|
703
705
|
column: c.target_column,
|
|
704
|
-
onDelete:
|
|
705
|
-
onUpdate:
|
|
706
|
+
onDelete: R(c.delete_rule),
|
|
707
|
+
onUpdate: R(c.update_rule),
|
|
706
708
|
constraintName: c.constraint_name
|
|
707
|
-
} : void 0, _ = t.column_default === null ? null :
|
|
709
|
+
} : void 0, _ = t.column_default === null ? null : z(t.column_default), v = d.get(`${e}.${t.column_name}`), y = u.flatMap((n) => {
|
|
708
710
|
if (n.table_name !== e || n.column_name !== null && n.column_name !== t.column_name) return [];
|
|
709
711
|
let i = r(t.column_name, n.def);
|
|
710
712
|
return i ? [{
|
|
711
713
|
name: n.constraint_name,
|
|
712
714
|
validation: i,
|
|
713
|
-
enabled: !
|
|
714
|
-
trusted: !
|
|
715
|
+
enabled: !I(n.is_disabled),
|
|
716
|
+
trusted: !I(n.is_not_trusted)
|
|
715
717
|
}] : [];
|
|
716
|
-
}).sort((e, t) => e.name.localeCompare(t.name)), x = i(
|
|
718
|
+
}).sort((e, t) => e.name.localeCompare(t.name)), x = i(y);
|
|
717
719
|
return {
|
|
718
720
|
name: t.column_name,
|
|
719
|
-
type:
|
|
720
|
-
...
|
|
721
|
+
type: p,
|
|
722
|
+
...f ? { idStorage: o(l) } : {},
|
|
721
723
|
nullable: t.is_nullable === "YES",
|
|
722
|
-
...
|
|
724
|
+
...V(t.data_type, t.character_maximum_length) === void 0 ? {} : { maxLength: V(t.data_type, t.character_maximum_length) },
|
|
723
725
|
...l === "decimal" && typeof t.numeric_precision == "number" ? {
|
|
724
726
|
precision: t.numeric_precision,
|
|
725
727
|
...typeof t.numeric_scale == "number" ? { scale: t.numeric_scale } : {}
|
|
726
728
|
} : {},
|
|
727
|
-
unique:
|
|
729
|
+
unique: g.has(t.column_name) || n && t.column_name === "id",
|
|
728
730
|
hasDefault: _ !== null,
|
|
729
731
|
..._ === null ? {} : { defaultValue: _ },
|
|
730
|
-
...
|
|
731
|
-
...c ? { referenceStorage: ["integer", "bigint"].includes(
|
|
732
|
-
...
|
|
733
|
-
...
|
|
732
|
+
...h ? { references: h } : {},
|
|
733
|
+
...c ? { referenceStorage: ["integer", "bigint"].includes(F(t.data_type)) ? "numeric" : "text" } : {},
|
|
734
|
+
...v ? { oneOf: v } : {},
|
|
735
|
+
...y.length > 0 ? { jsonChecks: y } : {},
|
|
734
736
|
...x ? { jsonValidation: x } : {},
|
|
735
|
-
...
|
|
737
|
+
...b(s.get(`${e}.${t.column_name}`)?.definition ?? null, I(s.get(`${e}.${t.column_name}`)?.is_persisted ?? !1)) ?? {}
|
|
736
738
|
};
|
|
737
|
-
}),
|
|
739
|
+
}), y = [];
|
|
738
740
|
if (l) for (let [t, n] of l) {
|
|
739
741
|
let r = [...n].sort((e, t) => e.key_ordinal - t.key_ordinal);
|
|
740
|
-
if (
|
|
742
|
+
if (I(r[0].is_primary)) continue;
|
|
741
743
|
let i = r[0].predicate ?? void 0;
|
|
742
|
-
i === void 0 && r.length === 1 &&
|
|
744
|
+
i === void 0 && r.length === 1 && I(r[0].is_unique) || (i !== void 0 || r.length !== 1 || I(r[0].is_unique) || !c.has(r[0].column_name) || t === `${e}_${r[0].column_name}_idx`) && y.push({
|
|
743
745
|
name: t,
|
|
744
746
|
table: e,
|
|
745
747
|
columns: r.map((e) => e.column_name),
|
|
746
|
-
unique:
|
|
748
|
+
unique: I(r[0].is_unique),
|
|
747
749
|
...i === void 0 ? {} : { where: i }
|
|
748
750
|
});
|
|
749
751
|
}
|
|
750
|
-
|
|
752
|
+
m.length > 0 && y.push({
|
|
751
753
|
name: `${e}_pkey`,
|
|
752
754
|
table: e,
|
|
753
|
-
columns:
|
|
755
|
+
columns: m,
|
|
754
756
|
unique: !0
|
|
755
757
|
}), _.push({
|
|
756
758
|
name: e,
|
|
757
|
-
columns:
|
|
758
|
-
indexes:
|
|
759
|
+
columns: v,
|
|
760
|
+
indexes: y
|
|
759
761
|
});
|
|
760
762
|
}
|
|
761
763
|
return { tables: _ };
|
|
762
|
-
}),
|
|
764
|
+
}), R = (e) => {
|
|
763
765
|
switch (e.toUpperCase().replace(/_/g, " ")) {
|
|
764
766
|
case "CASCADE": return "cascade";
|
|
765
767
|
case "SET NULL": return "setNull";
|
|
766
768
|
case "SET DEFAULT": return "noAction";
|
|
767
769
|
default: return "noAction";
|
|
768
770
|
}
|
|
769
|
-
},
|
|
771
|
+
}, z = (e) => {
|
|
770
772
|
let t = e.trim();
|
|
771
773
|
for (; t.startsWith("(") && t.endsWith(")");) t = t.slice(1, -1).trim();
|
|
772
774
|
return t.startsWith("N'") && t.endsWith("'") ? t = t.slice(2, -1) : t.startsWith("'") && t.endsWith("'") && (t = t.slice(1, -1)), t;
|
|
773
|
-
},
|
|
775
|
+
}, B = /* @__PURE__ */ new Set([
|
|
774
776
|
"character varying",
|
|
775
777
|
"varchar",
|
|
776
778
|
"nvarchar",
|
|
777
779
|
"char",
|
|
778
780
|
"character",
|
|
779
781
|
"nchar"
|
|
780
|
-
]),
|
|
781
|
-
if (!
|
|
782
|
+
]), V = (e, t) => {
|
|
783
|
+
if (!B.has(e.toLowerCase())) return;
|
|
782
784
|
let n = Number(t);
|
|
783
785
|
if (!(!Number.isFinite(n) || n <= 0)) return n;
|
|
784
|
-
},
|
|
786
|
+
}, H = /* @__PURE__ */ new Set([
|
|
785
787
|
n,
|
|
786
788
|
s,
|
|
787
789
|
c,
|
|
788
790
|
"_voltro_plugin_migrations"
|
|
789
|
-
]),
|
|
790
|
-
mysql: () =>
|
|
791
|
-
mssql: () =>
|
|
792
|
-
sqlite: () =>
|
|
793
|
-
orElse: () =>
|
|
794
|
-
}).pipe(
|
|
791
|
+
]), U = (e) => e.onDialectOrElse({
|
|
792
|
+
mysql: () => A(e),
|
|
793
|
+
mssql: () => L(e),
|
|
794
|
+
sqlite: () => P(e),
|
|
795
|
+
orElse: () => D(e)
|
|
796
|
+
}).pipe(m.map((e) => ({
|
|
795
797
|
...e,
|
|
796
|
-
tables: e.tables.filter((e) => !
|
|
798
|
+
tables: e.tables.filter((e) => !H.has(e.name))
|
|
797
799
|
})));
|
|
798
|
-
|
|
799
|
-
export { w as chunkTables, V as introspectSchema, h as mapPgType, m as parseEnumCheck };
|
|
800
|
+
export { E as chunkTables, U as introspectSchema, _ as mapPgType, g as parseEnumCheck };
|