@kuindji/typed-sql 0.1.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/LICENSE +21 -0
- package/README.md +227 -0
- package/dist/builder/assemble.d.ts +13 -0
- package/dist/builder/assemble.d.ts.map +1 -0
- package/dist/builder/assemble.js +86 -0
- package/dist/builder/assemble.js.map +1 -0
- package/dist/builder/condition-tree.d.ts +27 -0
- package/dist/builder/condition-tree.d.ts.map +1 -0
- package/dist/builder/condition-tree.js +91 -0
- package/dist/builder/condition-tree.js.map +1 -0
- package/dist/builder/conditional-sql.d.ts +80 -0
- package/dist/builder/conditional-sql.d.ts.map +1 -0
- package/dist/builder/conditional-sql.js +88 -0
- package/dist/builder/conditional-sql.js.map +1 -0
- package/dist/builder/db.d.ts +76 -0
- package/dist/builder/db.d.ts.map +1 -0
- package/dist/builder/db.js +12 -0
- package/dist/builder/db.js.map +1 -0
- package/dist/builder/delete.d.ts +39 -0
- package/dist/builder/delete.d.ts.map +1 -0
- package/dist/builder/delete.js +33 -0
- package/dist/builder/delete.js.map +1 -0
- package/dist/builder/extract-params.d.ts +97 -0
- package/dist/builder/extract-params.d.ts.map +1 -0
- package/dist/builder/extract-params.js +2 -0
- package/dist/builder/extract-params.js.map +1 -0
- package/dist/builder/index.d.ts +23 -0
- package/dist/builder/index.d.ts.map +1 -0
- package/dist/builder/index.js +14 -0
- package/dist/builder/index.js.map +1 -0
- package/dist/builder/insert.d.ts +51 -0
- package/dist/builder/insert.d.ts.map +1 -0
- package/dist/builder/insert.js +39 -0
- package/dist/builder/insert.js.map +1 -0
- package/dist/builder/mutate.d.ts +28 -0
- package/dist/builder/mutate.d.ts.map +1 -0
- package/dist/builder/mutate.js +17 -0
- package/dist/builder/mutate.js.map +1 -0
- package/dist/builder/params.d.ts +22 -0
- package/dist/builder/params.d.ts.map +1 -0
- package/dist/builder/params.js +65 -0
- package/dist/builder/params.js.map +1 -0
- package/dist/builder/return-type.d.ts +39 -0
- package/dist/builder/return-type.d.ts.map +1 -0
- package/dist/builder/return-type.js +2 -0
- package/dist/builder/return-type.js.map +1 -0
- package/dist/builder/scanner.d.ts +49 -0
- package/dist/builder/scanner.d.ts.map +1 -0
- package/dist/builder/scanner.js +240 -0
- package/dist/builder/scanner.js.map +1 -0
- package/dist/builder/select.d.ts +76 -0
- package/dist/builder/select.d.ts.map +1 -0
- package/dist/builder/select.js +240 -0
- package/dist/builder/select.js.map +1 -0
- package/dist/builder/sql-tag.d.ts +319 -0
- package/dist/builder/sql-tag.d.ts.map +1 -0
- package/dist/builder/sql-tag.js +3 -0
- package/dist/builder/sql-tag.js.map +1 -0
- package/dist/builder/sql.d.ts +17 -0
- package/dist/builder/sql.d.ts.map +1 -0
- package/dist/builder/sql.js +36 -0
- package/dist/builder/sql.js.map +1 -0
- package/dist/builder/state.d.ts +53 -0
- package/dist/builder/state.d.ts.map +1 -0
- package/dist/builder/state.js +18 -0
- package/dist/builder/state.js.map +1 -0
- package/dist/builder/update.d.ts +60 -0
- package/dist/builder/update.d.ts.map +1 -0
- package/dist/builder/update.js +40 -0
- package/dist/builder/update.js.map +1 -0
- package/dist/builder/write-assemble.d.ts +5 -0
- package/dist/builder/write-assemble.d.ts.map +1 -0
- package/dist/builder/write-assemble.js +57 -0
- package/dist/builder/write-assemble.js.map +1 -0
- package/dist/builder/write-state.d.ts +39 -0
- package/dist/builder/write-state.d.ts.map +1 -0
- package/dist/builder/write-state.js +6 -0
- package/dist/builder/write-state.js.map +1 -0
- package/dist/builder/write-tag.d.ts +91 -0
- package/dist/builder/write-tag.d.ts.map +1 -0
- package/dist/builder/write-tag.js +2 -0
- package/dist/builder/write-tag.js.map +1 -0
- package/dist/columns.d.ts +33 -0
- package/dist/columns.d.ts.map +1 -0
- package/dist/columns.js +2 -0
- package/dist/columns.js.map +1 -0
- package/dist/expressions.d.ts +71 -0
- package/dist/expressions.d.ts.map +1 -0
- package/dist/expressions.js +2 -0
- package/dist/expressions.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/parsing/extract.d.ts +47 -0
- package/dist/parsing/extract.d.ts.map +1 -0
- package/dist/parsing/extract.js +2 -0
- package/dist/parsing/extract.js.map +1 -0
- package/dist/parsing/normalize.d.ts +44 -0
- package/dist/parsing/normalize.d.ts.map +1 -0
- package/dist/parsing/normalize.js +2 -0
- package/dist/parsing/normalize.js.map +1 -0
- package/dist/parsing/pg-literals.d.ts +37 -0
- package/dist/parsing/pg-literals.d.ts.map +1 -0
- package/dist/parsing/pg-literals.js +2 -0
- package/dist/parsing/pg-literals.js.map +1 -0
- package/dist/parsing/split.d.ts +100 -0
- package/dist/parsing/split.d.ts.map +1 -0
- package/dist/parsing/split.js +2 -0
- package/dist/parsing/split.js.map +1 -0
- package/dist/parsing/string-utils.d.ts +29 -0
- package/dist/parsing/string-utils.d.ts.map +1 -0
- package/dist/parsing/string-utils.js +2 -0
- package/dist/parsing/string-utils.js.map +1 -0
- package/dist/parsing/tokenize.d.ts +27 -0
- package/dist/parsing/tokenize.d.ts.map +1 -0
- package/dist/parsing/tokenize.js +2 -0
- package/dist/parsing/tokenize.js.map +1 -0
- package/dist/parsing.d.ts +7 -0
- package/dist/parsing.d.ts.map +1 -0
- package/dist/parsing.js +9 -0
- package/dist/parsing.js.map +1 -0
- package/dist/partial.d.ts +30 -0
- package/dist/partial.d.ts.map +1 -0
- package/dist/partial.js +10 -0
- package/dist/partial.js.map +1 -0
- package/dist/schema.d.ts +28 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +2 -0
- package/dist/schema.js.map +1 -0
- package/dist/tables.d.ts +34 -0
- package/dist/tables.d.ts.map +1 -0
- package/dist/tables.js +2 -0
- package/dist/tables.js.map +1 -0
- package/dist/utils.d.ts +13 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +3 -0
- package/dist/utils.js.map +1 -0
- package/dist/validation/cte.d.ts +54 -0
- package/dist/validation/cte.d.ts.map +1 -0
- package/dist/validation/cte.js +2 -0
- package/dist/validation/cte.js.map +1 -0
- package/dist/validation/dispatch.d.ts +31 -0
- package/dist/validation/dispatch.d.ts.map +1 -0
- package/dist/validation/dispatch.js +2 -0
- package/dist/validation/dispatch.js.map +1 -0
- package/dist/validation/joins.d.ts +16 -0
- package/dist/validation/joins.d.ts.map +1 -0
- package/dist/validation/joins.js +2 -0
- package/dist/validation/joins.js.map +1 -0
- package/dist/validation/return-derived.d.ts +67 -0
- package/dist/validation/return-derived.d.ts.map +1 -0
- package/dist/validation/return-derived.js +5 -0
- package/dist/validation/return-derived.js.map +1 -0
- package/dist/validation/return-types.d.ts +41 -0
- package/dist/validation/return-types.d.ts.map +1 -0
- package/dist/validation/return-types.js +2 -0
- package/dist/validation/return-types.js.map +1 -0
- package/dist/validation/validate-columns.d.ts +63 -0
- package/dist/validation/validate-columns.d.ts.map +1 -0
- package/dist/validation/validate-columns.js +2 -0
- package/dist/validation/validate-columns.js.map +1 -0
- package/dist/validation.d.ts +7 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +9 -0
- package/dist/validation.js.map +1 -0
- package/package.json +64 -0
- package/src/builder/assemble.ts +100 -0
- package/src/builder/condition-tree.ts +162 -0
- package/src/builder/conditional-sql.ts +325 -0
- package/src/builder/db.ts +281 -0
- package/src/builder/delete.ts +57 -0
- package/src/builder/extract-params.ts +507 -0
- package/src/builder/index.ts +58 -0
- package/src/builder/insert.ts +75 -0
- package/src/builder/mutate.ts +55 -0
- package/src/builder/params.ts +95 -0
- package/src/builder/return-type.ts +66 -0
- package/src/builder/scanner.ts +254 -0
- package/src/builder/select.ts +470 -0
- package/src/builder/sql-tag.ts +422 -0
- package/src/builder/sql.ts +51 -0
- package/src/builder/state.ts +55 -0
- package/src/builder/update.ts +77 -0
- package/src/builder/write-assemble.ts +52 -0
- package/src/builder/write-state.ts +43 -0
- package/src/builder/write-tag.ts +119 -0
- package/src/columns.ts +336 -0
- package/src/expressions.ts +745 -0
- package/src/index.ts +81 -0
- package/src/parsing/extract.ts +260 -0
- package/src/parsing/normalize.ts +243 -0
- package/src/parsing/pg-literals.ts +289 -0
- package/src/parsing/split.ts +288 -0
- package/src/parsing/string-utils.ts +172 -0
- package/src/parsing/tokenize.ts +321 -0
- package/src/parsing.ts +8 -0
- package/src/partial.ts +241 -0
- package/src/schema.ts +130 -0
- package/src/tables.ts +278 -0
- package/src/utils.ts +43 -0
- package/src/validation/cte.ts +198 -0
- package/src/validation/dispatch.ts +312 -0
- package/src/validation/joins.ts +198 -0
- package/src/validation/return-derived.ts +253 -0
- package/src/validation/return-types.ts +271 -0
- package/src/validation/validate-columns.ts +489 -0
- package/src/validation.ts +8 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/** Get a nested value from an object using dot notation. */
|
|
2
|
+
function getNestedValue(obj, path) {
|
|
3
|
+
const keys = path.split(".");
|
|
4
|
+
let current = obj;
|
|
5
|
+
for (const key of keys) {
|
|
6
|
+
if (current === null || current === undefined) {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
if (typeof current !== "object") {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
current = current[key];
|
|
13
|
+
}
|
|
14
|
+
return current;
|
|
15
|
+
}
|
|
16
|
+
/** Process conditional blocks in a SQL template (innermost-first, iterative). */
|
|
17
|
+
export function processConditionalSQL(template, conditions) {
|
|
18
|
+
// Matches an if-block with no nested if inside its content (innermost first).
|
|
19
|
+
const pattern = /\/\*if:(!?[\w.]+)\*\/((?:(?!\/\*if:)[\s\S])*?)\/\*endif\*\//g;
|
|
20
|
+
let result = template;
|
|
21
|
+
let hasMatches = true;
|
|
22
|
+
// Process iteratively to handle nested conditions.
|
|
23
|
+
while (hasMatches) {
|
|
24
|
+
hasMatches = false;
|
|
25
|
+
result = result.replace(pattern, (_, condition, content) => {
|
|
26
|
+
hasMatches = true;
|
|
27
|
+
const isNegated = condition.startsWith("!");
|
|
28
|
+
const key = isNegated ? condition.slice(1) : condition;
|
|
29
|
+
const value = getNestedValue(conditions, key);
|
|
30
|
+
const isTruthy = Boolean(value);
|
|
31
|
+
return (isNegated ? !isTruthy : isTruthy) ? content : "";
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
/** Convert :name placeholders to positional $n; return processed SQL + values. */
|
|
37
|
+
export function processParams(sql, params) {
|
|
38
|
+
// Find all param references in order of first appearance.
|
|
39
|
+
const paramRegex = /:([a-zA-Z_][a-zA-Z0-9_]*)(?![a-zA-Z0-9_])/g;
|
|
40
|
+
const usedParams = [];
|
|
41
|
+
let match;
|
|
42
|
+
while ((match = paramRegex.exec(sql)) !== null) {
|
|
43
|
+
const name = match[1];
|
|
44
|
+
if (name in params && !usedParams.includes(name)) {
|
|
45
|
+
usedParams.push(name);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Replace each param with positional placeholder.
|
|
49
|
+
let processedSql = sql;
|
|
50
|
+
for (let i = 0; i < usedParams.length; i++) {
|
|
51
|
+
const name = usedParams[i];
|
|
52
|
+
const regex = new RegExp(`:${name}(?![a-zA-Z0-9_])`, "g");
|
|
53
|
+
processedSql = processedSql.replace(regex, `$${i + 1}`);
|
|
54
|
+
}
|
|
55
|
+
// Extract param values in order.
|
|
56
|
+
const paramValues = usedParams.map(name => params[name]);
|
|
57
|
+
return {
|
|
58
|
+
sql: processedSql,
|
|
59
|
+
params: paramValues,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/** Process a template with both conditions and parameters. */
|
|
63
|
+
export function conditionalSQL(template, conditions, params = {}) {
|
|
64
|
+
// Step 1: Process conditional blocks.
|
|
65
|
+
const conditionalProcessed = processConditionalSQL(template, conditions);
|
|
66
|
+
// Step 2: Process parameters.
|
|
67
|
+
return processParams(conditionalProcessed, params);
|
|
68
|
+
}
|
|
69
|
+
/** Normalize whitespace in SQL (collapse spaces, tidy commas/parens). */
|
|
70
|
+
export function normalizeWhitespace(sql) {
|
|
71
|
+
return sql
|
|
72
|
+
.replace(/\s+/g, " ")
|
|
73
|
+
.replace(/\s*,\s*/g, ", ")
|
|
74
|
+
.replace(/\s*\(\s*/g, "(")
|
|
75
|
+
.replace(/\s*\)\s*/g, ")")
|
|
76
|
+
.trim();
|
|
77
|
+
}
|
|
78
|
+
export function createConditionalQuery() {
|
|
79
|
+
function query(template, conditions, params) {
|
|
80
|
+
const result = conditionalSQL(template, conditions, params ?? {});
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
return query;
|
|
84
|
+
}
|
|
85
|
+
export function withConditions(queryFn) {
|
|
86
|
+
return (template, conditions, params) => queryFn(template, conditions, params);
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=conditional-sql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditional-sql.js","sourceRoot":"","sources":["../../src/builder/conditional-sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { DatabaseSchema } from "../schema.js";
|
|
2
|
+
import type { GetReturnType, ValidateSQL } from "../index.js";
|
|
3
|
+
import type { ValidateFromPart, ValidateJoinPart } from "../index.js";
|
|
4
|
+
import type { ValidateClausePartScoped, ValidateSelectIdentifiersScoped } from "../partial.js";
|
|
5
|
+
import type { SelectQueryBuilder } from "./select.js";
|
|
6
|
+
import type { BuilderReturnType, BuilderSQL } from "./return-type.js";
|
|
7
|
+
import type { Frag, SelFrag, SqlTag } from "./sql-tag.js";
|
|
8
|
+
import type { NormalizeQuery } from "../parsing.js";
|
|
9
|
+
import type { TablesInQuery, AliasesInQuery } from "../tables.js";
|
|
10
|
+
type Prettify<T> = {
|
|
11
|
+
[K in keyof T]: T[K];
|
|
12
|
+
} & {};
|
|
13
|
+
/** String-query validity (core).
|
|
14
|
+
*
|
|
15
|
+
* Size-gated, mirroring `ValidQueryBuilder` below (the gate it gained in the
|
|
16
|
+
* "size-gated whole-query validation" change). The whole-query `ValidateSQL`
|
|
17
|
+
* pass only runs when `Q` is small enough to resolve within the TS
|
|
18
|
+
* instantiation budget.
|
|
19
|
+
*
|
|
20
|
+
* Why the gate is needed on the raw-string path too: `ValidQuery` is used as a
|
|
21
|
+
* PARAMETER type by api.ts's raw-string `typedSelect` overload
|
|
22
|
+
* (`query: ValidQuery<Q, MainDatabase>`), where TS must INFER `Q` from the
|
|
23
|
+
* argument *through* this type. Inferring `Q` while evaluating
|
|
24
|
+
* `ValidateSQL<Q, Schema>` on a heavy query against a large schema (e.g.
|
|
25
|
+
* `MainDatabase`) exhausts the budget — TS abandons inferring `Q`, it collapses
|
|
26
|
+
* to `string`, and `ValidateSQL<string>` then rejects the (valid) argument.
|
|
27
|
+
* Direct `ValidateSQL<concreteLiteral, Schema>` does NOT blow (Q is already
|
|
28
|
+
* known), which is why fn-plain's direct-form mirror passes while the real
|
|
29
|
+
* overload call fails.
|
|
30
|
+
*
|
|
31
|
+
* For an over-gate query we pass `Q` through unvalidated — `Q` stays inferrable
|
|
32
|
+
* and row inference via `GetReturnType<Q>` is unaffected; only the dev-time
|
|
33
|
+
* whole-query validation is skipped. Same trade-off `ValidQueryBuilder` makes
|
|
34
|
+
* for large builder queries. Small queries are still fully validated. */
|
|
35
|
+
export type ValidQuery<Q extends string, Schema extends DatabaseSchema> = BuilderSqlSmall<Q> extends true ? ValidateSQL<Q, Schema> extends infer V ? V extends true ? Q : V extends string ? `[SQL Error] ${V}` : `[SQL Error] invalid query: ${Q}` : never : Q;
|
|
36
|
+
type FragErr<Verdict, Label extends string, Text extends string> = Verdict extends true ? never : Verdict extends string ? Verdict : `invalid ${Label} fragment: ${Text}`;
|
|
37
|
+
type SelectListText<List extends readonly SelFrag[], Acc extends string = ""> = List extends readonly [infer H extends SelFrag, ...infer R extends readonly SelFrag[]] ? string extends H["text"] ? string : SelectListText<R, Acc extends "" ? H["text"] : `${Acc}, ${H["text"]}`> : Acc;
|
|
38
|
+
type SelectErrors<List extends readonly SelFrag[], Tables extends string, Aliases extends string, S extends DatabaseSchema> = SelectListText<List> extends infer Txt extends string ? string extends Txt ? never : FragErr<ValidateSelectIdentifiersScoped<Txt, Tables, Aliases, S>, "SELECT", Txt> : never;
|
|
39
|
+
type FromError<From extends string | null, S extends DatabaseSchema> = From extends null ? never : string extends (From & string) ? never : FragErr<ValidateFromPart<From & string, S>, "FROM", From & string>;
|
|
40
|
+
type JoinErrors<List extends readonly Frag[], S extends DatabaseSchema> = List extends readonly [infer H extends Frag, ...infer R extends readonly Frag[]] ? (string extends H["text"] ? never : FragErr<ValidateJoinPart<H["text"], S>, "JOIN", H["text"]>) | JoinErrors<R, S> : never;
|
|
41
|
+
type WhereErrors<List extends readonly Frag[], Tables extends string, Aliases extends string, S extends DatabaseSchema> = List extends readonly [infer H extends Frag, ...infer R extends readonly Frag[]] ? (string extends H["text"] ? never : FragErr<ValidateClausePartScoped<H["text"], Tables, Aliases, S>, "WHERE", H["text"]>) | WhereErrors<R, Tables, Aliases, S> : never;
|
|
42
|
+
type GroupErrors<List extends readonly Frag[], Tables extends string, Aliases extends string, S extends DatabaseSchema> = List extends readonly [infer H extends Frag, ...infer R extends readonly Frag[]] ? (string extends H["text"] ? never : FragErr<ValidateClausePartScoped<H["text"], Tables, Aliases, S>, "GROUP BY", H["text"]>) | GroupErrors<R, Tables, Aliases, S> : never;
|
|
43
|
+
type HavingErrors<List extends readonly Frag[], Tables extends string, Aliases extends string, S extends DatabaseSchema> = List extends readonly [infer H extends Frag, ...infer R extends readonly Frag[]] ? (string extends H["text"] ? never : FragErr<ValidateClausePartScoped<H["text"], Tables, Aliases, S>, "HAVING", H["text"]>) | HavingErrors<R, Tables, Aliases, S> : never;
|
|
44
|
+
type OrderErrors<List extends readonly Frag[], Tables extends string, Aliases extends string, S extends DatabaseSchema> = List extends readonly [infer H extends Frag, ...infer R extends readonly Frag[]] ? (string extends H["text"] ? never : FragErr<ValidateClausePartScoped<H["text"], Tables, Aliases, S>, "ORDER BY", H["text"]>) | OrderErrors<R, Tables, Aliases, S> : never;
|
|
45
|
+
type JoinSourceText<List extends readonly Frag[]> = List extends readonly [infer H extends Frag, ...infer R extends readonly Frag[]] ? ` join ${H["text"]}${JoinSourceText<R>}` : "";
|
|
46
|
+
type ScopeSourceText<Sql extends SqlTag> = Sql["from"] extends null ? "" : string extends (Sql["from"] & string) ? "" : `from ${Sql["from"] & string}${JoinSourceText<Sql["joins"]>}`;
|
|
47
|
+
export type ScopeTables<Sql extends SqlTag, S extends DatabaseSchema> = ScopeSourceText<Sql> extends infer N extends string ? N extends "" ? never : TablesInQuery<NormalizeQuery<N>, S> : never;
|
|
48
|
+
export type ScopeAliases<Sql extends SqlTag, S extends DatabaseSchema> = ScopeSourceText<Sql> extends infer N extends string ? N extends "" ? never : AliasesInQuery<NormalizeQuery<N>, S> : never;
|
|
49
|
+
type MkBudget<N extends number, Acc extends any[] = []> = Acc["length"] extends N ? Acc : MkBudget<N, [any, ...Acc]>;
|
|
50
|
+
type SqlSizeThreshold = MkBudget<600>;
|
|
51
|
+
type LenWithin<S extends string, Budget extends any[]> = S extends `${infer _C}${infer Tail}` ? Budget extends [any, ...infer Rest extends any[]] ? LenWithin<Tail, Rest> : false : true;
|
|
52
|
+
export type BuilderSqlSmall<SQL extends string> = string extends SQL ? false : LenWithin<SQL, SqlSizeThreshold>;
|
|
53
|
+
/** Per-fragment errors over the literal fragments of B's Sql tag. */
|
|
54
|
+
export type FragmentErrors<B, Schema extends DatabaseSchema> = B extends SelectQueryBuilder<Schema, infer Sql extends SqlTag> ? ScopeTables<Sql, Schema> extends infer Tbls extends string ? ScopeAliases<Sql, Schema> extends infer Als extends string ? (SelectErrors<Sql["selects"], Tbls, Als, Schema> | FromError<Sql["from"], Schema> | JoinErrors<Sql["joins"], Schema> | WhereErrors<Sql["wheres"], Tbls, Als, Schema> | GroupErrors<Sql["groupBys"], Tbls, Als, Schema> | HavingErrors<Sql["havings"], Tbls, Als, Schema> | OrderErrors<Sql["orderBys"], Tbls, Als, Schema>) extends infer E ? [E] extends [never] ? [] : (E & string)[] : [] : [] : [] : [];
|
|
55
|
+
/**
|
|
56
|
+
* Builder validity: per-fragment literal errors first; else whole-query check
|
|
57
|
+
* with allow-unknown when the assembled SQL is non-literal `string`.
|
|
58
|
+
*/
|
|
59
|
+
export type ValidQueryBuilder<Schema extends DatabaseSchema, B extends SelectQueryBuilder<Schema, any>> = FragmentErrors<B, Schema> extends [] ? BuilderSQL<B> extends infer SQL extends string ? string extends SQL ? B : BuilderSqlSmall<SQL> extends true ? ValidateSQL<SQL, Schema> extends infer V ? V extends true ? B : V extends string ? `[SQL Error] ${V}` : `[SQL Error] invalid query: ${SQL}` : B : B : B : `[SQL Error] ${FragmentErrors<B, Schema>[number]}`;
|
|
60
|
+
export type SelectResult<SQL extends string, Schema extends DatabaseSchema> = Prettify<GetReturnType<SQL, Schema>>;
|
|
61
|
+
export type SelectResultArray<SQL extends string, Schema extends DatabaseSchema> = Prettify<GetReturnType<SQL, Schema>>[];
|
|
62
|
+
type InvalidOverrideKeys<Result, Overrides> = Exclude<keyof Overrides, keyof Result>;
|
|
63
|
+
export type MergeOverrides<Result, Overrides> = keyof Overrides extends never ? Result : InvalidOverrideKeys<Result, Overrides> extends never ? Prettify<Omit<Result, keyof Overrides> & Overrides> : {
|
|
64
|
+
__error: true;
|
|
65
|
+
message: `Override contains keys not in result type: ${InvalidOverrideKeys<Result, Overrides> & string}`;
|
|
66
|
+
};
|
|
67
|
+
export type SelectBuilderResult<B extends SelectQueryBuilder<any, any>> = Prettify<BuilderReturnType<B>>;
|
|
68
|
+
export type SelectBuilderResultArray<B extends SelectQueryBuilder<any, any>> = SelectBuilderResult<B>[];
|
|
69
|
+
export type QueryHandler = (query: string, params?: unknown[]) => unknown;
|
|
70
|
+
export type IsValidSelect<SQL extends string, Schema extends DatabaseSchema> = ValidateSQL<SQL, Schema> extends true ? true : false;
|
|
71
|
+
export declare function createSelectFn<Schema extends DatabaseSchema, Overrides extends Record<string, unknown> = {}>(handler: QueryHandler): {
|
|
72
|
+
<Q extends string>(query: ValidQuery<Q, Schema>, params?: unknown[]): Promise<MergeOverrides<SelectResultArray<Q, Schema>[number], Overrides>[]>;
|
|
73
|
+
<B extends SelectQueryBuilder<Schema, any>>(query: ValidQueryBuilder<Schema, B>, params?: unknown[]): Promise<MergeOverrides<SelectBuilderResult<B>, Overrides>[]>;
|
|
74
|
+
};
|
|
75
|
+
export {};
|
|
76
|
+
//# sourceMappingURL=db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/builder/db.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export function createSelectFn(handler) {
|
|
2
|
+
function select(query, params) {
|
|
3
|
+
if (typeof query === "string") {
|
|
4
|
+
return handler(query, params);
|
|
5
|
+
}
|
|
6
|
+
const sql = query.toString();
|
|
7
|
+
const finalParams = params ?? [...query.getParams()];
|
|
8
|
+
return handler(sql, finalParams);
|
|
9
|
+
}
|
|
10
|
+
return select;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/builder/db.ts"],"names":[],"mappings":"AA2PA,MAAM,UAAU,cAAc,CAG5B,OAAqB;IAanB,SAAS,MAAM,CACX,KAAmE,EACnE,MAAkB;QAElB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,OAAO,CAAC,KAAK,EAAE,MAAM,CAAiB,CAAC;QAClD,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC,GAAG,EAAE,WAAW,CAAiB,CAAC;IACrD,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { DatabaseSchema } from "../schema.js";
|
|
2
|
+
import type { DeleteTag, WriteParamsFor } from "./write-tag.js";
|
|
3
|
+
import type { BoundWrite } from "./insert.js";
|
|
4
|
+
type PushUsing<T extends DeleteTag, Text extends string, Cond extends boolean> = Omit<T, "using"> & {
|
|
5
|
+
readonly using: readonly [...T["using"], {
|
|
6
|
+
text: Text;
|
|
7
|
+
cond: Cond;
|
|
8
|
+
}];
|
|
9
|
+
};
|
|
10
|
+
type PushWhere<T extends DeleteTag, Text extends string, Cond extends boolean> = Omit<T, "wheres"> & {
|
|
11
|
+
readonly wheres: readonly [...T["wheres"], {
|
|
12
|
+
text: Text;
|
|
13
|
+
cond: Cond;
|
|
14
|
+
}];
|
|
15
|
+
};
|
|
16
|
+
export interface DeleteQueryBuilder<S extends DatabaseSchema, T extends DeleteTag> {
|
|
17
|
+
from<Tbl extends string>(table: Tbl): DeleteQueryBuilder<S, Omit<T, "table"> & {
|
|
18
|
+
table: Tbl;
|
|
19
|
+
}>;
|
|
20
|
+
using<Text extends string>(source: Text): DeleteQueryBuilder<S, PushUsing<T, Text, false>>;
|
|
21
|
+
usingIf<Text extends string>(cond: boolean, source: Text): DeleteQueryBuilder<S, PushUsing<T, Text, true>>;
|
|
22
|
+
where<Text extends string>(cond: Text): DeleteQueryBuilder<S, PushWhere<T, Text, false>>;
|
|
23
|
+
whereIf<Text extends string>(cond: boolean, clause: Text): DeleteQueryBuilder<S, PushWhere<T, Text, true>>;
|
|
24
|
+
returning<R extends string>(cols: R): DeleteQueryBuilder<S, Omit<T, "returning"> & {
|
|
25
|
+
returning: R;
|
|
26
|
+
}>;
|
|
27
|
+
withParams(params: WriteParamsFor<T, S>): BoundWrite<S, T>;
|
|
28
|
+
toString(): string;
|
|
29
|
+
}
|
|
30
|
+
export type EmptyDeleteTag = {
|
|
31
|
+
kind: "delete";
|
|
32
|
+
table: "";
|
|
33
|
+
using: readonly [];
|
|
34
|
+
wheres: readonly [];
|
|
35
|
+
returning: null;
|
|
36
|
+
};
|
|
37
|
+
export declare function createDeleteQuery<S extends DatabaseSchema>(): DeleteQueryBuilder<S, EmptyDeleteTag>;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=delete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../src/builder/delete.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAMnD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,KAAK,SAAS,CAAC,CAAC,SAAS,SAAS,EAAE,IAAI,SAAS,MAAM,EAAE,IAAI,SAAS,OAAO,IACzE,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC;AAChG,KAAK,SAAS,CAAC,CAAC,SAAS,SAAS,EAAE,IAAI,SAAS,MAAM,EAAE,IAAI,SAAS,OAAO,IACzE,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC;AAEnG,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,cAAc,EAAE,CAAC,SAAS,SAAS;IAC7E,IAAI,CAAC,GAAG,SAAS,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,kBAAkB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG;QAAE,KAAK,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;IAC/F,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,EAAE,IAAI,GAAG,kBAAkB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3F,OAAO,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAG,kBAAkB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3G,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACzF,OAAO,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAG,kBAAkB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3G,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG;QAAE,SAAS,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC;IACrG,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,QAAQ,IAAI,MAAM,CAAC;CACtB;AA0BD,MAAM,MAAM,cAAc,GAAG;IACzB,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,EAAE,CAAC;IAAC,KAAK,EAAE,SAAS,EAAE,CAAC;IAAC,MAAM,EAAE,SAAS,EAAE,CAAC;IAAC,SAAS,EAAE,IAAI,CAAC;CACvF,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,cAAc,KAAK,kBAAkB,CAAC,CAAC,EAAE,cAAc,CAAC,CAEnG"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { assembleDeleteSQL } from "./write-assemble.js";
|
|
2
|
+
import { EMPTY_DELETE_STATE } from "./write-state.js";
|
|
3
|
+
import { assertAllProvided, collectScanned, expandScanned, } from "./scanner.js";
|
|
4
|
+
class DeleteImpl {
|
|
5
|
+
st;
|
|
6
|
+
constructor(st) {
|
|
7
|
+
this.st = st;
|
|
8
|
+
}
|
|
9
|
+
next(st) { return new DeleteImpl(st); }
|
|
10
|
+
from(table) { return this.next({ ...this.st, table }); }
|
|
11
|
+
using(src) { return this.next({ ...this.st, usings: [...this.st.usings, src] }); }
|
|
12
|
+
usingIf(c, src) { return c ? this.using(src) : this.next(this.st); }
|
|
13
|
+
where(cond) { return this.next({ ...this.st, wheres: [...this.st.wheres, cond] }); }
|
|
14
|
+
whereIf(c, cond) { return c ? this.where(cond) : this.next(this.st); }
|
|
15
|
+
returning(cols) { return this.next({ ...this.st, returning: cols }); }
|
|
16
|
+
withParams(params) {
|
|
17
|
+
return this.next({ ...this.st, namedParams: { ...this.st.namedParams, ...params } });
|
|
18
|
+
}
|
|
19
|
+
toString() {
|
|
20
|
+
const sql = assembleDeleteSQL(this.st);
|
|
21
|
+
assertAllProvided(sql, this.st.namedParams);
|
|
22
|
+
return expandScanned(sql, this.st.namedParams);
|
|
23
|
+
}
|
|
24
|
+
getParams() {
|
|
25
|
+
const sql = assembleDeleteSQL(this.st);
|
|
26
|
+
assertAllProvided(sql, this.st.namedParams);
|
|
27
|
+
return collectScanned(sql, this.st.namedParams);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export function createDeleteQuery() {
|
|
31
|
+
return new DeleteImpl(EMPTY_DELETE_STATE);
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/builder/delete.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAA2B,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EACH,iBAAiB,EAAE,cAAc,EAAE,aAAa,GACnD,MAAM,cAAc,CAAC;AAoBtB,MAAM,UAAU;IACiB;IAA7B,YAA6B,EAAsB;QAAtB,OAAE,GAAF,EAAE,CAAoB;IAAG,CAAC;IAC/C,IAAI,CAAC,EAAsB,IAAS,OAAO,IAAI,UAAU,CAAS,EAAE,CAAC,CAAC,CAAC,CAAC;IAChF,IAAI,CAAC,KAAa,IAAS,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACrE,KAAK,CAAC,GAAW,IAAS,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/F,OAAO,CAAC,CAAU,EAAE,GAAW,IAAS,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1F,KAAK,CAAC,IAAY,IAAS,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACjG,OAAO,CAAC,CAAU,EAAE,IAAY,IAAS,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5F,SAAS,CAAC,IAAY,IAAS,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACnF,UAAU,CAAC,MAAwC;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,QAAQ;QACJ,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;QAC5C,OAAO,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;IACnD,CAAC;IACD,SAAS;QACL,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;QAC5C,OAAO,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;CACJ;AAMD,MAAM,UAAU,iBAAiB;IAC7B,OAAO,IAAI,UAAU,CAAoB,kBAAkB,CAAqD,CAAC;AACrH,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { DatabaseSchema } from "../schema.js";
|
|
2
|
+
import type { ColumnTypeFromTableKey, RowTypeForTable } from "../schema.js";
|
|
3
|
+
import type { NormalizeQuery, NormalizeQueryKeepParams } from "../parsing.js";
|
|
4
|
+
import type { ExtractInsertColumns, ExtractReturningList, ExtractLastWhere, ExtractBefore, SplitCommaSimple, SplitTopLevel, Trim, CleanIdent, ExceedsLengthBudget } from "../parsing.js";
|
|
5
|
+
import type { InsertTargetTable, UpdateTargetTable, DeleteTargetTable } from "../tables.js";
|
|
6
|
+
import type { Simplify } from "../utils.js";
|
|
7
|
+
import type { GetReturnType } from "../index.js";
|
|
8
|
+
import type { DriverParamValue } from "./scanner.js";
|
|
9
|
+
export type ParamName<Token extends string> = Trim<Token> extends `:${infer Name}` ? CleanParamIdent<Name> : never;
|
|
10
|
+
type CleanParamIdent<S extends string> = ReadName<S>;
|
|
11
|
+
type ColOf<S extends string> = FirstToken<Trim<S>> extends infer T extends string ? T extends `${infer _A}.${infer C}` ? CleanIdent<C> : CleanIdent<T> : never;
|
|
12
|
+
type FirstToken<S extends string> = S extends `${infer A} ${infer _}` ? A : S;
|
|
13
|
+
export type ExtractInsertValues<N extends string> = N extends `${string} values (${infer V})${string}` ? SplitCommaSimple<V> : N extends `${string} values(${infer V2})${string}` ? SplitCommaSimple<V2> : [];
|
|
14
|
+
type ZipInsert<Cols extends readonly string[], Vals extends readonly string[], Table extends string, S extends DatabaseSchema, Acc = {}> = Cols extends readonly [infer C extends string, ...infer CR extends string[]] ? Vals extends readonly [infer V extends string, ...infer VR extends string[]] ? ParamName<V> extends infer P ? [P] extends [never] ? ZipInsert<CR, VR, Table, S, Acc & LooseParams<V>> : P extends string ? ZipInsert<CR, VR, Table, S, Acc & {
|
|
15
|
+
[K in P]: ColumnTypeFromTableKey<Table, CleanIdent<C>, S>;
|
|
16
|
+
}> : ZipInsert<CR, VR, Table, S, Acc> : Acc : Acc : Acc;
|
|
17
|
+
type ConflictSetBlock<N extends string> = N extends `${string} do update set ${infer Rest}` ? ExtractBefore<ExtractBefore<Rest, " where ">, " returning "> : "";
|
|
18
|
+
type IsMultiRowInsert<N extends string> = N extends `${string} values ${infer After}` ? HasTopLevelTupleSep<After> : false;
|
|
19
|
+
type HasTopLevelTupleSep<S extends string, Depth extends any[] = [], Steps extends any[] = []> = Steps["length"] extends 400 ? false : S extends `''${infer R}` ? HasTopLevelTupleSep<R, Depth, [any, ...Steps]> : S extends `'${infer _Q}'${infer R}` ? HasTopLevelTupleSep<R, Depth, [any, ...Steps]> : S extends `$${infer Tag}$${infer Rest}` ? Rest extends `${infer _Body}$${Tag}$${infer After}` ? HasTopLevelTupleSep<After, Depth, [any, ...Steps]> : false : S extends `(${infer R}` ? HasTopLevelTupleSep<R, [any, ...Depth], [any, ...Steps]> : S extends `)${infer R}` ? Depth extends [any, ...infer Rest extends any[]] ? Rest extends [] ? AfterTupleIsComma<R> : HasTopLevelTupleSep<R, Rest, [any, ...Steps]> : HasTopLevelTupleSep<R, [], [any, ...Steps]> : S extends `${infer _C}${infer R}` ? HasTopLevelTupleSep<R, Depth, [any, ...Steps]> : false;
|
|
20
|
+
type AfterTupleIsComma<S extends string> = S extends `${" " | "\t" | "\n"}${infer R}` ? AfterTupleIsComma<R> : S extends `,${string}` ? true : false;
|
|
21
|
+
type InsertParams<N extends string, S extends DatabaseSchema> = IsMultiRowInsert<N> extends true ? {
|
|
22
|
+
__error: true;
|
|
23
|
+
message: "[SQL Error] multi-row VALUES not supported in the typed path; use the untyped driver call";
|
|
24
|
+
} : InsertTargetTable<N, S> extends infer Table extends string ? ZipInsert<ExtractInsertColumns<N>, ExtractInsertValues<N>, Table, S> & SetParams<SplitTopLevel<ConflictSetBlock<N>>, Table, S> & WhereParamsFor<N, Table, S> : {};
|
|
25
|
+
type ExtractSetBlock<N extends string> = N extends `${string} set ${infer Rest}` ? ExtractBefore<ExtractBefore<Rest, " where ">, " returning "> : "";
|
|
26
|
+
type SetParams<Pairs extends readonly string[], Table extends string, S extends DatabaseSchema, Acc = {}> = Pairs extends readonly [infer P extends string, ...infer R extends string[]] ? P extends `${infer Left}=${infer Right}` ? ParamName<Right> extends infer Name ? [Name] extends [never] ? SetParams<R, Table, S, Acc & LooseParams<Right>> : Name extends string ? SetParams<R, Table, S, Acc & {
|
|
27
|
+
[K in Name]: ColumnTypeFromTableKey<Table, CleanIdent<Left>, S>;
|
|
28
|
+
}> : SetParams<R, Table, S, Acc> : Acc : SetParams<R, Table, S, Acc> : Acc;
|
|
29
|
+
type WhereBlock<N extends string> = N extends `${string} where ${string}` ? ExtractLastWhere<N> : "";
|
|
30
|
+
type SplitConds<S extends string> = Reglue<SplitOn<S, " and ">> extends infer A extends string[] ? FlatSplit<A, " or "> : [];
|
|
31
|
+
type SplitOn<S extends string, D extends string> = S extends `${infer H}${D}${infer T}` ? [H, ...SplitOn<T, D>] : [S];
|
|
32
|
+
type FlatSplit<Parts extends readonly string[], D extends string, Acc extends string[] = []> = Parts extends readonly [infer H extends string, ...infer R extends string[]] ? FlatSplit<R, D, [...Acc, ...SplitOn<H, D>]> : Acc;
|
|
33
|
+
type Reglue<Parts extends readonly string[], Acc extends string[] = []> = Parts extends readonly [infer H extends string, infer N extends string, ...infer R extends string[]] ? EndsWithBetween<H> extends true ? Reglue<[`${H} and ${N}`, ...R], Acc> : Reglue<[N, ...R], [...Acc, H]> : Parts extends readonly [infer L extends string] ? [...Acc, L] : Acc;
|
|
34
|
+
type EndsWithBetween<S extends string> = Lowercase<Trim<S>> extends `${string} between ${infer Rest}` ? Rest extends `${string} and ${string}` ? false : true : false;
|
|
35
|
+
type LooseParams<S extends string, Acc = {}> = AllLooseParams<S, Acc>;
|
|
36
|
+
type LooseParamsSkipLit<S extends string, Acc = {}, Steps extends any[] = []> = Steps["length"] extends 64 ? Acc : S extends `${infer Pre}'${infer Rest}` ? Rest extends `${infer _Lit}'${infer After}` ? LooseParamsSkipLit<After, AllLooseParams<Pre, Acc>, [any, ...Steps]> : AllLooseParams<Pre, Acc> : AllLooseParams<S, Acc>;
|
|
37
|
+
type AllLooseParams<S extends string, Acc = {}, Steps extends any[] = []> = Steps["length"] extends 64 ? Acc : S extends `${infer _Pre}:${infer Rest}` ? Rest extends `:${infer R2}` ? AllLooseParams<R2, Acc, [any, ...Steps]> : ReadName<Rest> extends infer Nm extends string ? Nm extends "" ? AllLooseParams<Rest, Acc, [any, ...Steps]> : AllLooseParams<DropName<Rest>, Acc & {
|
|
38
|
+
[K in Nm]: DriverParamValue;
|
|
39
|
+
}, [any, ...Steps]> : Acc : Acc;
|
|
40
|
+
type NameStop = " " | "\t" | "\n" | "," | ";" | ")" | "(" | "'" | '"' | ":" | "." | "=" | "+" | "-" | "*" | "/" | "|" | "%" | ">" | "<" | "!" | "~" | "@" | "#" | "&" | "^" | "[" | "]" | "{" | "}";
|
|
41
|
+
type ReadName<S extends string, Acc extends string = ""> = S extends `${infer C}${infer R}` ? C extends NameStop ? Acc : ReadName<R, `${Acc}${C}`> : Acc;
|
|
42
|
+
type DropName<S extends string> = S extends `${infer C}${infer R}` ? C extends NameStop ? S : DropName<R> : S;
|
|
43
|
+
type WhereParam<Cond extends string, Alias extends string, Table extends string, S extends DatabaseSchema> = Trim<Cond> extends `${infer Lhs} between ${infer Lo} and ${infer Hi}` ? BetweenParams<Lhs, Lo, Hi, Alias, Table, S> : Trim<Cond> extends `${infer Lhs} is not distinct from ${infer Rhs}` ? DistinctParam<Lhs, Rhs, Alias, Table, S> : Trim<Cond> extends `${infer Lhs} is distinct from ${infer Rhs}` ? DistinctParam<Lhs, Rhs, Alias, Table, S> : Trim<Cond> extends `${infer Lhs} in (${infer Inner})` ? ParamName<Inner> extends infer P ? [P] extends [never] ? LooseParams<Inner> : P extends string ? IsBareColumnRef<Lhs> extends true ? ScopedBindArray<Lhs, P, Alias, Table, S> : LooseParams<Inner> : LooseParams<Inner> : LooseParams<Inner> : Trim<Cond> extends `${infer Lhs}:${infer Tail}` ? CleanParamIdent<Tail> extends infer P ? [P] extends [never] ? LooseParams<Cond> : P extends "" ? LooseParams<Cond> : P extends string ? StripTrailingCmpOp<Lhs> extends infer Col extends string ? IsBareColumnRef<Col> extends true ? ScopedBind<Col, P, Alias, Table, S> : LooseParams<Cond> : LooseParams<Cond> : LooseParams<Cond> : LooseParams<Cond> : LooseParams<Cond>;
|
|
44
|
+
type ScopedBind<Col extends string, P extends string, Alias extends string, Table extends string, S extends DatabaseSchema> = Trim<Col> extends `${infer Qual}.${infer _C}` ? Qual extends Alias ? {
|
|
45
|
+
[K in P]: ColumnTypeFromTableKey<Table, ColOf<Col>, S>;
|
|
46
|
+
} : LowerEq<Qual, BaseName<Table>> extends true ? {
|
|
47
|
+
[K in P]: ColumnTypeFromTableKey<Table, ColOf<Col>, S>;
|
|
48
|
+
} : {
|
|
49
|
+
[K in P]: DriverParamValue;
|
|
50
|
+
} : {
|
|
51
|
+
[K in P]: ColumnTypeFromTableKey<Table, ColOf<Col>, S>;
|
|
52
|
+
};
|
|
53
|
+
type ScopedBindArray<Col extends string, P extends string, Alias extends string, Table extends string, S extends DatabaseSchema> = Trim<Col> extends `${infer Qual}.${infer _C}` ? Qual extends Alias ? {
|
|
54
|
+
[K in P]: ColumnTypeFromTableKey<Table, ColOf<Col>, S>[];
|
|
55
|
+
} : LowerEq<Qual, BaseName<Table>> extends true ? {
|
|
56
|
+
[K in P]: ColumnTypeFromTableKey<Table, ColOf<Col>, S>[];
|
|
57
|
+
} : {
|
|
58
|
+
[K in P]: DriverParamValue;
|
|
59
|
+
} : {
|
|
60
|
+
[K in P]: ColumnTypeFromTableKey<Table, ColOf<Col>, S>[];
|
|
61
|
+
};
|
|
62
|
+
type BaseName<TableKey extends string> = TableKey extends `${string}.${infer T}` ? T : TableKey;
|
|
63
|
+
type LowerEq<A extends string, B extends string> = Lowercase<A> extends Lowercase<B> ? true : false;
|
|
64
|
+
type TargetAlias<N extends string> = N extends `update ${infer Rest}` ? AliasAfterTable<Rest> : N extends `delete from ${infer Rest}` ? AliasAfterTable<Rest> : N extends `insert into ${infer Rest}` ? Rest extends `${infer _T} as ${infer A} ${string}` ? FirstToken<Trim<A>> : Rest extends `${infer _T} as ${infer A}` ? FirstToken<Trim<A>> : "" : "";
|
|
65
|
+
type AliasAfterTable<Rest extends string> = Rest extends `${infer _Table} ${infer After}` ? FirstToken<Trim<After>> extends infer A extends string ? A extends "set" | "where" | "from" | "using" | "(" | "as" ? "" : A extends `(${string}` ? "" : A : "" : "";
|
|
66
|
+
type StripTrailingCmpOp<S extends string> = Trim<S> extends `${infer P}!=` ? Trim<P> : Trim<S> extends `${infer P}<>` ? Trim<P> : Trim<S> extends `${infer P}<=` ? Trim<P> : Trim<S> extends `${infer P}>=` ? Trim<P> : Trim<S> extends `${infer P}=` ? Trim<P> : Trim<S> extends `${infer P}<` ? Trim<P> : Trim<S> extends `${infer P}>` ? Trim<P> : Trim<S> extends `${infer P} ${infer Op}` ? Lowercase<Op> extends "like" | "ilike" ? Trim<P> : Trim<S> : Trim<S>;
|
|
67
|
+
type IsBareColumnRef<S extends string> = Trim<S> extends "" ? false : Trim<S> extends `${string}${" " | "+" | "-" | "*" | "/" | "(" | ")" | ":" | "|" | "%"}${string}` ? false : true;
|
|
68
|
+
type BetweenParams<Lhs extends string, Lo extends string, Hi extends string, Alias extends string, Table extends string, S extends DatabaseSchema> = ScopedColType<Lhs, Alias, Table, S> extends infer CT ? IsBareColumnRef<Lhs> extends true ? MergeName<ParamName<Lo>, CT> & MergeName<ParamName<Hi>, CT> & LooseLeftover<Lo, Hi> : LooseParams<`${Lo} ${Hi}`> : {};
|
|
69
|
+
type DistinctParam<Lhs extends string, Rhs extends string, Alias extends string, Table extends string, S extends DatabaseSchema> = IsBareColumnRef<Lhs> extends true ? MergeName<ParamName<Rhs>, ScopedColType<Lhs, Alias, Table, S>> : LooseParams<Rhs>;
|
|
70
|
+
type ScopedColType<Col extends string, Alias extends string, Table extends string, S extends DatabaseSchema> = Trim<Col> extends `${infer Qual}.${infer _C}` ? Qual extends Alias ? ColumnTypeFromTableKey<Table, ColOf<Col>, S> : LowerEq<Qual, BaseName<Table>> extends true ? ColumnTypeFromTableKey<Table, ColOf<Col>, S> : DriverParamValue : ColumnTypeFromTableKey<Table, ColOf<Col>, S>;
|
|
71
|
+
type MergeName<P, T> = [P] extends [never] ? {} : P extends string ? {
|
|
72
|
+
[K in P]: T;
|
|
73
|
+
} : {};
|
|
74
|
+
type LooseLeftover<_Lo extends string, _Hi extends string> = {};
|
|
75
|
+
type WhereParams<Conds extends readonly string[], Alias extends string, Table extends string, S extends DatabaseSchema, Acc = {}> = Conds extends readonly [infer C extends string, ...infer R extends string[]] ? WhereParams<R, Alias, Table, S, Acc & WhereParam<C, Alias, Table, S>> : Acc;
|
|
76
|
+
type WhereParamsFor<N extends string, Table extends string, S extends DatabaseSchema> = WhereBlock<N> extends infer W extends string ? W extends `${string}:${string}` ? WhereParams<SplitConds<W>, TargetAlias<N>, Table, S> : {} : {};
|
|
77
|
+
type WithSplit = {
|
|
78
|
+
head: string;
|
|
79
|
+
tail: string;
|
|
80
|
+
};
|
|
81
|
+
type SplitLeadingWith<S extends string, Acc extends string = "", Depth extends any[] = [], Steps extends any[] = []> = Steps["length"] extends 600 ? never : Depth extends [] ? S extends `update ${infer _R}` ? {
|
|
82
|
+
head: Acc;
|
|
83
|
+
tail: S;
|
|
84
|
+
} : S extends `insert into ${infer _R}` ? {
|
|
85
|
+
head: Acc;
|
|
86
|
+
tail: S;
|
|
87
|
+
} : S extends `delete from ${infer _R}` ? {
|
|
88
|
+
head: Acc;
|
|
89
|
+
tail: S;
|
|
90
|
+
} : S extends `(${infer R}` ? SplitLeadingWith<R, `${Acc}(`, [any, ...Depth], [any, ...Steps]> : S extends `${infer C}${infer R}` ? SplitLeadingWith<R, `${Acc}${C}`, Depth, [any, ...Steps]> : never : S extends `(${infer R}` ? SplitLeadingWith<R, `${Acc}(`, [any, ...Depth], [any, ...Steps]> : S extends `)${infer R}` ? Depth extends [any, ...infer D extends any[]] ? SplitLeadingWith<R, `${Acc})`, D, [any, ...Steps]> : never : S extends `${infer C}${infer R}` ? SplitLeadingWith<R, `${Acc}${C}`, Depth, [any, ...Steps]> : never;
|
|
91
|
+
type ParamsForKind<N extends string, S extends DatabaseSchema> = N extends `insert into ${string}` ? InsertParams<N, S> : N extends `update ${string}` ? UpdateTargetTable<N, S> extends infer T extends string ? SetParams<SplitTopLevel<ExtractSetBlock<N>>, T, S> & WhereParamsFor<N, T, S> : {} : N extends `delete from ${string}` ? DeleteTargetTable<N, S> extends infer T extends string ? WhereParamsFor<N, T, S> : {} : N extends `with ${string}` ? [SplitLeadingWith<N>] extends [never] ? DeleteTargetTable<N, S> extends infer T extends string ? LooseParamsSkipLit<N> & WhereParamsFor<N, T, S> : LooseParamsSkipLit<N> : SplitLeadingWith<N> extends infer W extends WithSplit ? LooseParamsSkipLit<W["head"]> & ParamsForKind<W["tail"], S> : LooseParamsSkipLit<N> : N extends `select ${string}` ? DeleteTargetTable<N, S> extends infer T extends string ? LooseParamsSkipLit<N> & WhereParamsFor<N, T, S> : LooseParamsSkipLit<N> : {};
|
|
92
|
+
export type ExtractParams<Query extends string, S extends DatabaseSchema> = NormalizeQueryKeepParams<Query> extends infer N extends string ? Simplify<ParamsForKind<N, S>> : {};
|
|
93
|
+
type TargetForReturning<N extends string, S extends DatabaseSchema> = N extends `insert into ${string}` ? InsertTargetTable<N, S> : N extends `update ${string}` ? UpdateTargetTable<N, S> : N extends `delete from ${string}` ? DeleteTargetTable<N, S> : never;
|
|
94
|
+
export type ExtractReturning<Query extends string, S extends DatabaseSchema> = Lowercase<Query> extends `${string}returning${string}` ? ExceedsLengthBudget<Query> extends true ? {} : ExtractReturningInner<Query, S> : {};
|
|
95
|
+
type ExtractReturningInner<Query extends string, S extends DatabaseSchema> = NormalizeQuery<Query> extends infer N extends string ? ExtractReturningList<N> extends infer L extends string ? L extends "" ? {} : TargetForReturning<N, S> extends infer T extends string ? Trim<L> extends "*" ? RowTypeForTable<T, S> : Simplify<GetReturnType<`select ${L} from ${T}`, S>> : {} : {} : {};
|
|
96
|
+
export {};
|
|
97
|
+
//# sourceMappingURL=extract-params.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-params.d.ts","sourceRoot":"","sources":["../../src/builder/extract-params.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-params.js","sourceRoot":"","sources":["../../src/builder/extract-params.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export { createSelectQuery, type SelectQueryBuilder } from "./select.js";
|
|
2
|
+
export { createSelectFn } from "./db.js";
|
|
3
|
+
export { createConditionTree, ConditionTreeBuilder } from "./condition-tree.js";
|
|
4
|
+
export { createConditionalQuery, withConditions, conditionalSQL, processConditionalSQL, processParams, normalizeWhitespace, } from "./conditional-sql.js";
|
|
5
|
+
export { assembleSelectSQL } from "./assemble.js";
|
|
6
|
+
export { createInsertQuery, type InsertQueryBuilder } from "./insert.js";
|
|
7
|
+
export { createUpdateQuery, type UpdateQueryBuilder } from "./update.js";
|
|
8
|
+
export { createDeleteQuery, type DeleteQueryBuilder } from "./delete.js";
|
|
9
|
+
export { createSql } from "./sql.js";
|
|
10
|
+
export { createMutateFn, type MutationHandler, type MutationReturnType } from "./mutate.js";
|
|
11
|
+
export { scanPlaceholders, expandScanned, collectScanned, assertAllProvided, prepareScanned, } from "./scanner.js";
|
|
12
|
+
export type { QueryParamValue, QueryParamInput } from "./params.js";
|
|
13
|
+
export type { RuntimeSelectState } from "./state.js";
|
|
14
|
+
export type { AnySqlTag, SqlTag } from "./sql-tag.js";
|
|
15
|
+
export type { BuilderSQL, BuilderReturnType, BuilderResultBrand, } from "./return-type.js";
|
|
16
|
+
export type { ValidQuery, ValidQueryBuilder, FragmentErrors, SelectResult, SelectResultArray, SelectBuilderResult, SelectBuilderResultArray, MergeOverrides, IsValidSelect, QueryHandler, } from "./db.js";
|
|
17
|
+
export type { ConditionalQueryResult, ProcessedSQL, ValidateConditionalSQL, ConditionalSQLOutput, ConditionalSQLOptions, TypedConditionalSQLOutput, } from "./conditional-sql.js";
|
|
18
|
+
export type { DriverParamValue, PlaceholderOccurrence } from "./scanner.js";
|
|
19
|
+
export type { ExtractParams, ExtractReturning } from "./extract-params.js";
|
|
20
|
+
export type { TypedSql, BoundSql } from "./sql.js";
|
|
21
|
+
export type { BoundWrite } from "./insert.js";
|
|
22
|
+
export type { WriteParamsFor, WriteReturnFor } from "./write-tag.js";
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/builder/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EACH,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,mBAAmB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC5F,OAAO,EACH,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,GACrF,MAAM,cAAc,CAAC;AAGtB,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACpE,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtD,YAAY,EACR,UAAU,EACV,iBAAiB,EACjB,kBAAkB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACR,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,aAAa,EACb,YAAY,GACf,MAAM,SAAS,CAAC;AACjB,YAAY,EACR,sBAAsB,EACtB,YAAY,EACZ,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,GAC5B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC5E,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACnD,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// src/builder/index.ts
|
|
2
|
+
// Values
|
|
3
|
+
export { createSelectQuery } from "./select.js";
|
|
4
|
+
export { createSelectFn } from "./db.js";
|
|
5
|
+
export { createConditionTree, ConditionTreeBuilder } from "./condition-tree.js";
|
|
6
|
+
export { createConditionalQuery, withConditions, conditionalSQL, processConditionalSQL, processParams, normalizeWhitespace, } from "./conditional-sql.js";
|
|
7
|
+
export { assembleSelectSQL } from "./assemble.js";
|
|
8
|
+
export { createInsertQuery } from "./insert.js";
|
|
9
|
+
export { createUpdateQuery } from "./update.js";
|
|
10
|
+
export { createDeleteQuery } from "./delete.js";
|
|
11
|
+
export { createSql } from "./sql.js";
|
|
12
|
+
export { createMutateFn } from "./mutate.js";
|
|
13
|
+
export { scanPlaceholders, expandScanned, collectScanned, assertAllProvided, prepareScanned, } from "./scanner.js";
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/builder/index.ts"],"names":[],"mappings":"AAAA,uBAAuB;AAEvB,SAAS;AACT,OAAO,EAAE,iBAAiB,EAA2B,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EACH,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,mBAAmB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAA2B,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAA2B,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAA2B,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,cAAc,EAAiD,MAAM,aAAa,CAAC;AAC5F,OAAO,EACH,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,GACrF,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { DatabaseSchema } from "../schema.js";
|
|
2
|
+
import { type DriverParamValue } from "./scanner.js";
|
|
3
|
+
import type { InsertTag, WriteParamsFor, WriteReturnFor } from "./write-tag.js";
|
|
4
|
+
type PushVal<T extends InsertTag, Col extends string, Text extends string, Cond extends boolean> = Omit<T, "values"> & {
|
|
5
|
+
readonly values: readonly [...T["values"], {
|
|
6
|
+
col: Col;
|
|
7
|
+
text: Text;
|
|
8
|
+
cond: Cond;
|
|
9
|
+
}];
|
|
10
|
+
};
|
|
11
|
+
export interface InsertQueryBuilder<S extends DatabaseSchema, T extends InsertTag> {
|
|
12
|
+
into<Tbl extends string>(table: Tbl): InsertQueryBuilder<S, Omit<T, "table"> & {
|
|
13
|
+
table: Tbl;
|
|
14
|
+
}>;
|
|
15
|
+
columns<C extends string>(cols: C): InsertQueryBuilder<S, Omit<T, "columns"> & {
|
|
16
|
+
columns: C;
|
|
17
|
+
}>;
|
|
18
|
+
fromSelect<Q extends string>(q: Q): InsertQueryBuilder<S, Omit<T, "fromSelect"> & {
|
|
19
|
+
fromSelect: Q;
|
|
20
|
+
}>;
|
|
21
|
+
value<Col extends string, Text extends string>(col: Col, text: Text): InsertQueryBuilder<S, PushVal<T, Col, Text, false>>;
|
|
22
|
+
valueIf<Col extends string, Text extends string>(cond: boolean, col: Col, text: Text): InsertQueryBuilder<S, PushVal<T, Col, Text, true>>;
|
|
23
|
+
onConflict<C extends string>(clause: C): InsertQueryBuilder<S, Omit<T, "conflict"> & {
|
|
24
|
+
conflict: C;
|
|
25
|
+
}>;
|
|
26
|
+
returning<R extends string>(cols: R): InsertQueryBuilder<S, Omit<T, "returning"> & {
|
|
27
|
+
returning: R;
|
|
28
|
+
}>;
|
|
29
|
+
withParams(params: WriteParamsFor<T, S>): BoundWrite<S, T>;
|
|
30
|
+
toString(): string;
|
|
31
|
+
}
|
|
32
|
+
export interface BoundWrite<S extends DatabaseSchema, T> {
|
|
33
|
+
toString(): string;
|
|
34
|
+
getParams(): ReadonlyArray<DriverParamValue>;
|
|
35
|
+
readonly __returning?: WriteReturnFor<T, S>;
|
|
36
|
+
}
|
|
37
|
+
export type EmptyInsertTag = {
|
|
38
|
+
kind: "insert";
|
|
39
|
+
table: "";
|
|
40
|
+
values: readonly [];
|
|
41
|
+
conflict: null;
|
|
42
|
+
columns: "";
|
|
43
|
+
fromSelect: "";
|
|
44
|
+
wheres: readonly [];
|
|
45
|
+
using: readonly [];
|
|
46
|
+
from: readonly [];
|
|
47
|
+
returning: null;
|
|
48
|
+
};
|
|
49
|
+
export declare function createInsertQuery<S extends DatabaseSchema>(): InsertQueryBuilder<S, EmptyInsertTag>;
|
|
50
|
+
export {};
|
|
51
|
+
//# sourceMappingURL=insert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../../src/builder/insert.ts"],"names":[],"mappings":"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"}
|