qubu 0.0.0 → 0.3.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/canonical-BbnqavJm.mjs +972 -0
- package/dist/codegen.d.mts +107 -0
- package/dist/codegen.mjs +1199 -0
- package/dist/column-CXMxx8Hq.mjs +118 -0
- package/dist/complete-D5Djh-zo.mjs +1788 -0
- package/dist/complete-types-BdFqUfbb.d.mts +371 -0
- package/dist/core.d.mts +33 -0
- package/dist/core.mjs +36 -0
- package/dist/ddl.d.mts +118 -0
- package/dist/ddl.mjs +1120 -0
- package/dist/dialect-b2-Z6uBF.mjs +13 -0
- package/dist/diff.d.mts +2 -0
- package/dist/diff.mjs +883 -0
- package/dist/drizzle-mysql.d.mts +24 -0
- package/dist/drizzle-mysql.mjs +72 -0
- package/dist/drizzle-postgres.d.mts +24 -0
- package/dist/drizzle-postgres.mjs +73 -0
- package/dist/drizzle-sqlite.d.mts +24 -0
- package/dist/drizzle-sqlite.mjs +82 -0
- package/dist/drizzle.d.mts +13 -0
- package/dist/drizzle.mjs +2 -0
- package/dist/errors-BGCoLe_r.mjs +14 -0
- package/dist/errors-Dxv73YJu.mjs +26 -0
- package/dist/explain-CkIK13L_.mjs +98 -0
- package/dist/index-Ds7-mhJi.d.mts +146 -0
- package/dist/index-Dug5HnLB.d.mts +204 -0
- package/dist/index.d.mts +2 -0
- package/dist/index.mjs +1276 -0
- package/dist/introspection.d.mts +117 -0
- package/dist/introspection.mjs +4341 -0
- package/dist/json-CUZlv4HT.mjs +169 -0
- package/dist/migration.d.mts +215 -0
- package/dist/migration.mjs +1161 -0
- package/dist/mysql-DqkqXB6A.mjs +355 -0
- package/dist/mysql.d.mts +5 -0
- package/dist/mysql.mjs +50 -0
- package/dist/naming-QVCOnSj2.mjs +20 -0
- package/dist/omit-OxV58AwX.mjs +5 -0
- package/dist/on-conflict-BxnxubMb.mjs +143 -0
- package/dist/postgres-DEBBeh52.mjs +235 -0
- package/dist/postgres.d.mts +123 -0
- package/dist/postgres.mjs +52 -0
- package/dist/registry-BufIskVN.mjs +569 -0
- package/dist/relational-DCZrrNia.mjs +77 -0
- package/dist/runtime-BTr-MTlo.mjs +193 -0
- package/dist/schema.d.mts +2 -0
- package/dist/schema.mjs +5 -0
- package/dist/serialize-PF1cfH2P.mjs +556 -0
- package/dist/snapshot-CWPgzxNx.mjs +392 -0
- package/dist/snapshot.d.mts +4 -0
- package/dist/snapshot.mjs +8 -0
- package/dist/source-DUoJVXmL.mjs +68 -0
- package/dist/sqlite-BU6DBxef.mjs +320 -0
- package/dist/sqlite.d.mts +5 -0
- package/dist/sqlite.mjs +48 -0
- package/dist/standard-BTVYKh_F.mjs +12 -0
- package/dist/table-llv9tsZ8.mjs +384 -0
- package/dist/types-4Q076HKo.d.mts +3636 -0
- package/dist/types-BX0mckiU.d.mts +644 -0
- package/dist/types-Cec0xzo4.mjs +116 -0
- package/dist/types-H4vyCw8_.d.mts +45 -0
- package/dist/value-BvilP0oz.mjs +29 -0
- package/dist/vite/ambient.d.ts +449 -0
- package/dist/vite.d.mts +35 -0
- package/dist/vite.mjs +498 -0
- package/docs/config.json +21 -0
- package/docs/dialects-and-execution.md +427 -0
- package/docs/getting-started.md +96 -0
- package/docs/guides/compose-queries.md +225 -0
- package/docs/guides/drizzle.md +130 -0
- package/docs/guides/extensions/dialects.md +40 -0
- package/docs/guides/extensions/overview.md +36 -0
- package/docs/guides/extensions/sources-and-clauses.md +82 -0
- package/docs/guides/extensions/typed-expressions.md +94 -0
- package/docs/guides/extensions/unsafe-syntax.md +27 -0
- package/docs/guides/json.md +65 -0
- package/docs/guides/mutations.md +138 -0
- package/docs/guides/select/conditions.md +110 -0
- package/docs/guides/select/grouping-and-windows.md +82 -0
- package/docs/guides/select/ordering-and-pagination.md +78 -0
- package/docs/guides/select/overview.md +139 -0
- package/docs/guides/sql-templates.md +157 -0
- package/docs/guides/vite-plugin.md +92 -0
- package/docs/index.md +111 -0
- package/docs/query-model/fragments.md +109 -0
- package/docs/query-model/result-shapes.md +125 -0
- package/docs/query-model/source-scope.md +182 -0
- package/docs/reference/introspection-support.md +196 -0
- package/docs/reference/mysql-snapshot.md +55 -0
- package/docs/reference/postgres-snapshot.md +61 -0
- package/docs/reference/sqlite-snapshot.md +53 -0
- package/docs/reference/supported-surface.md +104 -0
- package/docs/schema/catalog-model.md +58 -0
- package/docs/schema/code-generation.md +139 -0
- package/docs/schema/columns-and-writes.md +130 -0
- package/docs/schema/constraints-and-indexes.md +180 -0
- package/docs/schema/ddl-emission.md +75 -0
- package/docs/schema/diff.md +75 -0
- package/docs/schema/introspection.md +214 -0
- package/docs/schema/migration-plans.md +76 -0
- package/docs/schema/snapshots.md +93 -0
- package/docs/schema/storage-and-schema-sql.md +104 -0
- package/docs/schema/tables-and-names.md +106 -0
- package/docs/sql-semantic-types.md +141 -0
- package/docs/troubleshooting.md +151 -0
- package/package.json +132 -10
- package/skills/qubu/SKILL.md +42 -0
- package/skills/qubu/agents/openai.yaml +6 -0
- package/readme.md +0 -1
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { A as isValidSchemaObjectName, _ as isUnsafeSchemaSql, m as validateConstraintDialect, w as validateIndexDialect, y as renderSchemaExpression } from "./registry-BufIskVN.mjs";
|
|
2
|
+
import { t as createSchemaDialect } from "./dialect-b2-Z6uBF.mjs";
|
|
3
|
+
import { a as toSnapshotJsonValue } from "./canonical-BbnqavJm.mjs";
|
|
4
|
+
import { n as createSchemaSnapshot, s as tryCreateSchemaSnapshot } from "./serialize-PF1cfH2P.mjs";
|
|
5
|
+
import { postgresDialect } from "./postgres.mjs";
|
|
6
|
+
//#region src/snapshot/postgres.ts
|
|
7
|
+
/** PostgreSQL's v1 snapshot extension identity. */
|
|
8
|
+
const postgresSnapshotDialect = Object.freeze({
|
|
9
|
+
name: "postgresql",
|
|
10
|
+
version: 1
|
|
11
|
+
});
|
|
12
|
+
var PostgresSnapshotDialectError = class extends TypeError {
|
|
13
|
+
code = "dialect-mismatch";
|
|
14
|
+
};
|
|
15
|
+
const postgresStorageTypes = Object.freeze({
|
|
16
|
+
integer: "INTEGER",
|
|
17
|
+
numeric: "NUMERIC",
|
|
18
|
+
text: "TEXT",
|
|
19
|
+
boolean: "BOOLEAN",
|
|
20
|
+
date: "DATE",
|
|
21
|
+
timestamp: "TIMESTAMP",
|
|
22
|
+
uuid: "UUID",
|
|
23
|
+
json: "JSONB",
|
|
24
|
+
bigint: "BIGINT",
|
|
25
|
+
binary: "BYTEA"
|
|
26
|
+
});
|
|
27
|
+
/** PostgreSQL's query dialect plus its schema metadata behavior. */
|
|
28
|
+
const postgresSchemaDialect = createSchemaDialect(postgresDialect(), {
|
|
29
|
+
version: 1,
|
|
30
|
+
validate: validatePostgresSchema,
|
|
31
|
+
encodeStorage(storage, context) {
|
|
32
|
+
return encodePostgresStorage(storage, context.dialect);
|
|
33
|
+
},
|
|
34
|
+
encodeExpression(expression, context) {
|
|
35
|
+
return encodePostgresExpression(expression, context.mode, context.dialect);
|
|
36
|
+
},
|
|
37
|
+
encodeDialectExtension(extension, context) {
|
|
38
|
+
return encodePostgresExtension(extension, context.dialect);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
/** Snapshot adapter retaining the historical adapter-shaped entry point. */
|
|
42
|
+
const postgresSnapshotAdapter = Object.freeze({ dialect: postgresSchemaDialect });
|
|
43
|
+
/** Create a canonical PostgreSQL schema snapshot. */
|
|
44
|
+
function createPostgresSchemaSnapshot(schema, options = {}) {
|
|
45
|
+
return createSchemaSnapshot(schema, {
|
|
46
|
+
...options,
|
|
47
|
+
adapter: postgresSnapshotAdapter
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/** Return PostgreSQL capability diagnostics without throwing. */
|
|
51
|
+
function tryCreatePostgresSchemaSnapshot(schema, options = {}) {
|
|
52
|
+
return tryCreateSchemaSnapshot(schema, {
|
|
53
|
+
...options,
|
|
54
|
+
adapter: postgresSnapshotAdapter
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
function encodePostgresStorage(storage, dialect) {
|
|
58
|
+
if (storage.kind === "native") {
|
|
59
|
+
if (storage.dialect !== dialect.name) throw new TypeError(`PostgreSQL storage cannot encode a native declaration owned by "${storage.dialect}"`);
|
|
60
|
+
if (storage.type.trim().length === 0) throw new TypeError("PostgreSQL native storage declarations cannot be empty");
|
|
61
|
+
return {
|
|
62
|
+
kind: "native",
|
|
63
|
+
dialect: dialect.name,
|
|
64
|
+
type: storage.type
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
const type = postgresStorageTypes[storage.type];
|
|
68
|
+
if (type === void 0) throw new TypeError(`Unsupported portable storage type for PostgreSQL: ${String(storage.type)}`);
|
|
69
|
+
return {
|
|
70
|
+
kind: "native",
|
|
71
|
+
dialect: dialect.name,
|
|
72
|
+
type
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function encodePostgresExpression(expression, mode, dialect) {
|
|
76
|
+
if (isUnsafeSchemaSql(expression) && expression.schemaSqlDialect !== dialect.name) throw new PostgresSnapshotDialectError(`Schema SQL is tagged for "${expression.schemaSqlDialect}" but the PostgreSQL schema dialect is "${dialect.name}"`);
|
|
77
|
+
const rendered = renderSchemaExpression(expression, {
|
|
78
|
+
mode,
|
|
79
|
+
dialect
|
|
80
|
+
});
|
|
81
|
+
if (rendered.parameters.length !== 0) throw new TypeError("PostgreSQL schema expressions must be parameter-free");
|
|
82
|
+
return {
|
|
83
|
+
kind: "expression",
|
|
84
|
+
expressionKind: expression.expressionKind,
|
|
85
|
+
sql: rendered.text,
|
|
86
|
+
...isUnsafeSchemaSql(expression) ? { dialect: dialect.name } : {}
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function encodePostgresExtension(extension, dialect) {
|
|
90
|
+
if (extension.dialect !== dialect.name) throw new TypeError(`PostgreSQL schema extensions require dialect "${dialect.name}"`);
|
|
91
|
+
const data = Object.fromEntries(Object.entries(extension).filter(([key]) => key !== "dialect").sort(([left], [right]) => left.localeCompare(right)));
|
|
92
|
+
return {
|
|
93
|
+
dialect: dialect.name,
|
|
94
|
+
version: dialect.schema.version,
|
|
95
|
+
data: sortSnapshotJson(toSnapshotJsonValue(data))
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
function sortSnapshotJson(value) {
|
|
99
|
+
if (Array.isArray(value)) return value.map(sortSnapshotJson);
|
|
100
|
+
if (typeof value !== "object" || value === null) return value;
|
|
101
|
+
return Object.fromEntries(Object.entries(value).sort(([left], [right]) => left.localeCompare(right)).map(([key, child]) => [key, sortSnapshotJson(child)]));
|
|
102
|
+
}
|
|
103
|
+
function validatePostgresSchema(schema, context) {
|
|
104
|
+
const diagnostics = [];
|
|
105
|
+
const tableEntries = Object.entries(schema.registry).sort(([left], [right]) => compareIds(left, right));
|
|
106
|
+
const relationNames = /* @__PURE__ */ new Map();
|
|
107
|
+
if (schema.namespace !== void 0) validatePostgresName(schema.namespace, ["namespace"], "PostgreSQL namespace", diagnostics);
|
|
108
|
+
for (const [id, entry] of tableEntries) {
|
|
109
|
+
const tablePath = ["tables", id];
|
|
110
|
+
validatePostgresName(entry.physicalName, [...tablePath, "physicalName"], "PostgreSQL table", diagnostics);
|
|
111
|
+
addRelationName(relationNames, entry.physicalName, [...tablePath, "physicalName"], "table", diagnostics);
|
|
112
|
+
}
|
|
113
|
+
for (const [id, entry] of tableEntries) validatePostgresTable(id, entry, context, relationNames, diagnostics);
|
|
114
|
+
return Object.freeze(diagnostics);
|
|
115
|
+
}
|
|
116
|
+
function validatePostgresTable(tableId, entry, context, relationNames, diagnostics) {
|
|
117
|
+
const table = entry.table;
|
|
118
|
+
const tablePath = ["tables", tableId];
|
|
119
|
+
const definitions = table.definitions;
|
|
120
|
+
for (const [columnId, definition] of Object.entries(definitions).sort(([left], [right]) => compareIds(left, right))) {
|
|
121
|
+
validatePostgresName(table.sqlNames[columnId] ?? columnId, [
|
|
122
|
+
...tablePath,
|
|
123
|
+
"columns",
|
|
124
|
+
columnId,
|
|
125
|
+
"physicalName"
|
|
126
|
+
], "PostgreSQL column", diagnostics);
|
|
127
|
+
if (definition.onUpdate !== void 0) diagnostics.push({
|
|
128
|
+
code: "unsupported-dialect-option",
|
|
129
|
+
message: "MySQL ON UPDATE expressions are not supported by PostgreSQL",
|
|
130
|
+
path: [
|
|
131
|
+
...tablePath,
|
|
132
|
+
"columns",
|
|
133
|
+
columnId,
|
|
134
|
+
"onUpdate"
|
|
135
|
+
]
|
|
136
|
+
});
|
|
137
|
+
const generated = definition.generatedColumn;
|
|
138
|
+
if (generated !== void 0 && generated.kind === "expression" && generated.mode === "virtual") diagnostics.push({
|
|
139
|
+
code: "unsupported-dialect-option",
|
|
140
|
+
message: "PostgreSQL v1 snapshots support stored generated columns only; virtual generated columns are not supported",
|
|
141
|
+
path: [
|
|
142
|
+
...tablePath,
|
|
143
|
+
"columns",
|
|
144
|
+
columnId,
|
|
145
|
+
"generatedColumn",
|
|
146
|
+
"mode"
|
|
147
|
+
]
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
const metadata = table;
|
|
151
|
+
const constraintNames = /* @__PURE__ */ new Map();
|
|
152
|
+
const constraints = Object.entries(metadata.constraints);
|
|
153
|
+
for (const [constraintId, constraint] of constraints.sort(([left], [right]) => compareIds(left, right))) {
|
|
154
|
+
const constraintPath = [
|
|
155
|
+
...tablePath,
|
|
156
|
+
"constraints",
|
|
157
|
+
constraintId
|
|
158
|
+
];
|
|
159
|
+
const physicalName = constraint.physicalName ?? constraintId;
|
|
160
|
+
validatePostgresName(physicalName, [...constraintPath, "physicalName"], "PostgreSQL constraint", diagnostics);
|
|
161
|
+
addScopedName(constraintNames, physicalName, [...constraintPath, "physicalName"], "constraint", diagnostics);
|
|
162
|
+
appendMetadataDiagnostics(diagnostics, validateConstraintDialect(constraint, context.dialect.name, constraintPath));
|
|
163
|
+
if (constraint.kind === "check" && constraint.deferrable === true) diagnostics.push({
|
|
164
|
+
code: "unsupported-dialect-option",
|
|
165
|
+
message: "PostgreSQL CHECK constraints cannot be DEFERRABLE",
|
|
166
|
+
path: [...constraintPath, "deferrable"]
|
|
167
|
+
});
|
|
168
|
+
if (constraint.kind === "foreign-key" && constraint.match === "partial") diagnostics.push({
|
|
169
|
+
code: "unsupported-dialect-option",
|
|
170
|
+
message: "PostgreSQL does not implement MATCH PARTIAL foreign keys",
|
|
171
|
+
path: [...constraintPath, "match"]
|
|
172
|
+
});
|
|
173
|
+
if (constraint.kind === "unique-constraint" && constraint.nulls === "not-distinct") diagnostics.push({
|
|
174
|
+
code: "unsupported-dialect-option",
|
|
175
|
+
message: "PostgreSQL NULLS NOT DISTINCT requires a server-version policy; the v1 adapter does not assume PostgreSQL 15 or newer",
|
|
176
|
+
path: [...constraintPath, "nulls"]
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
const indexes = Object.entries(metadata.indexes);
|
|
180
|
+
for (const [indexId, index] of indexes.sort(([left], [right]) => compareIds(left, right))) {
|
|
181
|
+
const indexPath = [
|
|
182
|
+
...tablePath,
|
|
183
|
+
"indexes",
|
|
184
|
+
indexId
|
|
185
|
+
];
|
|
186
|
+
const physicalName = index.physicalName ?? indexId;
|
|
187
|
+
validatePostgresName(physicalName, [...indexPath, "physicalName"], "PostgreSQL index", diagnostics);
|
|
188
|
+
addRelationName(relationNames, physicalName, [...indexPath, "physicalName"], "index", diagnostics);
|
|
189
|
+
appendMetadataDiagnostics(diagnostics, validateIndexDialect(index, context.dialect.name, indexPath));
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
function validatePostgresName(name, path, kind, diagnostics) {
|
|
193
|
+
if (!isValidSchemaObjectName(name) || name.length === 0) diagnostics.push({
|
|
194
|
+
code: "invalid-schema",
|
|
195
|
+
message: `${kind} name "${name}" is not a valid unqualified identifier`,
|
|
196
|
+
path
|
|
197
|
+
});
|
|
198
|
+
if (new TextEncoder().encode(name).length > 63) diagnostics.push({
|
|
199
|
+
code: "unsupported-dialect-option",
|
|
200
|
+
message: `${kind} name exceeds PostgreSQL's 63-byte identifier limit`,
|
|
201
|
+
path
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
function addRelationName(names, name, path, kind, diagnostics) {
|
|
205
|
+
addScopedName(names, name, path, kind, diagnostics);
|
|
206
|
+
}
|
|
207
|
+
function addScopedName(names, name, path, kind, diagnostics) {
|
|
208
|
+
const previousPath = names.get(name);
|
|
209
|
+
if (previousPath !== void 0) {
|
|
210
|
+
diagnostics.push({
|
|
211
|
+
code: "invalid-schema",
|
|
212
|
+
message: `PostgreSQL ${kind} name "${name}" collides with another relation or metadata object`,
|
|
213
|
+
path,
|
|
214
|
+
relatedPaths: [previousPath]
|
|
215
|
+
});
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
names.set(name, path);
|
|
219
|
+
}
|
|
220
|
+
function appendMetadataDiagnostics(diagnostics, issues) {
|
|
221
|
+
for (const issue of issues) {
|
|
222
|
+
if (issue.code === "dialect-mismatch") continue;
|
|
223
|
+
diagnostics.push({
|
|
224
|
+
code: issue.code === "unsupported-dialect-option" ? "unsupported-dialect-option" : "invalid-schema",
|
|
225
|
+
message: issue.message,
|
|
226
|
+
path: issue.path,
|
|
227
|
+
...issue.relatedPaths === void 0 ? {} : { relatedPaths: issue.relatedPaths }
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
function compareIds(left, right) {
|
|
232
|
+
return left < right ? -1 : left > right ? 1 : 0;
|
|
233
|
+
}
|
|
234
|
+
//#endregion
|
|
235
|
+
export { tryCreatePostgresSchemaSnapshot as a, postgresSnapshotDialect as i, postgresSchemaDialect as n, postgresSnapshotAdapter as r, createPostgresSchemaSnapshot as t };
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { Cl as ExpressionMeta, Cn as ExcludedSource, Dn as excluded, En as doUpdate, Gl as RequiresCapabilityMeta, Ia as Operand, La as OperandNullability, On as onConflict, Pl as MetadataOf, Ra as OperandSqlType, Sn as DoUpdateAction, Tn as doNothing, V as Dialect, Zl as ResultMeta, bn as ConflictTarget, ll as ExpressionWithOutput, lu as SqlBoolean, ou as AnySqlType, ul as SchemaExpression, wn as OnConflictClause, wu as SqlUnknown, xn as DoNothingAction, xu as SqlTextLike, ya as ComparisonValidation, yn as ConflictAction, za as SqlCapabilityValidation } from "./types-4Q076HKo.mjs";
|
|
2
|
+
//#region src/dialects/postgres.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* PostgreSQL's only core rendering difference is positional parameters.
|
|
5
|
+
* PostgreSQL-specific expressions and clauses should remain separate modules.
|
|
6
|
+
*/
|
|
7
|
+
declare function postgresDialect(): Dialect<"json" | "ilike" | "on-conflict" | "row-locking">;
|
|
8
|
+
/** PostgreSQL's case-insensitive pattern-match operator. */
|
|
9
|
+
declare function ilike<TLeft extends ExpressionWithOutput<string>, R extends Operand<string>>(left: TLeft & ComparisonValidation<TLeft, R, 'ILIKE'>, pattern: R): SchemaExpression<ResultMeta<boolean, ((MetadataOf<TLeft & SqlCapabilityValidation<(MetadataOf<TLeft> extends (infer T) ? T extends MetadataOf<TLeft> ? T extends {
|
|
10
|
+
readonly kind: "result";
|
|
11
|
+
} ? T : never : never : never) extends (infer T_1) ? T_1 extends (MetadataOf<TLeft> extends (infer T_2) ? T_2 extends MetadataOf<TLeft> ? T_2 extends {
|
|
12
|
+
readonly kind: "result";
|
|
13
|
+
} ? T_2 : never : never : never) ? T_1 extends {
|
|
14
|
+
readonly sqlType: infer TSqlType extends AnySqlType;
|
|
15
|
+
} ? TSqlType : SqlUnknown : never : never, SqlTextLike> & SqlCapabilityValidation<OperandSqlType<R, (MetadataOf<TLeft> extends (infer T_3) ? T_3 extends MetadataOf<TLeft> ? T_3 extends {
|
|
16
|
+
readonly kind: "result";
|
|
17
|
+
} ? T_3 : never : never : never) extends (infer T_4) ? T_4 extends (MetadataOf<TLeft> extends (infer T_5) ? T_5 extends MetadataOf<TLeft> ? T_5 extends {
|
|
18
|
+
readonly kind: "result";
|
|
19
|
+
} ? T_5 : never : never : never) ? T_4 extends {
|
|
20
|
+
readonly sqlType: infer TSqlType extends AnySqlType;
|
|
21
|
+
} ? TSqlType : SqlUnknown : never : never>, SqlTextLike>> extends (infer T_6) ? T_6 extends MetadataOf<TLeft & SqlCapabilityValidation<(MetadataOf<TLeft> extends (infer T_7) ? T_7 extends MetadataOf<TLeft> ? T_7 extends {
|
|
22
|
+
readonly kind: "result";
|
|
23
|
+
} ? T_7 : never : never : never) extends (infer T_8) ? T_8 extends (MetadataOf<TLeft> extends (infer T_9) ? T_9 extends MetadataOf<TLeft> ? T_9 extends {
|
|
24
|
+
readonly kind: "result";
|
|
25
|
+
} ? T_9 : never : never : never) ? T_8 extends {
|
|
26
|
+
readonly sqlType: infer TSqlType extends AnySqlType;
|
|
27
|
+
} ? TSqlType : SqlUnknown : never : never, SqlTextLike> & SqlCapabilityValidation<OperandSqlType<R, (MetadataOf<TLeft> extends (infer T_10) ? T_10 extends MetadataOf<TLeft> ? T_10 extends {
|
|
28
|
+
readonly kind: "result";
|
|
29
|
+
} ? T_10 : never : never : never) extends (infer T_11) ? T_11 extends (MetadataOf<TLeft> extends (infer T_12) ? T_12 extends MetadataOf<TLeft> ? T_12 extends {
|
|
30
|
+
readonly kind: "result";
|
|
31
|
+
} ? T_12 : never : never : never) ? T_11 extends {
|
|
32
|
+
readonly sqlType: infer TSqlType extends AnySqlType;
|
|
33
|
+
} ? TSqlType : SqlUnknown : never : never>, SqlTextLike>> ? T_6 extends {
|
|
34
|
+
readonly kind: "result";
|
|
35
|
+
} ? T_6 : never : never : never) extends (infer T_13) ? T_13 extends (MetadataOf<TLeft & SqlCapabilityValidation<(MetadataOf<TLeft> extends (infer T_14) ? T_14 extends MetadataOf<TLeft> ? T_14 extends {
|
|
36
|
+
readonly kind: "result";
|
|
37
|
+
} ? T_14 : never : never : never) extends (infer T_15) ? T_15 extends (MetadataOf<TLeft> extends (infer T_16) ? T_16 extends MetadataOf<TLeft> ? T_16 extends {
|
|
38
|
+
readonly kind: "result";
|
|
39
|
+
} ? T_16 : never : never : never) ? T_15 extends {
|
|
40
|
+
readonly sqlType: infer TSqlType extends AnySqlType;
|
|
41
|
+
} ? TSqlType : SqlUnknown : never : never, SqlTextLike> & SqlCapabilityValidation<OperandSqlType<R, (MetadataOf<TLeft> extends (infer T_17) ? T_17 extends MetadataOf<TLeft> ? T_17 extends {
|
|
42
|
+
readonly kind: "result";
|
|
43
|
+
} ? T_17 : never : never : never) extends (infer T_18) ? T_18 extends (MetadataOf<TLeft> extends (infer T_19) ? T_19 extends MetadataOf<TLeft> ? T_19 extends {
|
|
44
|
+
readonly kind: "result";
|
|
45
|
+
} ? T_19 : never : never : never) ? T_18 extends {
|
|
46
|
+
readonly sqlType: infer TSqlType extends AnySqlType;
|
|
47
|
+
} ? TSqlType : SqlUnknown : never : never>, SqlTextLike>> extends (infer T_20) ? T_20 extends MetadataOf<TLeft & SqlCapabilityValidation<(MetadataOf<TLeft> extends (infer T_21) ? T_21 extends MetadataOf<TLeft> ? T_21 extends {
|
|
48
|
+
readonly kind: "result";
|
|
49
|
+
} ? T_21 : never : never : never) extends (infer T_22) ? T_22 extends (MetadataOf<TLeft> extends (infer T_23) ? T_23 extends MetadataOf<TLeft> ? T_23 extends {
|
|
50
|
+
readonly kind: "result";
|
|
51
|
+
} ? T_23 : never : never : never) ? T_22 extends {
|
|
52
|
+
readonly sqlType: infer TSqlType extends AnySqlType;
|
|
53
|
+
} ? TSqlType : SqlUnknown : never : never, SqlTextLike> & SqlCapabilityValidation<OperandSqlType<R, (MetadataOf<TLeft> extends (infer T_24) ? T_24 extends MetadataOf<TLeft> ? T_24 extends {
|
|
54
|
+
readonly kind: "result";
|
|
55
|
+
} ? T_24 : never : never : never) extends (infer T_25) ? T_25 extends (MetadataOf<TLeft> extends (infer T_26) ? T_26 extends MetadataOf<TLeft> ? T_26 extends {
|
|
56
|
+
readonly kind: "result";
|
|
57
|
+
} ? T_26 : never : never : never) ? T_25 extends {
|
|
58
|
+
readonly sqlType: infer TSqlType extends AnySqlType;
|
|
59
|
+
} ? TSqlType : SqlUnknown : never : never>, SqlTextLike>> ? T_20 extends {
|
|
60
|
+
readonly kind: "result";
|
|
61
|
+
} ? T_20 : never : never : never) ? T_13 extends {
|
|
62
|
+
readonly nullableFrom: infer TSource;
|
|
63
|
+
} ? TSource : never : never : never) | OperandNullability<R>, SqlBoolean> | ExpressionMeta<(MetadataOf<TLeft & SqlCapabilityValidation<(MetadataOf<TLeft> extends (infer T_27) ? T_27 extends MetadataOf<TLeft> ? T_27 extends {
|
|
64
|
+
readonly kind: "result";
|
|
65
|
+
} ? T_27 : never : never : never) extends (infer T_28) ? T_28 extends (MetadataOf<TLeft> extends (infer T_29) ? T_29 extends MetadataOf<TLeft> ? T_29 extends {
|
|
66
|
+
readonly kind: "result";
|
|
67
|
+
} ? T_29 : never : never : never) ? T_28 extends {
|
|
68
|
+
readonly sqlType: infer TSqlType extends AnySqlType;
|
|
69
|
+
} ? TSqlType : SqlUnknown : never : never, SqlTextLike> & SqlCapabilityValidation<OperandSqlType<R, (MetadataOf<TLeft> extends (infer T_30) ? T_30 extends MetadataOf<TLeft> ? T_30 extends {
|
|
70
|
+
readonly kind: "result";
|
|
71
|
+
} ? T_30 : never : never : never) extends (infer T_31) ? T_31 extends (MetadataOf<TLeft> extends (infer T_32) ? T_32 extends MetadataOf<TLeft> ? T_32 extends {
|
|
72
|
+
readonly kind: "result";
|
|
73
|
+
} ? T_32 : never : never : never) ? T_31 extends {
|
|
74
|
+
readonly sqlType: infer TSqlType extends AnySqlType;
|
|
75
|
+
} ? TSqlType : SqlUnknown : never : never>, SqlTextLike>> extends (infer T_33) ? T_33 extends MetadataOf<TLeft & SqlCapabilityValidation<(MetadataOf<TLeft> extends (infer T_34) ? T_34 extends MetadataOf<TLeft> ? T_34 extends {
|
|
76
|
+
readonly kind: "result";
|
|
77
|
+
} ? T_34 : never : never : never) extends (infer T_35) ? T_35 extends (MetadataOf<TLeft> extends (infer T_36) ? T_36 extends MetadataOf<TLeft> ? T_36 extends {
|
|
78
|
+
readonly kind: "result";
|
|
79
|
+
} ? T_36 : never : never : never) ? T_35 extends {
|
|
80
|
+
readonly sqlType: infer TSqlType extends AnySqlType;
|
|
81
|
+
} ? TSqlType : SqlUnknown : never : never, SqlTextLike> & SqlCapabilityValidation<OperandSqlType<R, (MetadataOf<TLeft> extends (infer T_37) ? T_37 extends MetadataOf<TLeft> ? T_37 extends {
|
|
82
|
+
readonly kind: "result";
|
|
83
|
+
} ? T_37 : never : never : never) extends (infer T_38) ? T_38 extends (MetadataOf<TLeft> extends (infer T_39) ? T_39 extends MetadataOf<TLeft> ? T_39 extends {
|
|
84
|
+
readonly kind: "result";
|
|
85
|
+
} ? T_39 : never : never : never) ? T_38 extends {
|
|
86
|
+
readonly sqlType: infer TSqlType extends AnySqlType;
|
|
87
|
+
} ? TSqlType : SqlUnknown : never : never>, SqlTextLike>> ? T_33 extends {
|
|
88
|
+
readonly kind: "expression";
|
|
89
|
+
readonly dependencies: infer TDependencies;
|
|
90
|
+
} ? TDependencies : never : never : never) | (MetadataOf<R> extends (infer T_40) ? T_40 extends MetadataOf<R> ? T_40 extends {
|
|
91
|
+
readonly kind: "expression";
|
|
92
|
+
readonly dependencies: infer TDependencies;
|
|
93
|
+
} ? TDependencies : never : never : never)> | (MetadataOf<TLeft & SqlCapabilityValidation<(MetadataOf<TLeft> extends (infer T_41) ? T_41 extends MetadataOf<TLeft> ? T_41 extends {
|
|
94
|
+
readonly kind: "result";
|
|
95
|
+
} ? T_41 : never : never : never) extends (infer T_42) ? T_42 extends (MetadataOf<TLeft> extends (infer T_43) ? T_43 extends MetadataOf<TLeft> ? T_43 extends {
|
|
96
|
+
readonly kind: "result";
|
|
97
|
+
} ? T_43 : never : never : never) ? T_42 extends {
|
|
98
|
+
readonly sqlType: infer TSqlType extends AnySqlType;
|
|
99
|
+
} ? TSqlType : SqlUnknown : never : never, SqlTextLike> & SqlCapabilityValidation<OperandSqlType<R, (MetadataOf<TLeft> extends (infer T_44) ? T_44 extends MetadataOf<TLeft> ? T_44 extends {
|
|
100
|
+
readonly kind: "result";
|
|
101
|
+
} ? T_44 : never : never : never) extends (infer T_45) ? T_45 extends (MetadataOf<TLeft> extends (infer T_46) ? T_46 extends MetadataOf<TLeft> ? T_46 extends {
|
|
102
|
+
readonly kind: "result";
|
|
103
|
+
} ? T_46 : never : never : never) ? T_45 extends {
|
|
104
|
+
readonly sqlType: infer TSqlType extends AnySqlType;
|
|
105
|
+
} ? TSqlType : SqlUnknown : never : never>, SqlTextLike>> extends (infer T_47) ? T_47 extends MetadataOf<TLeft & SqlCapabilityValidation<(MetadataOf<TLeft> extends (infer T_48) ? T_48 extends MetadataOf<TLeft> ? T_48 extends {
|
|
106
|
+
readonly kind: "result";
|
|
107
|
+
} ? T_48 : never : never : never) extends (infer T_49) ? T_49 extends (MetadataOf<TLeft> extends (infer T_50) ? T_50 extends MetadataOf<TLeft> ? T_50 extends {
|
|
108
|
+
readonly kind: "result";
|
|
109
|
+
} ? T_50 : never : never : never) ? T_49 extends {
|
|
110
|
+
readonly sqlType: infer TSqlType extends AnySqlType;
|
|
111
|
+
} ? TSqlType : SqlUnknown : never : never, SqlTextLike> & SqlCapabilityValidation<OperandSqlType<R, (MetadataOf<TLeft> extends (infer T_51) ? T_51 extends MetadataOf<TLeft> ? T_51 extends {
|
|
112
|
+
readonly kind: "result";
|
|
113
|
+
} ? T_51 : never : never : never) extends (infer T_52) ? T_52 extends (MetadataOf<TLeft> extends (infer T_53) ? T_53 extends MetadataOf<TLeft> ? T_53 extends {
|
|
114
|
+
readonly kind: "result";
|
|
115
|
+
} ? T_53 : never : never : never) ? T_52 extends {
|
|
116
|
+
readonly sqlType: infer TSqlType extends AnySqlType;
|
|
117
|
+
} ? TSqlType : SqlUnknown : never : never>, SqlTextLike>> ? T_47 extends {
|
|
118
|
+
readonly kind: "result" | "cardinality";
|
|
119
|
+
} ? never : T_47 : never : never) | (MetadataOf<R> extends (infer T_54) ? T_54 extends MetadataOf<R> ? T_54 extends {
|
|
120
|
+
readonly kind: "result" | "cardinality";
|
|
121
|
+
} ? never : T_54 : never : never) | RequiresCapabilityMeta<"ilike">, "operator">;
|
|
122
|
+
//#endregion
|
|
123
|
+
export { type ConflictAction, type ConflictTarget, type DoNothingAction, type DoUpdateAction, type ExcludedSource, type OnConflictClause, doNothing, doUpdate, excluded, ilike, onConflict, postgresDialect };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { n as postgresJson, o as createDialect } from "./json-CUZlv4HT.mjs";
|
|
2
|
+
import { f as withDialectCapability } from "./column-CXMxx8Hq.mjs";
|
|
3
|
+
import { t as comparison } from "./relational-DCZrrNia.mjs";
|
|
4
|
+
import { n as postgresExplain } from "./explain-CkIK13L_.mjs";
|
|
5
|
+
import { i as onConflict, n as doUpdate, r as excluded, t as doNothing } from "./on-conflict-BxnxubMb.mjs";
|
|
6
|
+
//#region src/dialects/postgres.ts
|
|
7
|
+
const postgresRowLockModeSql = {
|
|
8
|
+
update: "UPDATE",
|
|
9
|
+
"no-key-update": "NO KEY UPDATE",
|
|
10
|
+
share: "SHARE",
|
|
11
|
+
"key-share": "KEY SHARE"
|
|
12
|
+
};
|
|
13
|
+
const postgresRowLocking = { render(context, mode, wait) {
|
|
14
|
+
context.append(`FOR ${postgresRowLockModeSql[mode]}`);
|
|
15
|
+
if (wait === "nowait") context.append(" NOWAIT");
|
|
16
|
+
if (wait === "skip-locked") context.append(" SKIP LOCKED");
|
|
17
|
+
} };
|
|
18
|
+
const postgresPagination = { render(context, parts) {
|
|
19
|
+
[...parts].sort((left, right) => {
|
|
20
|
+
return (left.kind === "fetch" ? 0 : 1) - (right.kind === "fetch" ? 0 : 1);
|
|
21
|
+
}).forEach((part, index) => {
|
|
22
|
+
if (index > 0) context.append(" ");
|
|
23
|
+
context.append(part.kind === "fetch" ? "LIMIT " : "OFFSET ");
|
|
24
|
+
context.parameter(part.rows);
|
|
25
|
+
});
|
|
26
|
+
} };
|
|
27
|
+
/**
|
|
28
|
+
* PostgreSQL's only core rendering difference is positional parameters.
|
|
29
|
+
* PostgreSQL-specific expressions and clauses should remain separate modules.
|
|
30
|
+
*/
|
|
31
|
+
function postgresDialect() {
|
|
32
|
+
return createDialect({
|
|
33
|
+
name: "postgresql",
|
|
34
|
+
placeholder: (position) => `$${position}`,
|
|
35
|
+
pagination: postgresPagination,
|
|
36
|
+
rowLocking: postgresRowLocking,
|
|
37
|
+
castTypes: { binary: "BYTEA" },
|
|
38
|
+
capabilities: [
|
|
39
|
+
"ilike",
|
|
40
|
+
"on-conflict",
|
|
41
|
+
"row-locking"
|
|
42
|
+
],
|
|
43
|
+
json: postgresJson,
|
|
44
|
+
explain: postgresExplain
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/** PostgreSQL's case-insensitive pattern-match operator. */
|
|
48
|
+
function ilike(left, pattern) {
|
|
49
|
+
return withDialectCapability(comparison("ILIKE", left, pattern), "ilike");
|
|
50
|
+
}
|
|
51
|
+
//#endregion
|
|
52
|
+
export { doNothing, doUpdate, excluded, ilike, onConflict, postgresDialect };
|