durcno 1.0.0-alpha.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 +201 -0
- package/README.md +56 -0
- package/dist/bin.cjs +13522 -0
- package/dist/src/_virtual/_rolldown/runtime.mjs +28 -0
- package/dist/src/cli/helpers.mjs +16 -0
- package/dist/src/columns/bigint.d.mts +19 -0
- package/dist/src/columns/bigint.mjs +32 -0
- package/dist/src/columns/bigserial.d.mts +24 -0
- package/dist/src/columns/bigserial.mjs +35 -0
- package/dist/src/columns/boolean.d.mts +19 -0
- package/dist/src/columns/boolean.mjs +31 -0
- package/dist/src/columns/bytea.d.mts +19 -0
- package/dist/src/columns/bytea.mjs +33 -0
- package/dist/src/columns/char.d.mts +32 -0
- package/dist/src/columns/char.mjs +44 -0
- package/dist/src/columns/cidr.d.mts +19 -0
- package/dist/src/columns/cidr.mjs +31 -0
- package/dist/src/columns/common.d.mts +233 -0
- package/dist/src/columns/common.mjs +276 -0
- package/dist/src/columns/date.d.mts +19 -0
- package/dist/src/columns/date.mjs +32 -0
- package/dist/src/columns/enum.d.mts +21 -0
- package/dist/src/columns/enum.mjs +35 -0
- package/dist/src/columns/inet.d.mts +19 -0
- package/dist/src/columns/inet.mjs +36 -0
- package/dist/src/columns/integer.d.mts +19 -0
- package/dist/src/columns/integer.mjs +32 -0
- package/dist/src/columns/json.d.mts +52 -0
- package/dist/src/columns/json.mjs +67 -0
- package/dist/src/columns/jsonb.d.mts +53 -0
- package/dist/src/columns/jsonb.mjs +68 -0
- package/dist/src/columns/macaddr.d.mts +19 -0
- package/dist/src/columns/macaddr.mjs +31 -0
- package/dist/src/columns/numeric.d.mts +42 -0
- package/dist/src/columns/numeric.mjs +57 -0
- package/dist/src/columns/postgis/geography/index.d.mts +18 -0
- package/dist/src/columns/postgis/geography/index.mjs +17 -0
- package/dist/src/columns/postgis/geography/linestring.d.mts +38 -0
- package/dist/src/columns/postgis/geography/linestring.mjs +70 -0
- package/dist/src/columns/postgis/geography/multilinestring.d.mts +39 -0
- package/dist/src/columns/postgis/geography/multilinestring.mjs +70 -0
- package/dist/src/columns/postgis/geography/multipoint.d.mts +38 -0
- package/dist/src/columns/postgis/geography/multipoint.mjs +70 -0
- package/dist/src/columns/postgis/geography/multipolygon.d.mts +40 -0
- package/dist/src/columns/postgis/geography/multipolygon.mjs +70 -0
- package/dist/src/columns/postgis/geography/point.d.mts +36 -0
- package/dist/src/columns/postgis/geography/point.mjs +69 -0
- package/dist/src/columns/postgis/geography/polygon.d.mts +39 -0
- package/dist/src/columns/postgis/geography/polygon.mjs +70 -0
- package/dist/src/columns/serial.d.mts +24 -0
- package/dist/src/columns/serial.mjs +35 -0
- package/dist/src/columns/smallint.d.mts +19 -0
- package/dist/src/columns/smallint.mjs +32 -0
- package/dist/src/columns/smallserial.d.mts +24 -0
- package/dist/src/columns/smallserial.mjs +35 -0
- package/dist/src/columns/text.d.mts +19 -0
- package/dist/src/columns/text.mjs +30 -0
- package/dist/src/columns/time.d.mts +44 -0
- package/dist/src/columns/time.mjs +47 -0
- package/dist/src/columns/timestamp.d.mts +44 -0
- package/dist/src/columns/timestamp.mjs +47 -0
- package/dist/src/columns/uuid.d.mts +33 -0
- package/dist/src/columns/uuid.mjs +44 -0
- package/dist/src/columns/varchar.d.mts +32 -0
- package/dist/src/columns/varchar.mjs +44 -0
- package/dist/src/connectors/bun.d.mts +18 -0
- package/dist/src/connectors/bun.mjs +97 -0
- package/dist/src/connectors/common.d.mts +148 -0
- package/dist/src/connectors/common.mjs +65 -0
- package/dist/src/connectors/pg.d.mts +18 -0
- package/dist/src/connectors/pg.mjs +103 -0
- package/dist/src/connectors/pglite.d.mts +19 -0
- package/dist/src/connectors/pglite.mjs +94 -0
- package/dist/src/connectors/postgres.d.mts +18 -0
- package/dist/src/connectors/postgres.mjs +93 -0
- package/dist/src/constraints/check.d.mts +88 -0
- package/dist/src/constraints/check.mjs +307 -0
- package/dist/src/constraints/primary-key.d.mts +28 -0
- package/dist/src/constraints/primary-key.mjs +36 -0
- package/dist/src/constraints/unique.d.mts +28 -0
- package/dist/src/constraints/unique.mjs +36 -0
- package/dist/src/db.d.mts +180 -0
- package/dist/src/db.mjs +191 -0
- package/dist/src/entity.mjs +23 -0
- package/dist/src/enumtype.d.mts +27 -0
- package/dist/src/enumtype.mjs +42 -0
- package/dist/src/filters/array.d.mts +97 -0
- package/dist/src/filters/array.mjs +150 -0
- package/dist/src/filters/custom.d.mts +12 -0
- package/dist/src/filters/custom.mjs +7 -0
- package/dist/src/filters/index.d.mts +155 -0
- package/dist/src/filters/index.mjs +318 -0
- package/dist/src/functions/index.d.mts +24 -0
- package/dist/src/functions/index.mjs +29 -0
- package/dist/src/index.d.mts +129 -0
- package/dist/src/index.mjs +78 -0
- package/dist/src/indexes.d.mts +31 -0
- package/dist/src/indexes.mjs +43 -0
- package/dist/src/migration/consts.d.mts +8 -0
- package/dist/src/migration/consts.mjs +8 -0
- package/dist/src/migration/ddl.d.mts +747 -0
- package/dist/src/migration/ddl.mjs +1084 -0
- package/dist/src/migration/index.d.mts +15 -0
- package/dist/src/migration/index.mjs +5 -0
- package/dist/src/migration/snapshot.d.mts +169 -0
- package/dist/src/migration/snapshot.mjs +123 -0
- package/dist/src/migration/statement.d.mts +89 -0
- package/dist/src/migration/statement.mjs +61 -0
- package/dist/src/models.d.mts +34 -0
- package/dist/src/models.mjs +27 -0
- package/dist/src/node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/index.mjs +126 -0
- package/dist/src/node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/utilities.mjs +29 -0
- package/dist/src/node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/ansi-styles/index.mjs +165 -0
- package/dist/src/node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/supports-color/index.mjs +92 -0
- package/dist/src/query-builders/aggregates.d.mts +20 -0
- package/dist/src/query-builders/aggregates.mjs +43 -0
- package/dist/src/query-builders/count.d.mts +19 -0
- package/dist/src/query-builders/count.mjs +36 -0
- package/dist/src/query-builders/delete.d.mts +19 -0
- package/dist/src/query-builders/delete.mjs +57 -0
- package/dist/src/query-builders/distinct.d.mts +19 -0
- package/dist/src/query-builders/distinct.mjs +42 -0
- package/dist/src/query-builders/exists.d.mts +19 -0
- package/dist/src/query-builders/exists.mjs +37 -0
- package/dist/src/query-builders/first.d.mts +17 -0
- package/dist/src/query-builders/first.mjs +46 -0
- package/dist/src/query-builders/insert-returning.d.mts +16 -0
- package/dist/src/query-builders/insert-returning.mjs +63 -0
- package/dist/src/query-builders/insert.d.mts +22 -0
- package/dist/src/query-builders/insert.mjs +93 -0
- package/dist/src/query-builders/orderby-clause.d.mts +14 -0
- package/dist/src/query-builders/orderby-clause.mjs +20 -0
- package/dist/src/query-builders/pre.d.mts +36 -0
- package/dist/src/query-builders/pre.mjs +60 -0
- package/dist/src/query-builders/query-promise.d.mts +14 -0
- package/dist/src/query-builders/query-promise.mjs +21 -0
- package/dist/src/query-builders/query.d.mts +14 -0
- package/dist/src/query-builders/query.mjs +17 -0
- package/dist/src/query-builders/raw.d.mts +14 -0
- package/dist/src/query-builders/raw.mjs +26 -0
- package/dist/src/query-builders/rq.d.mts +36 -0
- package/dist/src/query-builders/rq.mjs +231 -0
- package/dist/src/query-builders/select.d.mts +48 -0
- package/dist/src/query-builders/select.mjs +118 -0
- package/dist/src/query-builders/update.d.mts +24 -0
- package/dist/src/query-builders/update.mjs +99 -0
- package/dist/src/sequence.d.mts +48 -0
- package/dist/src/sequence.mjs +53 -0
- package/dist/src/sql.d.mts +15 -0
- package/dist/src/sql.mjs +36 -0
- package/dist/src/symbols.d.mts +4 -0
- package/dist/src/symbols.mjs +4 -0
- package/dist/src/table.d.mts +144 -0
- package/dist/src/table.mjs +134 -0
- package/dist/src/types.d.mts +4 -0
- package/dist/src/utils.mjs +10 -0
- package/dist/src/validators/zod.d.mts +23 -0
- package/dist/src/validators/zod.mjs +27 -0
- package/dist/src/wkx/binaryreader.mjs +56 -0
- package/dist/src/wkx/binarywriter.mjs +110 -0
- package/dist/src/wkx/geometry.mjs +101 -0
- package/dist/src/wkx/geometrycollection.mjs +113 -0
- package/dist/src/wkx/index.mjs +18 -0
- package/dist/src/wkx/linestring.mjs +124 -0
- package/dist/src/wkx/multilinestring.mjs +133 -0
- package/dist/src/wkx/multipoint.mjs +120 -0
- package/dist/src/wkx/multipolygon.mjs +155 -0
- package/dist/src/wkx/parser.mjs +183 -0
- package/dist/src/wkx/point.mjs +159 -0
- package/dist/src/wkx/polygon.mjs +189 -0
- package/dist/src/wkx/types.mjs +37 -0
- package/dist/src/wkx/wktparser.mjs +109 -0
- package/dist/src/wkx/zigzag.mjs +18 -0
- package/package.json +100 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { Filter } from "./custom.mjs";
|
|
2
|
+
//#region src/filters/array.ts
|
|
3
|
+
/** Converts an array of values to a PostgreSQL array literal. */
|
|
4
|
+
function arrayToSql(values) {
|
|
5
|
+
if (values.length === 0) return "'{}'";
|
|
6
|
+
return `ARRAY[${values.map((v) => {
|
|
7
|
+
if (typeof v === "string") return `'${v.replace(/'/g, "''")}'`;
|
|
8
|
+
return String(v);
|
|
9
|
+
}).join(", ")}]`;
|
|
10
|
+
}
|
|
11
|
+
/** Converts a single value to a SQL literal. */
|
|
12
|
+
function valueToSql(value) {
|
|
13
|
+
if (typeof value === "string") return `'${value.replace(/'/g, "''")}'`;
|
|
14
|
+
return String(value);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* ArrayContains filter: col @> ARRAY[values]
|
|
18
|
+
* Returns true if the array column contains all the specified values.
|
|
19
|
+
*/
|
|
20
|
+
var ArrayContainsFilter = class extends Filter {
|
|
21
|
+
left;
|
|
22
|
+
right;
|
|
23
|
+
constructor(column, values) {
|
|
24
|
+
super();
|
|
25
|
+
this.left = column;
|
|
26
|
+
this.right = values;
|
|
27
|
+
}
|
|
28
|
+
toSQL() {
|
|
29
|
+
return `${this.left.fullName} @> ${arrayToSql(this.right)}`;
|
|
30
|
+
}
|
|
31
|
+
toQuery(query) {
|
|
32
|
+
query.sql += `${this.left.fullName} @> ${arrayToSql(this.right)}`;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Creates a condition that checks if an array column contains all specified values.
|
|
37
|
+
* SQL: column @> ARRAY[values]
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* db.from(Posts).select().where(arrayContains(Posts.tags, ['typescript', 'postgres']))
|
|
41
|
+
*/
|
|
42
|
+
function arrayContains(column, values) {
|
|
43
|
+
return new ArrayContainsFilter(column, values);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* ArrayContainedBy filter: col <@ ARRAY[values]
|
|
47
|
+
* Returns true if the array column is contained by (is a subset of) the specified values.
|
|
48
|
+
*/
|
|
49
|
+
var ArrayContainedByFilter = class extends Filter {
|
|
50
|
+
left;
|
|
51
|
+
right;
|
|
52
|
+
constructor(column, values) {
|
|
53
|
+
super();
|
|
54
|
+
this.left = column;
|
|
55
|
+
this.right = values;
|
|
56
|
+
}
|
|
57
|
+
toSQL() {
|
|
58
|
+
return `${this.left.fullName} <@ ${arrayToSql(this.right)}`;
|
|
59
|
+
}
|
|
60
|
+
toQuery(query) {
|
|
61
|
+
query.sql += `${this.left.fullName} <@ ${arrayToSql(this.right)}`;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Creates a condition that checks if an array column is contained by the specified values.
|
|
66
|
+
* SQL: column <@ ARRAY[values]
|
|
67
|
+
*/
|
|
68
|
+
function arrayContainedBy(column, values) {
|
|
69
|
+
return new ArrayContainedByFilter(column, values);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* ArrayOverlaps filter: col && ARRAY[values]
|
|
73
|
+
* Returns true if the arrays have any elements in common.
|
|
74
|
+
*/
|
|
75
|
+
var ArrayOverlapsFilter = class extends Filter {
|
|
76
|
+
left;
|
|
77
|
+
right;
|
|
78
|
+
constructor(column, values) {
|
|
79
|
+
super();
|
|
80
|
+
this.left = column;
|
|
81
|
+
this.right = values;
|
|
82
|
+
}
|
|
83
|
+
toSQL() {
|
|
84
|
+
return `${this.left.fullName} && ${arrayToSql(this.right)}`;
|
|
85
|
+
}
|
|
86
|
+
toQuery(query) {
|
|
87
|
+
query.sql += `${this.left.fullName} && ${arrayToSql(this.right)}`;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Creates a condition that checks if an array column overlaps with the specified values.
|
|
92
|
+
* SQL: column && ARRAY[values]
|
|
93
|
+
*/
|
|
94
|
+
function arrayOverlaps(column, values) {
|
|
95
|
+
return new ArrayOverlapsFilter(column, values);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* ArrayHas filter: value = ANY(col)
|
|
99
|
+
* Returns true if the value exists in the array column.
|
|
100
|
+
*/
|
|
101
|
+
var ArrayHasFilter = class extends Filter {
|
|
102
|
+
left;
|
|
103
|
+
right;
|
|
104
|
+
constructor(column, value) {
|
|
105
|
+
super();
|
|
106
|
+
this.left = column;
|
|
107
|
+
this.right = value;
|
|
108
|
+
}
|
|
109
|
+
toSQL() {
|
|
110
|
+
return `${valueToSql(this.right)} = ANY(${this.left.fullName})`;
|
|
111
|
+
}
|
|
112
|
+
toQuery(query) {
|
|
113
|
+
query.sql += `${valueToSql(this.right)} = ANY(${this.left.fullName})`;
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* Creates a condition that checks if a value exists in an array column.
|
|
118
|
+
* SQL: value = ANY(column)
|
|
119
|
+
*/
|
|
120
|
+
function arrayHas(column, value) {
|
|
121
|
+
return new ArrayHasFilter(column, value);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* ArrayAll filter: value = ALL(col)
|
|
125
|
+
* Returns true if all elements in the array column equal the value.
|
|
126
|
+
*/
|
|
127
|
+
var ArrayAllFilter = class extends Filter {
|
|
128
|
+
left;
|
|
129
|
+
right;
|
|
130
|
+
constructor(column, value) {
|
|
131
|
+
super();
|
|
132
|
+
this.left = column;
|
|
133
|
+
this.right = value;
|
|
134
|
+
}
|
|
135
|
+
toSQL() {
|
|
136
|
+
return `${valueToSql(this.right)} = ALL(${this.left.fullName})`;
|
|
137
|
+
}
|
|
138
|
+
toQuery(query) {
|
|
139
|
+
query.sql += `${valueToSql(this.right)} = ALL(${this.left.fullName})`;
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
/**
|
|
143
|
+
* Creates a condition that checks if all elements in an array column equal a value.
|
|
144
|
+
* SQL: value = ALL(column)
|
|
145
|
+
*/
|
|
146
|
+
function arrayAll(column, value) {
|
|
147
|
+
return new ArrayAllFilter(column, value);
|
|
148
|
+
}
|
|
149
|
+
//#endregion
|
|
150
|
+
export { arrayAll, arrayContainedBy, arrayContains, arrayHas, arrayOverlaps };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Query } from "../query-builders/query.mjs";
|
|
2
|
+
import { AnyColumn, TableColumn } from "../table.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/filters/custom.d.ts
|
|
5
|
+
/** Abstract base class for SQL filter expressions used in `WHERE`/`ON` clauses. */
|
|
6
|
+
declare abstract class Filter<TColumn extends TableColumn<any, any, any, AnyColumn>> {
|
|
7
|
+
readonly $Columns: TColumn;
|
|
8
|
+
abstract toSQL(): string;
|
|
9
|
+
abstract toQuery(query: Query): void;
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { Filter };
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { Query } from "../query-builders/query.mjs";
|
|
2
|
+
import { SelectQuery } from "../query-builders/select.mjs";
|
|
3
|
+
import { Sql } from "../sql.mjs";
|
|
4
|
+
import { Filter } from "./custom.mjs";
|
|
5
|
+
import { Arg } from "../query-builders/pre.mjs";
|
|
6
|
+
import { AnyColumn, AnyTableWithColumns, TColsToLeftRight, TableColumn, TableColumnArgs } from "../table.mjs";
|
|
7
|
+
|
|
8
|
+
//#region src/filters/index.d.ts
|
|
9
|
+
type ConditionExpression<Left extends TableColumnArgs, Right extends Record<string, TableColumnArgs>, TArg extends boolean = false> = EqualValCondition<Left[0], Left[1], Left[2], Left[3], Left[3]["ValType"]> | (TArg extends true ? EqualValCondition<Left[0], Left[1], Left[2], Left[3], Arg<Left[3]["ValType"]>> : never) | { [RightKey in keyof Right]: EqualColCondition<Left[0], Left[1], Left[2], Left[3], Right[RightKey][0], Right[RightKey][1], Right[RightKey][2], Right[RightKey][3]> }[keyof Right] | GreaterEqualValCondition<Left[0], Left[1], Left[2], Left[3], Left[3]["ValType"] | (TArg extends true ? Arg<Left[3]["ValType"]> : never)> | { [RightKey in keyof Right]: GreaterEqualColCondition<Left[0], Left[1], Left[2], Left[3], Right[RightKey][0], Right[RightKey][1], Right[RightKey][2], Right[RightKey][3]> }[keyof Right] | GreaterThanValCondition<Left[0], Left[1], Left[2], Left[3], Left[3]["ValType"] | (TArg extends true ? Arg<Left[3]["ValType"]> : never)> | { [RightKey in keyof Right]: GreaterThanColCondition<Left[0], Left[1], Left[2], Left[3], Right[RightKey][0], Right[RightKey][1], Right[RightKey][2], Right[RightKey][3]> }[keyof Right] | LessThanValCondition<Left[0], Left[1], Left[2], Left[3], Left[3]["ValType"] | (TArg extends true ? Arg<Left[3]["ValType"]> : never)> | { [RightKey in keyof Right]: LessThanColCondition<Left[0], Left[1], Left[2], Left[3], Right[RightKey][0], Right[RightKey][1], Right[RightKey][2], Right[RightKey][3]> }[keyof Right] | LessEqualValCondition<Left[0], Left[1], Left[2], Left[3], Left[3]["ValType"] | (TArg extends true ? Arg<Left[3]["ValType"]> : never)> | { [RightKey in keyof Right]: LessEqualColCondition<Left[0], Left[1], Left[2], Left[3], Right[RightKey][0], Right[RightKey][1], Right[RightKey][2], Right[RightKey][3]> }[keyof Right] | IsNullCondition<Left[0], Left[1], Left[2], Left[3]> | InCondition<Left[0], Left[1], Left[2], Left[3], TArg>;
|
|
10
|
+
type BuildFilterExpression<TLeftRight extends Record<string, {
|
|
11
|
+
left: TableColumnArgs;
|
|
12
|
+
right: Record<string, TableColumnArgs>;
|
|
13
|
+
}>, TArg extends boolean = false> = { [LeftKey in keyof TLeftRight]: ConditionExpression<TLeftRight[LeftKey]["left"], TLeftRight[LeftKey]["right"], TArg> }[keyof TLeftRight] | Filter<{ [LeftKey in keyof TLeftRight]: TLeftRight[LeftKey]["left"] extends [infer Schema extends string, infer TblName extends string, infer ColName extends string, infer ColType extends AnyColumn] ? TableColumn<Schema, TblName, ColName, ColType> : never }[keyof TLeftRight]> | Sql | AndCondition<BuildFilterExpression<TLeftRight, TArg>[]> | OrCondition<BuildFilterExpression<TLeftRight, TArg>[]>;
|
|
14
|
+
type StdCondition = BuildFilterExpression<TColsToLeftRight<AnyTableWithColumns["_"]["columns"]>>;
|
|
15
|
+
declare class EqualValCondition<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn, TRight extends Col["ValType"] | Arg<Col["ValType"]>> {
|
|
16
|
+
readonly left: TableColumn<CTSchema, CTName, CName, Col>;
|
|
17
|
+
readonly right: TRight;
|
|
18
|
+
constructor(field: TableColumn<CTSchema, CTName, CName, Col>, right: TRight);
|
|
19
|
+
toSQL(): string;
|
|
20
|
+
toQuery(query: Query): void;
|
|
21
|
+
}
|
|
22
|
+
declare class EqualColCondition<C1TSchema extends string, C1TName extends string, C1Name extends Key, C1 extends AnyColumn, C2TSchema extends string, C2TName extends string, C2Name extends Key, C2 extends AnyColumn> {
|
|
23
|
+
readonly left: TableColumn<C1TSchema, C1TName, C1Name, C1>;
|
|
24
|
+
readonly right: TableColumn<C2TSchema, C2TName, C2Name, C2>;
|
|
25
|
+
constructor(field: TableColumn<C1TSchema, C1TName, C1Name, C1>, right: TableColumn<C2TSchema, C2TName, C2Name, C2>);
|
|
26
|
+
toSQL(): string;
|
|
27
|
+
toQuery(query: Query): void;
|
|
28
|
+
}
|
|
29
|
+
declare function eq<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn, TRight extends Col["ValType"]>(field: TableColumn<CTSchema, CTName, CName, Col>, right: TRight): EqualValCondition<CTSchema, CTName, CName, Col, TRight>;
|
|
30
|
+
declare function eq<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn, TRight extends Arg<Col["ValType"]>>(field: TableColumn<CTSchema, CTName, CName, Col>, right: TRight): EqualValCondition<CTSchema, CTName, CName, Col, TRight>;
|
|
31
|
+
declare function eq<C1TSchema extends string, C1TName extends string, C1Name extends Key, C1 extends AnyColumn, C2TSchema extends string, C2TName extends string, C2Name extends Key, C2 extends AnyColumn>(field: TableColumn<C1TSchema, C1TName, C1Name, C1>, right: TableColumn<C2TSchema, C2TName, C2Name, C2>): EqualColCondition<C1TSchema, C1TName, C1Name, C1, C2TSchema, C2TName, C2Name, C2>;
|
|
32
|
+
declare class NotEqualValCondition<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn, TRight extends Col["ValType"] | Arg<Col["ValType"]>> {
|
|
33
|
+
readonly left: TableColumn<CTSchema, CTName, CName, Col>;
|
|
34
|
+
readonly right: TRight;
|
|
35
|
+
constructor(field: TableColumn<CTSchema, CTName, CName, Col>, right: TRight);
|
|
36
|
+
toSQL(): string;
|
|
37
|
+
toQuery(query: Query): void;
|
|
38
|
+
}
|
|
39
|
+
declare class NotEqualColCondition<C1TSchema extends string, C1TName extends string, C1Name extends Key, C1 extends AnyColumn, C2TSchema extends string, C2TName extends string, C2Name extends Key, C2 extends AnyColumn> {
|
|
40
|
+
readonly left: TableColumn<C1TSchema, C1TName, C1Name, C1>;
|
|
41
|
+
readonly right: TableColumn<C2TSchema, C2TName, C2Name, C2>;
|
|
42
|
+
constructor(field: TableColumn<C1TSchema, C1TName, C1Name, C1>, right: TableColumn<C2TSchema, C2TName, C2Name, C2>);
|
|
43
|
+
toSQL(): string;
|
|
44
|
+
toQuery(query: Query): void;
|
|
45
|
+
}
|
|
46
|
+
declare function ne<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn, TRight extends Col["ValType"]>(field: TableColumn<CTSchema, CTName, CName, Col>, right: TRight): NotEqualValCondition<CTSchema, CTName, CName, Col, TRight>;
|
|
47
|
+
declare function ne<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn, TRight extends Arg<Col["ValType"]>>(field: TableColumn<CTSchema, CTName, CName, Col>, right: TRight): NotEqualValCondition<CTSchema, CTName, CName, Col, TRight>;
|
|
48
|
+
declare function ne<C1TSchema extends string, C1TName extends string, C1Name extends Key, C1 extends AnyColumn, C2TSchema extends string, C2TName extends string, C2Name extends Key, C2 extends AnyColumn>(field: TableColumn<C1TSchema, C1TName, C1Name, C1>, right: TableColumn<C2TSchema, C2TName, C2Name, C2>): NotEqualColCondition<C1TSchema, C1TName, C1Name, C1, C2TSchema, C2TName, C2Name, C2>;
|
|
49
|
+
declare class GreaterEqualValCondition<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn, TRight extends Col["ValType"] | Arg<Col["ValType"]>> {
|
|
50
|
+
readonly left: TableColumn<CTSchema, CTName, CName, Col>;
|
|
51
|
+
readonly right: TRight;
|
|
52
|
+
constructor(field: TableColumn<CTSchema, CTName, CName, Col>, right: TRight);
|
|
53
|
+
toSQL(): string;
|
|
54
|
+
toQuery(query: Query): void;
|
|
55
|
+
}
|
|
56
|
+
declare class GreaterEqualColCondition<C1TSchema extends string, C1TName extends string, C1Name extends Key, C1 extends AnyColumn, C2TSchema extends string, C2TName extends string, C2Name extends Key, C2 extends AnyColumn> {
|
|
57
|
+
readonly left: TableColumn<C1TSchema, C1TName, C1Name, C1>;
|
|
58
|
+
readonly right: TableColumn<C2TSchema, C2TName, C2Name, C2>;
|
|
59
|
+
constructor(field: TableColumn<C1TSchema, C1TName, C1Name, C1>, right: TableColumn<C2TSchema, C2TName, C2Name, C2>);
|
|
60
|
+
toSQL(): string;
|
|
61
|
+
toQuery(query: Query): void;
|
|
62
|
+
}
|
|
63
|
+
declare function gte<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn, TRight extends Col["ValType"]>(field: TableColumn<CTSchema, CTName, CName, Col>, right: TRight): GreaterEqualValCondition<CTSchema, CTName, CName, Col, TRight>;
|
|
64
|
+
declare function gte<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn, TRight extends Arg<Col["ValType"]>>(field: TableColumn<CTSchema, CTName, CName, Col>, right: TRight): GreaterEqualValCondition<CTSchema, CTName, CName, Col, TRight>;
|
|
65
|
+
declare function gte<C1TSchema extends string, C1TName extends string, C1Name extends Key, C1 extends AnyColumn, C2TSchema extends string, C2TName extends string, C2Name extends Key, C2 extends AnyColumn>(field: TableColumn<C1TSchema, C1TName, C1Name, C1>, right: TableColumn<C2TSchema, C2TName, C2Name, C2>): GreaterEqualColCondition<C1TSchema, C1TName, C1Name, C1, C2TSchema, C2TName, C2Name, C2>;
|
|
66
|
+
declare class GreaterThanValCondition<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn, TRight extends Col["ValType"] | Arg<Col["ValType"]>> {
|
|
67
|
+
readonly left: TableColumn<CTSchema, CTName, CName, Col>;
|
|
68
|
+
readonly right: TRight;
|
|
69
|
+
constructor(field: TableColumn<CTSchema, CTName, CName, Col>, right: TRight);
|
|
70
|
+
toSQL(): string;
|
|
71
|
+
toQuery(query: Query): void;
|
|
72
|
+
}
|
|
73
|
+
declare class GreaterThanColCondition<C1TSchema extends string, C1TName extends string, C1Name extends Key, C1 extends AnyColumn, C2TSchema extends string, C2TName extends string, C2Name extends Key, C2 extends AnyColumn> {
|
|
74
|
+
readonly left: TableColumn<C1TSchema, C1TName, C1Name, C1>;
|
|
75
|
+
readonly right: TableColumn<C2TSchema, C2TName, C2Name, C2>;
|
|
76
|
+
constructor(field: TableColumn<C1TSchema, C1TName, C1Name, C1>, right: TableColumn<C2TSchema, C2TName, C2Name, C2>);
|
|
77
|
+
toSQL(): string;
|
|
78
|
+
toQuery(query: Query): void;
|
|
79
|
+
}
|
|
80
|
+
declare function gt<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn, TRight extends Col["ValType"]>(field: TableColumn<CTSchema, CTName, CName, Col>, right: TRight): GreaterThanValCondition<CTSchema, CTName, CName, Col, TRight>;
|
|
81
|
+
declare function gt<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn, TRight extends Arg<Col["ValType"]>>(field: TableColumn<CTSchema, CTName, CName, Col>, right: TRight): GreaterThanValCondition<CTSchema, CTName, CName, Col, TRight>;
|
|
82
|
+
declare function gt<C1TSchema extends string, C1TName extends string, C1Name extends Key, C1 extends AnyColumn, C2TSchema extends string, C2TName extends string, C2Name extends Key, C2 extends AnyColumn>(field: TableColumn<C1TSchema, C1TName, C1Name, C1>, right: TableColumn<C2TSchema, C2TName, C2Name, C2>): GreaterThanColCondition<C1TSchema, C1TName, C1Name, C1, C2TSchema, C2TName, C2Name, C2>;
|
|
83
|
+
declare class LessEqualValCondition<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn, TRight extends Col["ValType"] | Arg<Col["ValType"]>> {
|
|
84
|
+
readonly left: TableColumn<CTSchema, CTName, CName, Col>;
|
|
85
|
+
readonly right: TRight;
|
|
86
|
+
constructor(field: TableColumn<CTSchema, CTName, CName, Col>, right: TRight);
|
|
87
|
+
toSQL(): string;
|
|
88
|
+
toQuery(query: Query): void;
|
|
89
|
+
}
|
|
90
|
+
declare class LessEqualColCondition<C1TSchema extends string, C1TName extends string, C1Name extends Key, C1 extends AnyColumn, C2TSchema extends string, C2TName extends string, C2Name extends Key, C2 extends AnyColumn> {
|
|
91
|
+
readonly left: TableColumn<C1TSchema, C1TName, C1Name, C1>;
|
|
92
|
+
readonly right: TableColumn<C2TSchema, C2TName, C2Name, C2>;
|
|
93
|
+
constructor(field: TableColumn<C1TSchema, C1TName, C1Name, C1>, right: TableColumn<C2TSchema, C2TName, C2Name, C2>);
|
|
94
|
+
toSQL(): string;
|
|
95
|
+
toQuery(query: Query): void;
|
|
96
|
+
}
|
|
97
|
+
declare function lte<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn, TRight extends Col["ValType"]>(field: TableColumn<CTSchema, CTName, CName, Col>, right: TRight): LessEqualValCondition<CTSchema, CTName, CName, Col, TRight>;
|
|
98
|
+
declare function lte<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn, TRight extends Arg<Col["ValType"]>>(field: TableColumn<CTSchema, CTName, CName, Col>, right: TRight): LessEqualValCondition<CTSchema, CTName, CName, Col, TRight>;
|
|
99
|
+
declare function lte<C1TSchema extends string, C1TName extends string, C1Name extends Key, C1 extends AnyColumn, C2TSchema extends string, C2TName extends string, C2Name extends Key, C2 extends AnyColumn>(field: TableColumn<C1TSchema, C1TName, C1Name, C1>, right: TableColumn<C2TSchema, C2TName, C2Name, C2>): LessEqualColCondition<C1TSchema, C1TName, C1Name, C1, C2TSchema, C2TName, C2Name, C2>;
|
|
100
|
+
declare class LessThanValCondition<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn, TRight extends Col["ValType"] | Arg<Col["ValType"]>> {
|
|
101
|
+
readonly left: TableColumn<CTSchema, CTName, CName, Col>;
|
|
102
|
+
readonly right: TRight;
|
|
103
|
+
constructor(field: TableColumn<CTSchema, CTName, CName, Col>, right: TRight);
|
|
104
|
+
toSQL(): string;
|
|
105
|
+
toQuery(query: Query): void;
|
|
106
|
+
}
|
|
107
|
+
declare class LessThanColCondition<C1TSchema extends string, C1TName extends string, C1Name extends Key, C1 extends AnyColumn, C2TSchema extends string, C2TName extends string, C2Name extends Key, C2 extends AnyColumn> {
|
|
108
|
+
readonly left: TableColumn<C1TSchema, C1TName, C1Name, C1>;
|
|
109
|
+
readonly right: TableColumn<C2TSchema, C2TName, C2Name, C2>;
|
|
110
|
+
constructor(field: TableColumn<C1TSchema, C1TName, C1Name, C1>, right: TableColumn<C2TSchema, C2TName, C2Name, C2>);
|
|
111
|
+
toSQL(): string;
|
|
112
|
+
toQuery(query: Query): void;
|
|
113
|
+
}
|
|
114
|
+
declare function lt<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn, TRight extends Col["ValType"]>(field: TableColumn<CTSchema, CTName, CName, Col>, right: TRight): LessThanValCondition<CTSchema, CTName, CName, Col, TRight>;
|
|
115
|
+
declare function lt<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn, TRight extends Arg<Col["ValType"]>>(field: TableColumn<CTSchema, CTName, CName, Col>, right: TRight): LessThanValCondition<CTSchema, CTName, CName, Col, TRight>;
|
|
116
|
+
declare function lt<C1TSchema extends string, C1TName extends string, C1Name extends Key, C1 extends AnyColumn, C2TSchema extends string, C2TName extends string, C2Name extends Key, C2 extends AnyColumn>(field: TableColumn<C1TSchema, C1TName, C1Name, C1>, right: TableColumn<C2TSchema, C2TName, C2Name, C2>): LessThanColCondition<C1TSchema, C1TName, C1Name, C1, C2TSchema, C2TName, C2Name, C2>;
|
|
117
|
+
declare class IsNullCondition<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn> {
|
|
118
|
+
readonly field: TableColumn<CTSchema, CTName, CName, Col>;
|
|
119
|
+
constructor(field: TableColumn<CTSchema, CTName, CName, Col>);
|
|
120
|
+
toSQL(): string;
|
|
121
|
+
toQuery(query: Query): void;
|
|
122
|
+
}
|
|
123
|
+
declare function isNull<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn>(field: TableColumn<CTSchema, CTName, CName, Col>): IsNullCondition<CTSchema, CTName, CName, Col>;
|
|
124
|
+
declare class IsNotNullCondition<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn> {
|
|
125
|
+
readonly field: TableColumn<CTSchema, CTName, CName, Col>;
|
|
126
|
+
constructor(field: TableColumn<CTSchema, CTName, CName, Col>);
|
|
127
|
+
toSQL(): string;
|
|
128
|
+
toQuery(query: Query): void;
|
|
129
|
+
}
|
|
130
|
+
declare function isNotNull<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn>(field: TableColumn<CTSchema, CTName, CName, Col>): IsNotNullCondition<CTSchema, CTName, CName, Col>;
|
|
131
|
+
type InSelectQuery<TArg extends boolean, TReturn> = SelectQuery<any, any, any, any, any, TArg, any, any, Record<string, TReturn>[]>;
|
|
132
|
+
declare class InCondition<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn, TArg extends boolean> {
|
|
133
|
+
readonly field: TableColumn<CTSchema, CTName, CName, Col>;
|
|
134
|
+
readonly values: Col["ValType"][] | InSelectQuery<TArg, Col["ValType"]>;
|
|
135
|
+
constructor(field: TableColumn<CTSchema, CTName, CName, Col>, values: Col["ValType"][] | InSelectQuery<TArg, Col["ValType"]>);
|
|
136
|
+
toSQL(): string;
|
|
137
|
+
toQuery(query: Query): void;
|
|
138
|
+
}
|
|
139
|
+
declare function isIn<CTSchema extends string, CTName extends string, CName extends Key, Col extends AnyColumn>(field: TableColumn<CTSchema, CTName, CName, Col>, values: Col["ValType"][] | InSelectQuery<boolean, Col["ValType"]>): InCondition<CTSchema, CTName, CName, Col, boolean>;
|
|
140
|
+
declare class AndCondition<TConditions extends any[]> {
|
|
141
|
+
readonly conditions: TConditions;
|
|
142
|
+
constructor(...conditions: TConditions);
|
|
143
|
+
toSQL(): string;
|
|
144
|
+
toQuery(query: Query): void;
|
|
145
|
+
}
|
|
146
|
+
declare function and<TConditions extends any[]>(...conditions: TConditions): AndCondition<TConditions>;
|
|
147
|
+
declare class OrCondition<TConditions extends any[]> {
|
|
148
|
+
readonly conditions: TConditions;
|
|
149
|
+
constructor(...conditions: TConditions);
|
|
150
|
+
toSQL(): string;
|
|
151
|
+
toQuery(query: Query): void;
|
|
152
|
+
}
|
|
153
|
+
declare function or<TConditions extends any[]>(...conditions: TConditions): OrCondition<TConditions>;
|
|
154
|
+
//#endregion
|
|
155
|
+
export { BuildFilterExpression, StdCondition, and, eq, gt, gte, isIn, isNotNull, isNull, lt, lte, ne, or };
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
import { Arg } from "../query-builders/pre.mjs";
|
|
2
|
+
import { is, isTCol } from "../entity.mjs";
|
|
3
|
+
import "./custom.mjs";
|
|
4
|
+
//#region src/filters/index.ts
|
|
5
|
+
var EqualValCondition = class {
|
|
6
|
+
left;
|
|
7
|
+
right;
|
|
8
|
+
constructor(field, right) {
|
|
9
|
+
this.left = field;
|
|
10
|
+
this.right = right;
|
|
11
|
+
}
|
|
12
|
+
toSQL() {
|
|
13
|
+
return `${this.left.fullName} = ${this.left.toSQL(this.right)}`;
|
|
14
|
+
}
|
|
15
|
+
toQuery(query) {
|
|
16
|
+
query.sql += `${this.left.fullName} = `;
|
|
17
|
+
if (is(this.right, Arg)) query.addArg(this.right);
|
|
18
|
+
else query.sql += this.left.toSQL(this.right);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
var EqualColCondition = class {
|
|
22
|
+
left;
|
|
23
|
+
right;
|
|
24
|
+
constructor(field, right) {
|
|
25
|
+
this.left = field;
|
|
26
|
+
this.right = right;
|
|
27
|
+
}
|
|
28
|
+
toSQL() {
|
|
29
|
+
return `${this.left.fullName} = ${this.right.fullName}`;
|
|
30
|
+
}
|
|
31
|
+
toQuery(query) {
|
|
32
|
+
query.sql += `${this.left.fullName} = ${this.right.fullName}`;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
function eq(field, right) {
|
|
36
|
+
if (isTCol(right)) return new EqualColCondition(field, right);
|
|
37
|
+
else return new EqualValCondition(field, right);
|
|
38
|
+
}
|
|
39
|
+
var NotEqualValCondition = class {
|
|
40
|
+
left;
|
|
41
|
+
right;
|
|
42
|
+
constructor(field, right) {
|
|
43
|
+
this.left = field;
|
|
44
|
+
this.right = right;
|
|
45
|
+
}
|
|
46
|
+
toSQL() {
|
|
47
|
+
return `${this.left.fullName} != ${this.left.toSQL(this.right)}`;
|
|
48
|
+
}
|
|
49
|
+
toQuery(query) {
|
|
50
|
+
query.sql += `${this.left.fullName} != `;
|
|
51
|
+
if (is(this.right, Arg)) query.addArg(this.right);
|
|
52
|
+
else query.sql += this.left.toSQL(this.right);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
var NotEqualColCondition = class {
|
|
56
|
+
left;
|
|
57
|
+
right;
|
|
58
|
+
constructor(field, right) {
|
|
59
|
+
this.left = field;
|
|
60
|
+
this.right = right;
|
|
61
|
+
}
|
|
62
|
+
toSQL() {
|
|
63
|
+
return `${this.left.fullName} != ${this.right.fullName}`;
|
|
64
|
+
}
|
|
65
|
+
toQuery(query) {
|
|
66
|
+
query.sql += `${this.left.fullName} != ${this.right.fullName}`;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
function ne(field, right) {
|
|
70
|
+
if (isTCol(right)) return new NotEqualColCondition(field, right);
|
|
71
|
+
else return new NotEqualValCondition(field, right);
|
|
72
|
+
}
|
|
73
|
+
var GreaterEqualValCondition = class {
|
|
74
|
+
left;
|
|
75
|
+
right;
|
|
76
|
+
constructor(field, right) {
|
|
77
|
+
this.left = field;
|
|
78
|
+
this.right = right;
|
|
79
|
+
}
|
|
80
|
+
toSQL() {
|
|
81
|
+
return `${this.left.fullName} >= ${this.left.toSQL(this.right)}`;
|
|
82
|
+
}
|
|
83
|
+
toQuery(query) {
|
|
84
|
+
query.sql += `${this.left.fullName} >= `;
|
|
85
|
+
if (is(this.right, Arg)) query.addArg(this.right);
|
|
86
|
+
else query.sql += this.left.toSQL(this.right);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
var GreaterEqualColCondition = class {
|
|
90
|
+
left;
|
|
91
|
+
right;
|
|
92
|
+
constructor(field, right) {
|
|
93
|
+
this.left = field;
|
|
94
|
+
this.right = right;
|
|
95
|
+
}
|
|
96
|
+
toSQL() {
|
|
97
|
+
return `${this.left.fullName} >= ${this.right.fullName}`;
|
|
98
|
+
}
|
|
99
|
+
toQuery(query) {
|
|
100
|
+
query.sql += `${this.left.fullName} >= ${this.right.fullName}`;
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
function gte(field, right) {
|
|
104
|
+
if (isTCol(right)) return new GreaterEqualColCondition(field, right);
|
|
105
|
+
else return new GreaterEqualValCondition(field, right);
|
|
106
|
+
}
|
|
107
|
+
var GreaterThanValCondition = class {
|
|
108
|
+
left;
|
|
109
|
+
right;
|
|
110
|
+
constructor(field, right) {
|
|
111
|
+
this.left = field;
|
|
112
|
+
this.right = right;
|
|
113
|
+
}
|
|
114
|
+
toSQL() {
|
|
115
|
+
return `${this.left.fullName} > ${this.left.toSQL(this.right)}`;
|
|
116
|
+
}
|
|
117
|
+
toQuery(query) {
|
|
118
|
+
query.sql += `${this.left.fullName} > `;
|
|
119
|
+
if (is(this.right, Arg)) query.addArg(this.right);
|
|
120
|
+
else query.sql += this.left.toSQL(this.right);
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
var GreaterThanColCondition = class {
|
|
124
|
+
left;
|
|
125
|
+
right;
|
|
126
|
+
constructor(field, right) {
|
|
127
|
+
this.left = field;
|
|
128
|
+
this.right = right;
|
|
129
|
+
}
|
|
130
|
+
toSQL() {
|
|
131
|
+
return `${this.left.fullName} > ${this.right.fullName}`;
|
|
132
|
+
}
|
|
133
|
+
toQuery(query) {
|
|
134
|
+
query.sql += `${this.left.fullName} > ${this.right.fullName}`;
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
function gt(field, right) {
|
|
138
|
+
if (isTCol(right)) return new GreaterThanColCondition(field, right);
|
|
139
|
+
else return new GreaterThanValCondition(field, right);
|
|
140
|
+
}
|
|
141
|
+
var LessEqualValCondition = class {
|
|
142
|
+
left;
|
|
143
|
+
right;
|
|
144
|
+
constructor(field, right) {
|
|
145
|
+
this.left = field;
|
|
146
|
+
this.right = right;
|
|
147
|
+
}
|
|
148
|
+
toSQL() {
|
|
149
|
+
return `${this.left.fullName} <= ${this.left.toSQL(this.right)}`;
|
|
150
|
+
}
|
|
151
|
+
toQuery(query) {
|
|
152
|
+
query.sql += `${this.left.fullName} <= `;
|
|
153
|
+
if (is(this.right, Arg)) query.addArg(this.right);
|
|
154
|
+
else query.sql += this.left.toSQL(this.right);
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
var LessEqualColCondition = class {
|
|
158
|
+
left;
|
|
159
|
+
right;
|
|
160
|
+
constructor(field, right) {
|
|
161
|
+
this.left = field;
|
|
162
|
+
this.right = right;
|
|
163
|
+
}
|
|
164
|
+
toSQL() {
|
|
165
|
+
return `${this.left.fullName} <= ${this.right.fullName}`;
|
|
166
|
+
}
|
|
167
|
+
toQuery(query) {
|
|
168
|
+
query.sql += `${this.left.fullName} <= ${this.right.fullName}`;
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
function lte(field, right) {
|
|
172
|
+
if (isTCol(right)) return new LessEqualColCondition(field, right);
|
|
173
|
+
else return new LessEqualValCondition(field, right);
|
|
174
|
+
}
|
|
175
|
+
var LessThanValCondition = class {
|
|
176
|
+
left;
|
|
177
|
+
right;
|
|
178
|
+
constructor(field, right) {
|
|
179
|
+
this.left = field;
|
|
180
|
+
this.right = right;
|
|
181
|
+
}
|
|
182
|
+
toSQL() {
|
|
183
|
+
return `${this.left.fullName} < ${this.left.toSQL(this.right)}`;
|
|
184
|
+
}
|
|
185
|
+
toQuery(query) {
|
|
186
|
+
query.sql += `${this.left.fullName} < `;
|
|
187
|
+
if (is(this.right, Arg)) query.addArg(this.right);
|
|
188
|
+
else query.sql += this.left.toSQL(this.right);
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
var LessThanColCondition = class {
|
|
192
|
+
left;
|
|
193
|
+
right;
|
|
194
|
+
constructor(field, right) {
|
|
195
|
+
this.left = field;
|
|
196
|
+
this.right = right;
|
|
197
|
+
}
|
|
198
|
+
toSQL() {
|
|
199
|
+
return `${this.left.fullName} < ${this.right.fullName}`;
|
|
200
|
+
}
|
|
201
|
+
toQuery(query) {
|
|
202
|
+
query.sql += `${this.left.fullName} < ${this.right.fullName}`;
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
function lt(field, right) {
|
|
206
|
+
if (isTCol(right)) return new LessThanColCondition(field, right);
|
|
207
|
+
else return new LessThanValCondition(field, right);
|
|
208
|
+
}
|
|
209
|
+
var IsNullCondition = class {
|
|
210
|
+
field;
|
|
211
|
+
constructor(field) {
|
|
212
|
+
this.field = field;
|
|
213
|
+
}
|
|
214
|
+
toSQL() {
|
|
215
|
+
return `${this.field.fullName} IS NULL`;
|
|
216
|
+
}
|
|
217
|
+
toQuery(query) {
|
|
218
|
+
query.sql += `${this.field.fullName} IS NULL`;
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
function isNull(field) {
|
|
222
|
+
return new IsNullCondition(field);
|
|
223
|
+
}
|
|
224
|
+
var IsNotNullCondition = class {
|
|
225
|
+
field;
|
|
226
|
+
constructor(field) {
|
|
227
|
+
this.field = field;
|
|
228
|
+
}
|
|
229
|
+
toSQL() {
|
|
230
|
+
return `${this.field.fullName} IS NOT NULL`;
|
|
231
|
+
}
|
|
232
|
+
toQuery(query) {
|
|
233
|
+
query.sql += `${this.field.fullName} IS NOT NULL`;
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
function isNotNull(field) {
|
|
237
|
+
return new IsNotNullCondition(field);
|
|
238
|
+
}
|
|
239
|
+
var InCondition = class {
|
|
240
|
+
field;
|
|
241
|
+
values;
|
|
242
|
+
constructor(field, values) {
|
|
243
|
+
this.field = field;
|
|
244
|
+
this.values = values;
|
|
245
|
+
}
|
|
246
|
+
toSQL() {
|
|
247
|
+
if (Array.isArray(this.values)) {
|
|
248
|
+
if (this.values.length === 0) return "FALSE";
|
|
249
|
+
return `${this.field.fullName} IN (${this.values.map((v) => this.field.toSQL(v)).join(", ")})`;
|
|
250
|
+
} else return `${this.field.fullName} IN (${this.values.toQuery()})`;
|
|
251
|
+
}
|
|
252
|
+
toQuery(query) {
|
|
253
|
+
if (Array.isArray(this.values)) {
|
|
254
|
+
if (this.values.length === 0) {
|
|
255
|
+
query.sql += "FALSE";
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
query.sql += `${this.field.fullName} IN (`;
|
|
259
|
+
query.sql += this.values.map((v) => this.field.toSQL(v)).join(", ");
|
|
260
|
+
query.sql += ")";
|
|
261
|
+
} else {
|
|
262
|
+
query.sql += `${this.field.fullName} IN (`;
|
|
263
|
+
query.sql += this.values.toQuery();
|
|
264
|
+
query.sql += ")";
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
function isIn(field, values) {
|
|
269
|
+
return new InCondition(field, values);
|
|
270
|
+
}
|
|
271
|
+
var AndCondition = class {
|
|
272
|
+
conditions;
|
|
273
|
+
constructor(...conditions) {
|
|
274
|
+
this.conditions = conditions;
|
|
275
|
+
}
|
|
276
|
+
toSQL() {
|
|
277
|
+
let sql = "";
|
|
278
|
+
for (let i = 0; i < this.conditions.length; i++) {
|
|
279
|
+
sql += this.conditions[i].toSQL();
|
|
280
|
+
if (i < this.conditions.length - 1) sql += " AND ";
|
|
281
|
+
}
|
|
282
|
+
return sql;
|
|
283
|
+
}
|
|
284
|
+
toQuery(query) {
|
|
285
|
+
for (let i = 0; i < this.conditions.length; i++) {
|
|
286
|
+
this.conditions[i].toQuery(query);
|
|
287
|
+
if (i < this.conditions.length - 1) query.sql += " AND ";
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
};
|
|
291
|
+
function and(...conditions) {
|
|
292
|
+
return new AndCondition(...conditions);
|
|
293
|
+
}
|
|
294
|
+
var OrCondition = class {
|
|
295
|
+
conditions;
|
|
296
|
+
constructor(...conditions) {
|
|
297
|
+
this.conditions = conditions;
|
|
298
|
+
}
|
|
299
|
+
toSQL() {
|
|
300
|
+
let sql = "";
|
|
301
|
+
for (let i = 0; i < this.conditions.length; i++) {
|
|
302
|
+
sql += this.conditions[i].toSQL();
|
|
303
|
+
if (i < this.conditions.length - 1) sql += " OR ";
|
|
304
|
+
}
|
|
305
|
+
return sql;
|
|
306
|
+
}
|
|
307
|
+
toQuery(query) {
|
|
308
|
+
for (let i = 0; i < this.conditions.length; i++) {
|
|
309
|
+
this.conditions[i].toQuery(query);
|
|
310
|
+
if (i < this.conditions.length - 1) query.sql += " OR ";
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
};
|
|
314
|
+
function or(...conditions) {
|
|
315
|
+
return new OrCondition(...conditions);
|
|
316
|
+
}
|
|
317
|
+
//#endregion
|
|
318
|
+
export { and, eq, gt, gte, isIn, isNotNull, isNull, lt, lte, ne, or };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Sql } from "../sql.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/functions/index.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Returns a Sql object that represents the SQL function `now()`.
|
|
6
|
+
* @returns Sql
|
|
7
|
+
*/
|
|
8
|
+
declare function now(): Sql;
|
|
9
|
+
/**
|
|
10
|
+
* Returns a Sql object that represents the SQL function `gen_random_uuid()` (UUID v4).
|
|
11
|
+
*
|
|
12
|
+
* Note: Requires the pgcrypto extension in PostgreSQL.
|
|
13
|
+
* @returns Sql
|
|
14
|
+
*/
|
|
15
|
+
declare function uuidv4(): Sql;
|
|
16
|
+
/**
|
|
17
|
+
* Returns a Sql object that represents the SQL function `uuid_generate_v7()` (UUID v7).
|
|
18
|
+
*
|
|
19
|
+
* Note: Requires the uuid-ossp extension in PostgreSQL.
|
|
20
|
+
* @returns Sql
|
|
21
|
+
*/
|
|
22
|
+
declare function uuidv7(): Sql;
|
|
23
|
+
//#endregion
|
|
24
|
+
export { now, uuidv4, uuidv7 };
|