prisma-ts-select 0.0.34 → 0.1.3

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.
Files changed (48) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1343 -362
  3. package/assets/groupBy.gif +0 -0
  4. package/assets/joinUnsafeIgnoreType.gif +0 -0
  5. package/assets/joinUnsafeTypeEnforced.gif +0 -0
  6. package/assets/typesafe-join.gif +0 -0
  7. package/assets/typesafe-join.png +0 -0
  8. package/assets/{whereisNull.gif → whereIsNull.gif} +0 -0
  9. package/assets/whereNotNull.gif +0 -0
  10. package/dist/bin.cjs +1 -1
  11. package/dist/bin.js +1 -1
  12. package/dist/chunk-47KZVQLD.js +283 -0
  13. package/dist/chunk-54D2J5AR.cjs +291 -0
  14. package/dist/extend/dialects/index.d.ts +13 -0
  15. package/dist/extend/dialects/index.js +194 -0
  16. package/dist/extend/dialects/mysql-v6.d.ts +103 -0
  17. package/dist/extend/dialects/mysql-v6.js +157 -0
  18. package/dist/extend/dialects/mysql-v7.d.ts +6 -0
  19. package/dist/extend/dialects/mysql-v7.js +143 -0
  20. package/dist/extend/dialects/mysql.d.ts +93 -0
  21. package/dist/extend/dialects/mysql.js +161 -0
  22. package/dist/extend/dialects/postgresql-v6.d.ts +101 -0
  23. package/dist/extend/dialects/postgresql-v6.js +147 -0
  24. package/dist/extend/dialects/postgresql-v7.d.ts +101 -0
  25. package/dist/extend/dialects/postgresql-v7.js +147 -0
  26. package/dist/extend/dialects/postgresql.d.ts +92 -0
  27. package/dist/extend/dialects/postgresql.js +158 -0
  28. package/dist/extend/dialects/shared.d.ts +10 -0
  29. package/dist/extend/dialects/shared.js +14 -0
  30. package/dist/extend/dialects/sqlite.d.ts +68 -0
  31. package/dist/extend/dialects/sqlite.js +146 -0
  32. package/dist/extend/dialects/types.d.ts +13 -0
  33. package/dist/extend/dialects/types.js +4 -0
  34. package/dist/extend/extend.d.ts +292 -46
  35. package/dist/extend/extend.js +769 -162
  36. package/dist/extend/sql-expr-BaKWzJ-r.d.ts +10 -0
  37. package/dist/extend/types-B0F8m0ok.d.ts +8 -0
  38. package/dist/generator.cjs +1 -1
  39. package/dist/generator.js +1 -1
  40. package/package.json +44 -42
  41. package/built/extend.cjs +0 -680
  42. package/built/extend.d.cts +0 -520
  43. package/built/extend.d.ts +0 -520
  44. package/built/extend.js +0 -678
  45. package/dist/chunk-TBO3MX7Q.cjs +0 -195
  46. package/dist/chunk-X3N5N5KQ.js +0 -187
  47. package/dist/extend/extend.cjs +0 -357
  48. package/dist/extend/extend.d.cts +0 -264
@@ -0,0 +1,93 @@
1
+ import { Dialect } from './types.js';
2
+ import { S as SQLExpr } from '../sql-expr-BaKWzJ-r.js';
3
+ import { J as JSONValue, a as JSONObject } from '../types-B0F8m0ok.js';
4
+ import { Decimal } from '@prisma/client/runtime/client';
5
+ import { FilterCols, ColName, FilterJsonCols } from './shared.js';
6
+
7
+ type MySQLCastTypeMap = {
8
+ SIGNED: bigint;
9
+ UNSIGNED: bigint;
10
+ DECIMAL: Decimal;
11
+ CHAR: string;
12
+ BINARY: Buffer;
13
+ DATE: Date;
14
+ DATETIME: Date;
15
+ TIME: string;
16
+ JSON: JSONValue;
17
+ FLOAT: number;
18
+ DOUBLE: number;
19
+ };
20
+ type IntervalUnit = 'MICROSECOND' | 'SECOND' | 'MINUTE' | 'HOUR' | 'DAY' | 'WEEK' | 'MONTH' | 'QUARTER' | 'YEAR';
21
+ declare const mysqlContextFns: <TColEntries extends [string, unknown] = never, TCriteria extends object = object>(quoteFn: (ref: string) => string, condFn: (criteria: TCriteria) => string) => {
22
+ avg: (col: FilterCols<TColEntries, number> | SQLExpr<number>) => SQLExpr<Decimal>;
23
+ sum: (col: FilterCols<TColEntries, number> | SQLExpr<number>) => SQLExpr<Decimal>;
24
+ countAll: () => SQLExpr<bigint>;
25
+ count: (col: ColName<TColEntries> | "*") => SQLExpr<bigint>;
26
+ countDistinct: (col: ColName<TColEntries>) => SQLExpr<bigint>;
27
+ length: (col: FilterCols<TColEntries, string> | SQLExpr<string>) => SQLExpr<bigint>;
28
+ groupConcat: (col: ColName<TColEntries>, sep?: string) => SQLExpr<string>;
29
+ bitAnd: (col: FilterCols<TColEntries, number>) => SQLExpr<number>;
30
+ bitOr: (col: FilterCols<TColEntries, number>) => SQLExpr<number>;
31
+ bitXor: (col: FilterCols<TColEntries, number>) => SQLExpr<number>;
32
+ stddev: (col: FilterCols<TColEntries, number>) => SQLExpr<number>;
33
+ stddevSamp: (col: FilterCols<TColEntries, number>) => SQLExpr<number>;
34
+ variance: (col: FilterCols<TColEntries, number>) => SQLExpr<number>;
35
+ varSamp: (col: FilterCols<TColEntries, number>) => SQLExpr<number>;
36
+ jsonArrayAgg: (col: ColName<TColEntries>) => SQLExpr<JSONValue>;
37
+ jsonObjectAgg: (key: ColName<TColEntries>, val: ColName<TColEntries>) => SQLExpr<JSONValue>;
38
+ concat: (args_0: SQLExpr<string> | FilterCols<TColEntries, string>, ...args: (SQLExpr<string> | FilterCols<TColEntries, string>)[]) => SQLExpr<string>;
39
+ substring: (col: FilterCols<TColEntries, string> | SQLExpr<string>, start: number, len?: number) => SQLExpr<string>;
40
+ left: (col: FilterCols<TColEntries, string> | SQLExpr<string>, n: number) => SQLExpr<string>;
41
+ right: (col: FilterCols<TColEntries, string> | SQLExpr<string>, n: number) => SQLExpr<string>;
42
+ repeat: (col: FilterCols<TColEntries, string> | SQLExpr<string>, n: number) => SQLExpr<string>;
43
+ reverse: (col: FilterCols<TColEntries, string> | SQLExpr<string>) => SQLExpr<string>;
44
+ lpad: (col: FilterCols<TColEntries, string> | SQLExpr<string>, len: number, pad: string) => SQLExpr<string>;
45
+ rpad: (col: FilterCols<TColEntries, string> | SQLExpr<string>, len: number, pad: string) => SQLExpr<string>;
46
+ locate: (substr: string, col: FilterCols<TColEntries, string> | SQLExpr<string>) => SQLExpr<bigint>;
47
+ space: (n: number) => SQLExpr<string>;
48
+ now: () => SQLExpr<Date>;
49
+ curDate: () => SQLExpr<Date>;
50
+ year: (col: FilterCols<TColEntries, Date> | SQLExpr<Date>) => SQLExpr<bigint>;
51
+ month: (col: FilterCols<TColEntries, Date> | SQLExpr<Date>) => SQLExpr<bigint>;
52
+ day: (col: FilterCols<TColEntries, Date> | SQLExpr<Date>) => SQLExpr<bigint>;
53
+ hour: (col: FilterCols<TColEntries, Date> | SQLExpr<Date>) => SQLExpr<bigint>;
54
+ minute: (col: FilterCols<TColEntries, Date> | SQLExpr<Date>) => SQLExpr<number>;
55
+ second: (col: FilterCols<TColEntries, Date> | SQLExpr<Date>) => SQLExpr<number>;
56
+ $if: <T>(cond: TCriteria | SQLExpr<unknown>, trueVal: SQLExpr<T>, falseVal: SQLExpr<T>) => SQLExpr<T>;
57
+ ifNull: <T>(col: FilterCols<TColEntries, T> | SQLExpr<T>, fallback: SQLExpr<NonNullable<T>>) => SQLExpr<NonNullable<T>>;
58
+ greatest: <T>(args_0: FilterCols<TColEntries, T> | SQLExpr<T>, ...args: (FilterCols<TColEntries, T> | SQLExpr<T>)[]) => SQLExpr<T | null>;
59
+ least: <T>(args_0: FilterCols<TColEntries, T> | SQLExpr<T>, ...args: (FilterCols<TColEntries, T> | SQLExpr<T>)[]) => SQLExpr<T | null>;
60
+ dateAdd: (col: FilterCols<TColEntries, Date> | SQLExpr<Date>, n: number, unit: IntervalUnit) => SQLExpr<Date>;
61
+ dateSub: (col: FilterCols<TColEntries, Date> | SQLExpr<Date>, n: number, unit: IntervalUnit) => SQLExpr<Date>;
62
+ dateFormat: (col: FilterCols<TColEntries, Date> | SQLExpr<Date>, fmt: string) => SQLExpr<string>;
63
+ dateDiff: (d1: FilterCols<TColEntries, Date> | SQLExpr<Date>, d2: FilterCols<TColEntries, Date> | SQLExpr<Date>) => SQLExpr<number>;
64
+ quarter: (col: FilterCols<TColEntries, Date> | SQLExpr<Date>) => SQLExpr<bigint>;
65
+ weekOfYear: (col: FilterCols<TColEntries, Date> | SQLExpr<Date>) => SQLExpr<number>;
66
+ dayName: (col: FilterCols<TColEntries, Date> | SQLExpr<Date>) => SQLExpr<string>;
67
+ lastDay: (col: FilterCols<TColEntries, Date> | SQLExpr<Date>) => SQLExpr<Date>;
68
+ abs: (col: FilterCols<TColEntries, number> | SQLExpr<number>) => SQLExpr<bigint | number>;
69
+ ceil: (col: FilterCols<TColEntries, number> | SQLExpr<number>) => SQLExpr<bigint | number>;
70
+ floor: (col: FilterCols<TColEntries, number> | SQLExpr<number>) => SQLExpr<bigint | number>;
71
+ round: (col: FilterCols<TColEntries, number> | SQLExpr<number>, decimals?: number) => SQLExpr<number>;
72
+ power: (base: FilterCols<TColEntries, number> | SQLExpr<number>, exp: number | SQLExpr<number>) => SQLExpr<number>;
73
+ sqrt: (col: FilterCols<TColEntries, number> | SQLExpr<number>) => SQLExpr<number>;
74
+ mod: (col: FilterCols<TColEntries, number> | SQLExpr<number>, divisor: number) => SQLExpr<bigint | number>;
75
+ sign: (col: FilterCols<TColEntries, number> | SQLExpr<number>) => SQLExpr<bigint | number>;
76
+ exp: (col: FilterCols<TColEntries, number> | SQLExpr<number>) => SQLExpr<number>;
77
+ pi: () => SQLExpr<number>;
78
+ ln: (x: FilterCols<TColEntries, number> | SQLExpr<number>) => SQLExpr<number>;
79
+ log: (x: FilterCols<TColEntries, number> | SQLExpr<number>) => SQLExpr<number>;
80
+ log2: (x: FilterCols<TColEntries, number> | SQLExpr<number>) => SQLExpr<number>;
81
+ log10: (x: FilterCols<TColEntries, number> | SQLExpr<number>) => SQLExpr<number>;
82
+ truncate: (x: FilterCols<TColEntries, number> | SQLExpr<number>, n: number) => SQLExpr<number>;
83
+ rand: (seed?: number) => SQLExpr<number>;
84
+ jsonExtract: (col: FilterJsonCols<TColEntries> | SQLExpr<JSONValue>, path: string) => SQLExpr<JSONValue>;
85
+ jsonArray: (args_0: SQLExpr<unknown> | ColName<TColEntries>, ...args: (SQLExpr<unknown> | ColName<TColEntries>)[]) => SQLExpr<JSONValue[]>;
86
+ jsonObject: (pairs: [string, ColName<TColEntries> | SQLExpr<unknown>][]) => SQLExpr<JSONObject>;
87
+ cast: <T extends keyof MySQLCastTypeMap>(expr: ColName<TColEntries> | SQLExpr<unknown>, type: T) => SQLExpr<MySQLCastTypeMap[T]>;
88
+ };
89
+ type DialectFns<TColEntries extends [string, unknown] = never, TCriteria extends object = object> = ReturnType<typeof mysqlContextFns<TColEntries, TCriteria>>;
90
+ declare const supportedJoinMethods: readonly ["join", "joinUnsafeTypeEnforced", "joinUnsafeIgnoreType", "innerJoin", "innerJoinUnsafeTypeEnforced", "innerJoinUnsafeIgnoreType", "leftJoin", "leftJoinUnsafeTypeEnforced", "leftJoinUnsafeIgnoreType", "rightJoin", "rightJoinUnsafeTypeEnforced", "rightJoinUnsafeIgnoreType", "crossJoin", "crossJoinUnsafeTypeEnforced", "crossJoinUnsafeIgnoreType", "manyToManyJoin"];
91
+ declare const mysqlDialect: Dialect;
92
+
93
+ export { type DialectFns, type IntervalUnit, mysqlContextFns, mysqlDialect, supportedJoinMethods };
@@ -0,0 +1,161 @@
1
+ // src/sql-expr.ts
2
+ function sqlExpr(sql) {
3
+ return { sql, toString() {
4
+ return sql;
5
+ } };
6
+ }
7
+ function resolveArg(arg, quoteFn) {
8
+ if (typeof arg !== "string") return arg.sql;
9
+ return quoteFn(arg);
10
+ }
11
+
12
+ // src/dialects/shared.ts
13
+ var esc = (s) => s.replace(/'/g, "''");
14
+ var flattenJsonObjectPairs = (pairs, quoteFn) => pairs.flatMap(([k, v]) => [`'${esc(k)}'`, resolveArg(v, quoteFn)]);
15
+
16
+ // src/dialects/mysql.ts
17
+ var MYSQL_CAST_TYPES = /* @__PURE__ */ new Set(["SIGNED", "UNSIGNED", "DECIMAL", "CHAR", "BINARY", "DATE", "DATETIME", "TIME", "JSON", "FLOAT", "DOUBLE"]);
18
+ var mysqlContextFns = (quoteFn, condFn) => ({
19
+ avg: (col) => sqlExpr(`AVG(${resolveArg(col, quoteFn)})`),
20
+ sum: (col) => sqlExpr(`SUM(${resolveArg(col, quoteFn)})`),
21
+ countAll: () => sqlExpr("COUNT(*)"),
22
+ count: (col) => sqlExpr(col === "*" ? "COUNT(*)" : `COUNT(${quoteFn(col)})`),
23
+ countDistinct: (col) => sqlExpr(`COUNT(DISTINCT ${quoteFn(col)})`),
24
+ length: (col) => sqlExpr(`LENGTH(${resolveArg(col, quoteFn)})`),
25
+ groupConcat: (col, sep) => sqlExpr(`GROUP_CONCAT(${quoteFn(col)}${sep !== void 0 ? ` SEPARATOR '${esc(sep)}'` : ""})`),
26
+ bitAnd: (col) => sqlExpr(`BIT_AND(${quoteFn(col)})`),
27
+ bitOr: (col) => sqlExpr(`BIT_OR(${quoteFn(col)})`),
28
+ bitXor: (col) => sqlExpr(`BIT_XOR(${quoteFn(col)})`),
29
+ stddev: (col) => sqlExpr(`STDDEV(${quoteFn(col)})`),
30
+ stddevSamp: (col) => sqlExpr(`STDDEV_SAMP(${quoteFn(col)})`),
31
+ variance: (col) => sqlExpr(`VARIANCE(${quoteFn(col)})`),
32
+ varSamp: (col) => sqlExpr(`VAR_SAMP(${quoteFn(col)})`),
33
+ jsonArrayAgg: (col) => sqlExpr(`JSON_ARRAYAGG(${quoteFn(col)})`),
34
+ jsonObjectAgg: (key, val) => sqlExpr(`JSON_OBJECTAGG(${quoteFn(key)}, ${quoteFn(val)})`),
35
+ concat: (...args) => {
36
+ if (args.length === 0) throw new Error("concat: requires at least one argument");
37
+ return sqlExpr(`CONCAT(${args.map((a) => resolveArg(a, quoteFn)).join(", ")})`);
38
+ },
39
+ substring: (col, start, len) => sqlExpr(`SUBSTRING(${resolveArg(col, quoteFn)}, ${start}${len !== void 0 ? `, ${len}` : ""})`),
40
+ left: (col, n) => sqlExpr(`LEFT(${resolveArg(col, quoteFn)}, ${n})`),
41
+ right: (col, n) => sqlExpr(`RIGHT(${resolveArg(col, quoteFn)}, ${n})`),
42
+ repeat: (col, n) => sqlExpr(`REPEAT(${resolveArg(col, quoteFn)}, ${n})`),
43
+ reverse: (col) => sqlExpr(`REVERSE(${resolveArg(col, quoteFn)})`),
44
+ lpad: (col, len, pad) => sqlExpr(`LPAD(${resolveArg(col, quoteFn)}, ${len}, '${esc(pad)}')`),
45
+ rpad: (col, len, pad) => sqlExpr(`RPAD(${resolveArg(col, quoteFn)}, ${len}, '${esc(pad)}')`),
46
+ locate: (substr, col) => sqlExpr(`LOCATE('${esc(substr)}', ${resolveArg(col, quoteFn)})`),
47
+ space: (n) => sqlExpr(`SPACE(${n})`),
48
+ // DateTime base fns (MySQL defaults)
49
+ now: () => sqlExpr("NOW()"),
50
+ curDate: () => sqlExpr("CURDATE()"),
51
+ year: (col) => sqlExpr(`YEAR(${resolveArg(col, quoteFn)})`),
52
+ month: (col) => sqlExpr(`MONTH(${resolveArg(col, quoteFn)})`),
53
+ day: (col) => sqlExpr(`DAY(${resolveArg(col, quoteFn)})`),
54
+ hour: (col) => sqlExpr(`HOUR(${resolveArg(col, quoteFn)})`),
55
+ minute: (col) => sqlExpr(`MINUTE(${resolveArg(col, quoteFn)})`),
56
+ second: (col) => sqlExpr(`SECOND(${resolveArg(col, quoteFn)})`),
57
+ // Control flow
58
+ $if: (cond, trueVal, falseVal) => {
59
+ const condSql = typeof cond === "object" && cond !== null && "sql" in cond ? cond.sql : condFn(cond);
60
+ return sqlExpr(`IF(${condSql}, ${trueVal.sql}, ${falseVal.sql})`);
61
+ },
62
+ ifNull: (col, fallback) => sqlExpr(`IFNULL(${resolveArg(col, quoteFn)}, ${fallback.sql})`),
63
+ // NULL-poisoned: returns NULL if any arg is NULL
64
+ greatest: (...args) => {
65
+ if (args.length === 0) throw new Error("greatest: requires at least one argument");
66
+ return sqlExpr(`GREATEST(${args.map((a) => resolveArg(a, quoteFn)).join(", ")})`);
67
+ },
68
+ // NULL-poisoned: returns NULL if any arg is NULL
69
+ least: (...args) => {
70
+ if (args.length === 0) throw new Error("least: requires at least one argument");
71
+ return sqlExpr(`LEAST(${args.map((a) => resolveArg(a, quoteFn)).join(", ")})`);
72
+ },
73
+ // DateTime fns (MySQL-only)
74
+ dateAdd: (col, n, unit) => {
75
+ if (!Number.isFinite(n)) throw new Error(`dateAdd: n must be a finite number, got ${n}`);
76
+ return sqlExpr(`DATE_ADD(${resolveArg(col, quoteFn)}, INTERVAL ${n} ${unit})`);
77
+ },
78
+ dateSub: (col, n, unit) => {
79
+ if (!Number.isFinite(n)) throw new Error(`dateSub: n must be a finite number, got ${n}`);
80
+ return sqlExpr(`DATE_SUB(${resolveArg(col, quoteFn)}, INTERVAL ${n} ${unit})`);
81
+ },
82
+ /**
83
+ * MySQL `DATE_FORMAT` returns `NULL` if the date column value is `NULL`.
84
+ * Unknown format specifiers are passed through literally, not as errors.
85
+ */
86
+ dateFormat: (col, fmt) => sqlExpr(`DATE_FORMAT(${resolveArg(col, quoteFn)}, '${esc(fmt)}')`),
87
+ dateDiff: (d1, d2) => sqlExpr(`DATEDIFF(${resolveArg(d1, quoteFn)}, ${resolveArg(d2, quoteFn)})`),
88
+ quarter: (col) => sqlExpr(`QUARTER(${resolveArg(col, quoteFn)})`),
89
+ weekOfYear: (col) => sqlExpr(`WEEKOFYEAR(${resolveArg(col, quoteFn)})`),
90
+ dayName: (col) => sqlExpr(`DAYNAME(${resolveArg(col, quoteFn)})`),
91
+ lastDay: (col) => sqlExpr(`LAST_DAY(${resolveArg(col, quoteFn)})`),
92
+ // ── Math ─────────────────────────────────────────────────────────────────
93
+ abs: (col) => sqlExpr(`ABS(${resolveArg(col, quoteFn)})`),
94
+ ceil: (col) => sqlExpr(`CEIL(${resolveArg(col, quoteFn)})`),
95
+ floor: (col) => sqlExpr(`FLOOR(${resolveArg(col, quoteFn)})`),
96
+ round: (col, decimals) => sqlExpr(decimals !== void 0 ? `ROUND(${resolveArg(col, quoteFn)}, ${decimals})` : `ROUND(${resolveArg(col, quoteFn)})`),
97
+ power: (base, exp) => sqlExpr(`POWER(${resolveArg(base, quoteFn)}, ${typeof exp === "number" ? exp : exp.sql})`),
98
+ sqrt: (col) => sqlExpr(`SQRT(${resolveArg(col, quoteFn)})`),
99
+ mod: (col, divisor) => sqlExpr(`MOD(${resolveArg(col, quoteFn)}, ${divisor})`),
100
+ sign: (col) => sqlExpr(`SIGN(${resolveArg(col, quoteFn)})`),
101
+ exp: (col) => sqlExpr(`EXP(${resolveArg(col, quoteFn)})`),
102
+ // ── Math (MySQL-specific) ─────────────────────────────────────────────────
103
+ pi: () => sqlExpr("PI()"),
104
+ ln: (x) => sqlExpr(`LN(${resolveArg(x, quoteFn)})`),
105
+ /** Natural log (ln(x)). Use `log10(x)` for base-10. Note: PG `log(x)` is base-10 — opposite semantics. */
106
+ log: (x) => sqlExpr(`LOG(${resolveArg(x, quoteFn)})`),
107
+ log2: (x) => sqlExpr(`LOG2(${resolveArg(x, quoteFn)})`),
108
+ log10: (x) => sqlExpr(`LOG10(${resolveArg(x, quoteFn)})`),
109
+ truncate: (x, n) => sqlExpr(`TRUNCATE(${resolveArg(x, quoteFn)}, ${n})`),
110
+ rand: (seed) => sqlExpr(seed !== void 0 ? `RAND(${seed})` : "RAND()"),
111
+ // ── JSON scalar fns ───────────────────────────────────────────────────────
112
+ jsonExtract: (col, path) => sqlExpr(`JSON_EXTRACT(${resolveArg(col, quoteFn)}, '${esc(path)}')`),
113
+ jsonArray: (...args) => sqlExpr(`JSON_ARRAY(${args.map((a) => resolveArg(a, quoteFn)).join(", ")})`),
114
+ jsonObject: (pairs) => sqlExpr(`JSON_OBJECT(${flattenJsonObjectPairs(pairs, quoteFn).join(", ")})`),
115
+ // ── Type coercion ────────────────────────────────────────────────────────
116
+ cast: (expr, type) => {
117
+ if (!MYSQL_CAST_TYPES.has(type)) throw new Error(`cast: invalid cast type '${String(type)}'`);
118
+ return sqlExpr(`CAST(${resolveArg(expr, quoteFn)} AS ${type})`);
119
+ }
120
+ });
121
+ var supportedJoinMethods = [
122
+ "join",
123
+ "joinUnsafeTypeEnforced",
124
+ "joinUnsafeIgnoreType",
125
+ "innerJoin",
126
+ "innerJoinUnsafeTypeEnforced",
127
+ "innerJoinUnsafeIgnoreType",
128
+ "leftJoin",
129
+ "leftJoinUnsafeTypeEnforced",
130
+ "leftJoinUnsafeIgnoreType",
131
+ "rightJoin",
132
+ "rightJoinUnsafeTypeEnforced",
133
+ "rightJoinUnsafeIgnoreType",
134
+ "crossJoin",
135
+ "crossJoinUnsafeTypeEnforced",
136
+ "crossJoinUnsafeIgnoreType",
137
+ "manyToManyJoin"
138
+ ];
139
+ var mysqlDialect = {
140
+ name: "mysql",
141
+ needsBooleanCoercion: () => true,
142
+ quote: (id, _isAlias) => `\`${id}\``,
143
+ quoteTableIdentifier: (name, _isAlias) => `\`${name}\``,
144
+ quoteQualifiedColumn: (ref) => {
145
+ if (!ref.includes(".")) return `\`${ref}\``;
146
+ const [table, col] = ref.split(".", 2);
147
+ return `\`${table}\`.\`${col}\``;
148
+ },
149
+ quoteOrderByClause: (clause) => {
150
+ const parts = clause.trim().split(/\s+/);
151
+ const colRef = parts[0] ?? "";
152
+ const suffix = parts.slice(1).join(" ");
153
+ const quoted = colRef.includes(".") ? (() => {
154
+ const [table, col] = colRef.split(".", 2);
155
+ return `\`${table}\`.\`${col}\``;
156
+ })() : `\`${colRef}\``;
157
+ return suffix ? `${quoted} ${suffix}` : quoted;
158
+ }
159
+ };
160
+
161
+ export { mysqlContextFns, mysqlDialect, supportedJoinMethods };
@@ -0,0 +1,101 @@
1
+ import { ColName, FilterCols, FilterJsonCols } from './shared.js';
2
+ import * as _prisma_client_runtime_client from '@prisma/client/runtime/client';
3
+ import { Decimal } from '@prisma/client/runtime/client';
4
+ import { PgExtractField, PgDateTruncUnit } from './postgresql.js';
5
+ export { postgresqlDialect } from './postgresql.js';
6
+ import { J as JSONValue, a as JSONObject } from '../types-B0F8m0ok.js';
7
+ import { S as SQLExpr } from '../sql-expr-BaKWzJ-r.js';
8
+ import './types.js';
9
+
10
+ declare const postgresqlV6ContextFns: <TColEntries extends [string, unknown] = never>(quoteFn: (ref: string) => string) => {
11
+ countAll: () => SQLExpr<bigint>;
12
+ count: (col: ColName<TColEntries> | "*") => SQLExpr<bigint>;
13
+ countDistinct: (col: ColName<TColEntries>) => SQLExpr<bigint>;
14
+ ceil: (col: FilterCols<TColEntries, number> | SQLExpr<number>) => SQLExpr<number | Decimal>;
15
+ floor: (col: FilterCols<TColEntries, number> | SQLExpr<number>) => SQLExpr<number | Decimal>;
16
+ avg: (col: SQLExpr<number> | FilterCols<TColEntries, number>) => SQLExpr<number>;
17
+ sum: (col: SQLExpr<number> | FilterCols<TColEntries, number>) => SQLExpr<number>;
18
+ length: (col: SQLExpr<string> | FilterCols<TColEntries, string>) => SQLExpr<number>;
19
+ stringAgg: (col: ColName<TColEntries>, sep: string) => SQLExpr<string>;
20
+ arrayAgg: (col: ColName<TColEntries>) => SQLExpr<unknown[]>;
21
+ stddevPop: (col: FilterCols<TColEntries, number>) => SQLExpr<number>;
22
+ stddevSamp: (col: FilterCols<TColEntries, number>) => SQLExpr<number>;
23
+ varPop: (col: FilterCols<TColEntries, number>) => SQLExpr<number>;
24
+ varSamp: (col: FilterCols<TColEntries, number>) => SQLExpr<number>;
25
+ boolAnd: (col: FilterCols<TColEntries, boolean>) => SQLExpr<boolean>;
26
+ boolOr: (col: FilterCols<TColEntries, boolean>) => SQLExpr<boolean>;
27
+ jsonAgg: (col: ColName<TColEntries>) => SQLExpr<JSONValue[]>;
28
+ bitAnd: (col: FilterCols<TColEntries, number>) => SQLExpr<number>;
29
+ bitOr: (col: FilterCols<TColEntries, number>) => SQLExpr<number>;
30
+ jsonObjectAgg: (key: ColName<TColEntries>, val: ColName<TColEntries>) => SQLExpr<JSONValue>;
31
+ concat: (args_0: SQLExpr<string> | FilterCols<TColEntries, string>, ...args: (SQLExpr<string> | FilterCols<TColEntries, string>)[]) => SQLExpr<string>;
32
+ substring: (col: SQLExpr<string> | FilterCols<TColEntries, string>, start: number, len?: number) => SQLExpr<string>;
33
+ left: (col: SQLExpr<string> | FilterCols<TColEntries, string>, n: number) => SQLExpr<string>;
34
+ right: (col: SQLExpr<string> | FilterCols<TColEntries, string>, n: number) => SQLExpr<string>;
35
+ repeat: (col: SQLExpr<string> | FilterCols<TColEntries, string>, n: number) => SQLExpr<string>;
36
+ reverse: (col: SQLExpr<string> | FilterCols<TColEntries, string>) => SQLExpr<string>;
37
+ lpad: (col: SQLExpr<string> | FilterCols<TColEntries, string>, len: number, pad: string) => SQLExpr<string>;
38
+ rpad: (col: SQLExpr<string> | FilterCols<TColEntries, string>, len: number, pad: string) => SQLExpr<string>;
39
+ initcap: (col: SQLExpr<string> | FilterCols<TColEntries, string>) => SQLExpr<string>;
40
+ strpos: (col: SQLExpr<string> | FilterCols<TColEntries, string>, substr: string) => SQLExpr<number>;
41
+ splitPart: (col: SQLExpr<string> | FilterCols<TColEntries, string>, delimiter: string, field: number) => SQLExpr<string>;
42
+ btrim: (col: SQLExpr<string> | FilterCols<TColEntries, string>, chars?: string) => SQLExpr<string>;
43
+ md5: (col: SQLExpr<string> | FilterCols<TColEntries, string>) => SQLExpr<string>;
44
+ greatest: <T>(args_0: FilterCols<TColEntries, T> | SQLExpr<T>, ...args: (FilterCols<TColEntries, T> | SQLExpr<T>)[]) => SQLExpr<T>;
45
+ least: <T>(args_0: FilterCols<TColEntries, T> | SQLExpr<T>, ...args: (FilterCols<TColEntries, T> | SQLExpr<T>)[]) => SQLExpr<T>;
46
+ now: () => SQLExpr<Date>;
47
+ curDate: () => SQLExpr<Date>;
48
+ year: (col: SQLExpr<Date> | FilterCols<TColEntries, Date>) => SQLExpr<number>;
49
+ month: (col: SQLExpr<Date> | FilterCols<TColEntries, Date>) => SQLExpr<number>;
50
+ day: (col: SQLExpr<Date> | FilterCols<TColEntries, Date>) => SQLExpr<number>;
51
+ hour: (col: SQLExpr<Date> | FilterCols<TColEntries, Date>) => SQLExpr<number>;
52
+ minute: (col: SQLExpr<Date> | FilterCols<TColEntries, Date>) => SQLExpr<number>;
53
+ second: (col: SQLExpr<Date> | FilterCols<TColEntries, Date>) => SQLExpr<number>;
54
+ extract: (field: PgExtractField, col: SQLExpr<Date> | FilterCols<TColEntries, Date>) => SQLExpr<number>;
55
+ dateTrunc: (unit: PgDateTruncUnit, col: SQLExpr<Date> | FilterCols<TColEntries, Date>) => SQLExpr<Date>;
56
+ age: (ts1: SQLExpr<Date> | FilterCols<TColEntries, Date>, ts2?: SQLExpr<Date> | FilterCols<TColEntries, Date> | undefined) => SQLExpr<string>;
57
+ toDate: (text: SQLExpr<string> | FilterCols<TColEntries, string>, fmt: string) => SQLExpr<Date>;
58
+ abs: (col: SQLExpr<number> | FilterCols<TColEntries, number>) => SQLExpr<number>;
59
+ round: (col: SQLExpr<number> | FilterCols<TColEntries, number>, decimals?: number) => SQLExpr<number>;
60
+ power: (base: SQLExpr<number> | FilterCols<TColEntries, number>, exp: number | SQLExpr<number>) => SQLExpr<number>;
61
+ sqrt: (col: SQLExpr<number> | FilterCols<TColEntries, number>) => SQLExpr<number>;
62
+ mod: (col: SQLExpr<number> | FilterCols<TColEntries, number>, divisor: number) => SQLExpr<number>;
63
+ sign: (col: SQLExpr<number> | FilterCols<TColEntries, number>) => SQLExpr<number>;
64
+ exp: (col: SQLExpr<number> | FilterCols<TColEntries, number>) => SQLExpr<number>;
65
+ pi: () => SQLExpr<number>;
66
+ ln: (x: SQLExpr<number> | FilterCols<TColEntries, number>) => SQLExpr<number>;
67
+ log: (x: SQLExpr<number> | FilterCols<TColEntries, number>) => SQLExpr<number>;
68
+ logBase: (base: number, x: SQLExpr<number> | FilterCols<TColEntries, number>) => SQLExpr<number>;
69
+ trunc: (x: SQLExpr<number> | FilterCols<TColEntries, number>, n?: number) => SQLExpr<number>;
70
+ div: (x: SQLExpr<number> | FilterCols<TColEntries, number>, y: number) => SQLExpr<number>;
71
+ random: () => SQLExpr<number>;
72
+ jsonExtract: (col: SQLExpr<_prisma_client_runtime_client.JsonValue> | FilterJsonCols<TColEntries>, path: string) => SQLExpr<JSONValue>;
73
+ jsonArray: (args_0: SQLExpr<unknown> | ColName<TColEntries>, ...args: (SQLExpr<unknown> | ColName<TColEntries>)[]) => SQLExpr<JSONValue[]>;
74
+ jsonObject: (pairs: [string, SQLExpr<unknown> | ColName<TColEntries>][]) => SQLExpr<JSONObject>;
75
+ cast: <T extends keyof {
76
+ INTEGER: number;
77
+ TEXT: string;
78
+ BIGINT: bigint;
79
+ BOOLEAN: boolean;
80
+ REAL: number;
81
+ NUMERIC: number;
82
+ DATE: Date;
83
+ TIMESTAMP: Date;
84
+ JSON: JSONValue;
85
+ JSONB: JSONValue;
86
+ }>(expr: SQLExpr<unknown> | ColName<TColEntries>, type: T) => SQLExpr<{
87
+ INTEGER: number;
88
+ TEXT: string;
89
+ BIGINT: bigint;
90
+ BOOLEAN: boolean;
91
+ REAL: number;
92
+ NUMERIC: number;
93
+ DATE: Date;
94
+ TIMESTAMP: Date;
95
+ JSON: JSONValue;
96
+ JSONB: JSONValue;
97
+ }[T]>;
98
+ };
99
+ type DialectFns<TColEntries extends [string, unknown] = never, _TCriteria extends object = object> = ReturnType<typeof postgresqlV6ContextFns<TColEntries>>;
100
+
101
+ export { type DialectFns, PgDateTruncUnit, PgExtractField, postgresqlV6ContextFns };
@@ -0,0 +1,147 @@
1
+ // src/sql-expr.ts
2
+ function sqlExpr(sql) {
3
+ return { sql, toString() {
4
+ return sql;
5
+ } };
6
+ }
7
+ function resolveArg(arg, quoteFn) {
8
+ if (typeof arg !== "string") return arg.sql;
9
+ return quoteFn(arg);
10
+ }
11
+
12
+ // src/dialects/shared.ts
13
+ var esc = (s) => s.replace(/'/g, "''");
14
+ var flattenJsonObjectPairs = (pairs, quoteFn) => pairs.flatMap(([k, v]) => [`'${esc(k)}'`, resolveArg(v, quoteFn)]);
15
+
16
+ // src/dialects/postgresql.ts
17
+ var PG_CAST_TYPES = /* @__PURE__ */ new Set(["INTEGER", "TEXT", "BIGINT", "BOOLEAN", "REAL", "NUMERIC", "DATE", "TIMESTAMP", "JSON", "JSONB"]);
18
+ var postgresqlContextFns = (quoteFn) => ({
19
+ avg: (col) => sqlExpr(`AVG(${resolveArg(col, quoteFn)})`),
20
+ sum: (col) => sqlExpr(`SUM(${resolveArg(col, quoteFn)})`),
21
+ countAll: () => sqlExpr("COUNT(*)"),
22
+ count: (col) => sqlExpr(col === "*" ? "COUNT(*)" : `COUNT(${quoteFn(col)})`),
23
+ countDistinct: (col) => sqlExpr(`COUNT(DISTINCT ${quoteFn(col)})`),
24
+ length: (col) => sqlExpr(`LENGTH(${resolveArg(col, quoteFn)})`),
25
+ stringAgg: (col, sep) => sqlExpr(`STRING_AGG(${quoteFn(col)}, '${esc(sep)}')`),
26
+ arrayAgg: (col) => sqlExpr(`ARRAY_AGG(${quoteFn(col)})`),
27
+ stddevPop: (col) => sqlExpr(`STDDEV_POP(${quoteFn(col)})`),
28
+ stddevSamp: (col) => sqlExpr(`STDDEV_SAMP(${quoteFn(col)})`),
29
+ varPop: (col) => sqlExpr(`VAR_POP(${quoteFn(col)})`),
30
+ varSamp: (col) => sqlExpr(`VAR_SAMP(${quoteFn(col)})`),
31
+ boolAnd: (col) => sqlExpr(`BOOL_AND(${quoteFn(col)})`),
32
+ boolOr: (col) => sqlExpr(`BOOL_OR(${quoteFn(col)})`),
33
+ jsonAgg: (col) => sqlExpr(`JSON_AGG(${quoteFn(col)})`),
34
+ bitAnd: (col) => sqlExpr(`BIT_AND(${quoteFn(col)})`),
35
+ bitOr: (col) => sqlExpr(`BIT_OR(${quoteFn(col)})`),
36
+ jsonObjectAgg: (key, val) => sqlExpr(`JSON_OBJECT_AGG(${quoteFn(key)}, ${quoteFn(val)})`),
37
+ concat: (...args) => {
38
+ if (args.length === 0) throw new Error("concat: requires at least one argument");
39
+ return sqlExpr(`CONCAT(${args.map((a) => resolveArg(a, quoteFn)).join(", ")})`);
40
+ },
41
+ substring: (col, start, len) => sqlExpr(`SUBSTRING(${resolveArg(col, quoteFn)}, ${start}${len !== void 0 ? `, ${len}` : ""})`),
42
+ left: (col, n) => sqlExpr(`LEFT(${resolveArg(col, quoteFn)}, ${n})`),
43
+ right: (col, n) => sqlExpr(`RIGHT(${resolveArg(col, quoteFn)}, ${n})`),
44
+ repeat: (col, n) => sqlExpr(`REPEAT(${resolveArg(col, quoteFn)}, ${n})`),
45
+ reverse: (col) => sqlExpr(`REVERSE(${resolveArg(col, quoteFn)})`),
46
+ lpad: (col, len, pad) => sqlExpr(`LPAD(${resolveArg(col, quoteFn)}, ${len}, '${esc(pad)}')`),
47
+ rpad: (col, len, pad) => sqlExpr(`RPAD(${resolveArg(col, quoteFn)}, ${len}, '${esc(pad)}')`),
48
+ initcap: (col) => sqlExpr(`INITCAP(${resolveArg(col, quoteFn)})`),
49
+ strpos: (col, substr) => sqlExpr(`STRPOS(${resolveArg(col, quoteFn)}, '${esc(substr)}')`),
50
+ splitPart: (col, delimiter, field) => sqlExpr(`SPLIT_PART(${resolveArg(col, quoteFn)}, '${esc(delimiter)}', ${field})`),
51
+ btrim: (col, chars) => sqlExpr(`BTRIM(${resolveArg(col, quoteFn)}${chars !== void 0 ? `, '${esc(chars)}'` : ""})`),
52
+ md5: (col) => sqlExpr(`MD5(${resolveArg(col, quoteFn)})`),
53
+ // Control flow
54
+ greatest: (...args) => {
55
+ if (args.length === 0) throw new Error("greatest: requires at least one argument");
56
+ return sqlExpr(`GREATEST(${args.map((a) => resolveArg(a, quoteFn)).join(", ")})`);
57
+ },
58
+ least: (...args) => {
59
+ if (args.length === 0) throw new Error("least: requires at least one argument");
60
+ return sqlExpr(`LEAST(${args.map((a) => resolveArg(a, quoteFn)).join(", ")})`);
61
+ },
62
+ // DateTime overrides
63
+ now: () => sqlExpr("NOW()"),
64
+ curDate: () => sqlExpr("CURRENT_DATE"),
65
+ year: (col) => sqlExpr(`EXTRACT(YEAR FROM ${resolveArg(col, quoteFn)})::integer`),
66
+ month: (col) => sqlExpr(`EXTRACT(MONTH FROM ${resolveArg(col, quoteFn)})::integer`),
67
+ day: (col) => sqlExpr(`EXTRACT(DAY FROM ${resolveArg(col, quoteFn)})::integer`),
68
+ hour: (col) => sqlExpr(`EXTRACT(HOUR FROM ${resolveArg(col, quoteFn)})::integer`),
69
+ minute: (col) => sqlExpr(`EXTRACT(MINUTE FROM ${resolveArg(col, quoteFn)})::integer`),
70
+ second: (col) => sqlExpr(`EXTRACT(SECOND FROM ${resolveArg(col, quoteFn)})::integer`),
71
+ // PG-only DateTime fns
72
+ extract: (field, col) => sqlExpr(`EXTRACT(${field} FROM ${resolveArg(col, quoteFn)})`),
73
+ dateTrunc: (unit, col) => sqlExpr(`DATE_TRUNC('${unit}', ${resolveArg(col, quoteFn)})`),
74
+ /**
75
+ * PG `AGE()` returns an `interval`. Typed as `string` since node-postgres serializes
76
+ * intervals as strings (e.g. `"1 year 2 mons 3 days"`). Arithmetic on the result
77
+ * must be done in SQL, not JS — use `sqlExpr` to compose further expressions.
78
+ */
79
+ age: (ts1, ts2) => sqlExpr(ts2 !== void 0 ? `AGE(${resolveArg(ts1, quoteFn)}, ${resolveArg(ts2, quoteFn)})` : `AGE(${resolveArg(ts1, quoteFn)})`),
80
+ toDate: (text, fmt) => sqlExpr(`TO_DATE(${resolveArg(text, quoteFn)}, '${esc(fmt)}')`),
81
+ // ── Math ─────────────────────────────────────────────────────────────────
82
+ abs: (col) => sqlExpr(`ABS(${resolveArg(col, quoteFn)})`),
83
+ ceil: (col) => sqlExpr(`CEIL(${resolveArg(col, quoteFn)})`),
84
+ floor: (col) => sqlExpr(`FLOOR(${resolveArg(col, quoteFn)})`),
85
+ round: (col, decimals) => sqlExpr(decimals !== void 0 ? `ROUND(${resolveArg(col, quoteFn)}, ${decimals})` : `ROUND(${resolveArg(col, quoteFn)})`),
86
+ power: (base, exp) => sqlExpr(`POWER(${resolveArg(base, quoteFn)}, ${typeof exp === "number" ? exp : exp.sql})`),
87
+ sqrt: (col) => sqlExpr(`SQRT(${resolveArg(col, quoteFn)})`),
88
+ mod: (col, divisor) => sqlExpr(`MOD(${resolveArg(col, quoteFn)}, ${divisor})`),
89
+ sign: (col) => sqlExpr(`SIGN(${resolveArg(col, quoteFn)})`),
90
+ exp: (col) => sqlExpr(`EXP(${resolveArg(col, quoteFn)})`),
91
+ // ── Math (PostgreSQL-specific) ────────────────────────────────────────────
92
+ pi: () => sqlExpr("PI()"),
93
+ ln: (x) => sqlExpr(`LN(${resolveArg(x, quoteFn)})`),
94
+ log: (x) => sqlExpr(`LOG(${resolveArg(x, quoteFn)})`),
95
+ logBase: (base, x) => sqlExpr(`LOG(${base}, ${resolveArg(x, quoteFn)})`),
96
+ trunc: (x, n) => sqlExpr(n !== void 0 ? `TRUNC(${resolveArg(x, quoteFn)}, ${n})` : `TRUNC(${resolveArg(x, quoteFn)})`),
97
+ div: (x, y) => sqlExpr(`DIV(${resolveArg(x, quoteFn)}, ${y})`),
98
+ random: () => sqlExpr("RANDOM()"),
99
+ // ── JSON scalar fns ───────────────────────────────────────────────────────
100
+ /**
101
+ * Uses jsonb_path_query_first — requires PG 12+ (Prisma 5+ minimum).
102
+ * @note PG uses JSONPath syntax (e.g. `$.tags[0]`, `$.name`).
103
+ * MySQL/SQLite use SQL/JSON path syntax — paths are NOT cross-dialect compatible.
104
+ * Mismatched paths silently return NULL.
105
+ */
106
+ jsonExtract: (col, path) => sqlExpr(`jsonb_path_query_first(${resolveArg(col, quoteFn)}, '${esc(path)}')`),
107
+ jsonArray: (...args) => sqlExpr(`jsonb_build_array(${args.map((a) => resolveArg(a, quoteFn)).join(", ")})`),
108
+ jsonObject: (pairs) => sqlExpr(`jsonb_build_object(${flattenJsonObjectPairs(pairs, quoteFn).join(", ")})`),
109
+ // ── Type coercion ────────────────────────────────────────────────────────
110
+ cast: (expr, type) => {
111
+ if (!PG_CAST_TYPES.has(type)) throw new Error(`cast: invalid cast type '${String(type)}'`);
112
+ return sqlExpr(`CAST(${resolveArg(expr, quoteFn)} AS ${type})`);
113
+ }
114
+ });
115
+ var postgresqlDialect = {
116
+ name: "postgresql",
117
+ needsBooleanCoercion: () => false,
118
+ quote: (id, _isAlias) => `"${id}"`,
119
+ quoteTableIdentifier: (name, _isAlias) => `"${name}"`,
120
+ quoteQualifiedColumn: (ref) => {
121
+ if (!ref.includes(".")) return `"${ref}"`;
122
+ const [table, col] = ref.split(".", 2);
123
+ return `"${table}"."${col}"`;
124
+ },
125
+ quoteOrderByClause: (clause) => {
126
+ const parts = clause.trim().split(/\s+/);
127
+ const colRef = parts[0] ?? "";
128
+ const suffix = parts.slice(1).join(" ");
129
+ const quoted = colRef.includes(".") ? (() => {
130
+ const [table, col] = colRef.split(".", 2);
131
+ return `"${table}"."${col}"`;
132
+ })() : `"${colRef}"`;
133
+ return suffix ? `${quoted} ${suffix}` : quoted;
134
+ }
135
+ };
136
+
137
+ // src/dialects/postgresql-v6.ts
138
+ var postgresqlV6ContextFns = (quoteFn) => ({
139
+ ...postgresqlContextFns(quoteFn),
140
+ countAll: () => sqlExpr("COUNT(*)"),
141
+ count: (col) => sqlExpr(col === "*" ? "COUNT(*)" : `COUNT(${quoteFn(col)})`),
142
+ countDistinct: (col) => sqlExpr(`COUNT(DISTINCT ${quoteFn(col)})`),
143
+ ceil: (col) => sqlExpr(`CEIL(${resolveArg(col, quoteFn)})`),
144
+ floor: (col) => sqlExpr(`FLOOR(${resolveArg(col, quoteFn)})`)
145
+ });
146
+
147
+ export { postgresqlDialect, postgresqlV6ContextFns };
@@ -0,0 +1,101 @@
1
+ import { ColName, FilterCols, FilterJsonCols } from './shared.js';
2
+ import * as _prisma_client_runtime_client from '@prisma/client/runtime/client';
3
+ import { Decimal } from '@prisma/client/runtime/client';
4
+ import { PgExtractField, PgDateTruncUnit } from './postgresql.js';
5
+ export { postgresqlDialect } from './postgresql.js';
6
+ import { J as JSONValue, a as JSONObject } from '../types-B0F8m0ok.js';
7
+ import { S as SQLExpr } from '../sql-expr-BaKWzJ-r.js';
8
+ import './types.js';
9
+
10
+ declare const postgresqlV7ContextFns: <TColEntries extends [string, unknown] = never>(quoteFn: (ref: string) => string) => {
11
+ countAll: () => SQLExpr<bigint>;
12
+ count: (col: ColName<TColEntries> | "*") => SQLExpr<bigint>;
13
+ countDistinct: (col: ColName<TColEntries>) => SQLExpr<bigint>;
14
+ ceil: (col: FilterCols<TColEntries, number> | SQLExpr<number>) => SQLExpr<number | Decimal>;
15
+ floor: (col: FilterCols<TColEntries, number> | SQLExpr<number>) => SQLExpr<number | Decimal>;
16
+ avg: (col: SQLExpr<number> | FilterCols<TColEntries, number>) => SQLExpr<number>;
17
+ sum: (col: SQLExpr<number> | FilterCols<TColEntries, number>) => SQLExpr<number>;
18
+ length: (col: SQLExpr<string> | FilterCols<TColEntries, string>) => SQLExpr<number>;
19
+ stringAgg: (col: ColName<TColEntries>, sep: string) => SQLExpr<string>;
20
+ arrayAgg: (col: ColName<TColEntries>) => SQLExpr<unknown[]>;
21
+ stddevPop: (col: FilterCols<TColEntries, number>) => SQLExpr<number>;
22
+ stddevSamp: (col: FilterCols<TColEntries, number>) => SQLExpr<number>;
23
+ varPop: (col: FilterCols<TColEntries, number>) => SQLExpr<number>;
24
+ varSamp: (col: FilterCols<TColEntries, number>) => SQLExpr<number>;
25
+ boolAnd: (col: FilterCols<TColEntries, boolean>) => SQLExpr<boolean>;
26
+ boolOr: (col: FilterCols<TColEntries, boolean>) => SQLExpr<boolean>;
27
+ jsonAgg: (col: ColName<TColEntries>) => SQLExpr<JSONValue[]>;
28
+ bitAnd: (col: FilterCols<TColEntries, number>) => SQLExpr<number>;
29
+ bitOr: (col: FilterCols<TColEntries, number>) => SQLExpr<number>;
30
+ jsonObjectAgg: (key: ColName<TColEntries>, val: ColName<TColEntries>) => SQLExpr<JSONValue>;
31
+ concat: (args_0: SQLExpr<string> | FilterCols<TColEntries, string>, ...args: (SQLExpr<string> | FilterCols<TColEntries, string>)[]) => SQLExpr<string>;
32
+ substring: (col: SQLExpr<string> | FilterCols<TColEntries, string>, start: number, len?: number) => SQLExpr<string>;
33
+ left: (col: SQLExpr<string> | FilterCols<TColEntries, string>, n: number) => SQLExpr<string>;
34
+ right: (col: SQLExpr<string> | FilterCols<TColEntries, string>, n: number) => SQLExpr<string>;
35
+ repeat: (col: SQLExpr<string> | FilterCols<TColEntries, string>, n: number) => SQLExpr<string>;
36
+ reverse: (col: SQLExpr<string> | FilterCols<TColEntries, string>) => SQLExpr<string>;
37
+ lpad: (col: SQLExpr<string> | FilterCols<TColEntries, string>, len: number, pad: string) => SQLExpr<string>;
38
+ rpad: (col: SQLExpr<string> | FilterCols<TColEntries, string>, len: number, pad: string) => SQLExpr<string>;
39
+ initcap: (col: SQLExpr<string> | FilterCols<TColEntries, string>) => SQLExpr<string>;
40
+ strpos: (col: SQLExpr<string> | FilterCols<TColEntries, string>, substr: string) => SQLExpr<number>;
41
+ splitPart: (col: SQLExpr<string> | FilterCols<TColEntries, string>, delimiter: string, field: number) => SQLExpr<string>;
42
+ btrim: (col: SQLExpr<string> | FilterCols<TColEntries, string>, chars?: string) => SQLExpr<string>;
43
+ md5: (col: SQLExpr<string> | FilterCols<TColEntries, string>) => SQLExpr<string>;
44
+ greatest: <T>(args_0: FilterCols<TColEntries, T> | SQLExpr<T>, ...args: (FilterCols<TColEntries, T> | SQLExpr<T>)[]) => SQLExpr<T>;
45
+ least: <T>(args_0: FilterCols<TColEntries, T> | SQLExpr<T>, ...args: (FilterCols<TColEntries, T> | SQLExpr<T>)[]) => SQLExpr<T>;
46
+ now: () => SQLExpr<Date>;
47
+ curDate: () => SQLExpr<Date>;
48
+ year: (col: SQLExpr<Date> | FilterCols<TColEntries, Date>) => SQLExpr<number>;
49
+ month: (col: SQLExpr<Date> | FilterCols<TColEntries, Date>) => SQLExpr<number>;
50
+ day: (col: SQLExpr<Date> | FilterCols<TColEntries, Date>) => SQLExpr<number>;
51
+ hour: (col: SQLExpr<Date> | FilterCols<TColEntries, Date>) => SQLExpr<number>;
52
+ minute: (col: SQLExpr<Date> | FilterCols<TColEntries, Date>) => SQLExpr<number>;
53
+ second: (col: SQLExpr<Date> | FilterCols<TColEntries, Date>) => SQLExpr<number>;
54
+ extract: (field: PgExtractField, col: SQLExpr<Date> | FilterCols<TColEntries, Date>) => SQLExpr<number>;
55
+ dateTrunc: (unit: PgDateTruncUnit, col: SQLExpr<Date> | FilterCols<TColEntries, Date>) => SQLExpr<Date>;
56
+ age: (ts1: SQLExpr<Date> | FilterCols<TColEntries, Date>, ts2?: SQLExpr<Date> | FilterCols<TColEntries, Date> | undefined) => SQLExpr<string>;
57
+ toDate: (text: SQLExpr<string> | FilterCols<TColEntries, string>, fmt: string) => SQLExpr<Date>;
58
+ abs: (col: SQLExpr<number> | FilterCols<TColEntries, number>) => SQLExpr<number>;
59
+ round: (col: SQLExpr<number> | FilterCols<TColEntries, number>, decimals?: number) => SQLExpr<number>;
60
+ power: (base: SQLExpr<number> | FilterCols<TColEntries, number>, exp: number | SQLExpr<number>) => SQLExpr<number>;
61
+ sqrt: (col: SQLExpr<number> | FilterCols<TColEntries, number>) => SQLExpr<number>;
62
+ mod: (col: SQLExpr<number> | FilterCols<TColEntries, number>, divisor: number) => SQLExpr<number>;
63
+ sign: (col: SQLExpr<number> | FilterCols<TColEntries, number>) => SQLExpr<number>;
64
+ exp: (col: SQLExpr<number> | FilterCols<TColEntries, number>) => SQLExpr<number>;
65
+ pi: () => SQLExpr<number>;
66
+ ln: (x: SQLExpr<number> | FilterCols<TColEntries, number>) => SQLExpr<number>;
67
+ log: (x: SQLExpr<number> | FilterCols<TColEntries, number>) => SQLExpr<number>;
68
+ logBase: (base: number, x: SQLExpr<number> | FilterCols<TColEntries, number>) => SQLExpr<number>;
69
+ trunc: (x: SQLExpr<number> | FilterCols<TColEntries, number>, n?: number) => SQLExpr<number>;
70
+ div: (x: SQLExpr<number> | FilterCols<TColEntries, number>, y: number) => SQLExpr<number>;
71
+ random: () => SQLExpr<number>;
72
+ jsonExtract: (col: SQLExpr<_prisma_client_runtime_client.JsonValue> | FilterJsonCols<TColEntries>, path: string) => SQLExpr<JSONValue>;
73
+ jsonArray: (args_0: SQLExpr<unknown> | ColName<TColEntries>, ...args: (SQLExpr<unknown> | ColName<TColEntries>)[]) => SQLExpr<JSONValue[]>;
74
+ jsonObject: (pairs: [string, SQLExpr<unknown> | ColName<TColEntries>][]) => SQLExpr<JSONObject>;
75
+ cast: <T extends keyof {
76
+ INTEGER: number;
77
+ TEXT: string;
78
+ BIGINT: bigint;
79
+ BOOLEAN: boolean;
80
+ REAL: number;
81
+ NUMERIC: number;
82
+ DATE: Date;
83
+ TIMESTAMP: Date;
84
+ JSON: JSONValue;
85
+ JSONB: JSONValue;
86
+ }>(expr: SQLExpr<unknown> | ColName<TColEntries>, type: T) => SQLExpr<{
87
+ INTEGER: number;
88
+ TEXT: string;
89
+ BIGINT: bigint;
90
+ BOOLEAN: boolean;
91
+ REAL: number;
92
+ NUMERIC: number;
93
+ DATE: Date;
94
+ TIMESTAMP: Date;
95
+ JSON: JSONValue;
96
+ JSONB: JSONValue;
97
+ }[T]>;
98
+ };
99
+ type DialectFns<TColEntries extends [string, unknown] = never, _TCriteria extends object = object> = ReturnType<typeof postgresqlV7ContextFns<TColEntries>>;
100
+
101
+ export { type DialectFns, PgDateTruncUnit, PgExtractField, postgresqlV7ContextFns };