effect-qb 0.13.0 → 0.14.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/README.md +6 -1431
- package/dist/mysql.js +1678 -355
- package/dist/postgres/metadata.js +2724 -0
- package/dist/postgres.js +7197 -5433
- package/package.json +8 -10
- package/src/internal/column-state.ts +84 -10
- package/src/internal/column.ts +556 -34
- package/src/internal/datatypes/define.ts +0 -30
- package/src/internal/executor.ts +45 -11
- package/src/internal/expression-ast.ts +4 -0
- package/src/internal/expression.ts +1 -1
- package/src/internal/implication-runtime.ts +171 -0
- package/src/internal/mysql-query.ts +7173 -0
- package/src/internal/mysql-renderer.ts +2 -2
- package/src/internal/plan.ts +14 -4
- package/src/internal/{query-factory.ts → postgres-query.ts} +619 -167
- package/src/internal/postgres-renderer.ts +2 -2
- package/src/internal/postgres-schema-model.ts +144 -0
- package/src/internal/predicate-analysis.ts +10 -0
- package/src/internal/predicate-context.ts +112 -36
- package/src/internal/predicate-formula.ts +31 -19
- package/src/internal/predicate-normalize.ts +177 -106
- package/src/internal/predicate-runtime.ts +676 -0
- package/src/internal/query.ts +455 -39
- package/src/internal/renderer.ts +2 -2
- package/src/internal/runtime-schema.ts +74 -20
- package/src/internal/schema-ddl.ts +55 -0
- package/src/internal/schema-derivation.ts +93 -21
- package/src/internal/schema-expression.ts +44 -0
- package/src/internal/sql-expression-renderer.ts +95 -31
- package/src/internal/table-options.ts +87 -7
- package/src/internal/table.ts +104 -41
- package/src/mysql/column.ts +1 -0
- package/src/mysql/datatypes/index.ts +17 -2
- package/src/mysql/function/core.ts +1 -0
- package/src/mysql/function/index.ts +1 -0
- package/src/mysql/private/query.ts +1 -13
- package/src/mysql/query.ts +5 -0
- package/src/postgres/cast.ts +31 -0
- package/src/postgres/column.ts +26 -0
- package/src/postgres/datatypes/index.ts +40 -5
- package/src/postgres/function/core.ts +12 -0
- package/src/postgres/function/index.ts +2 -1
- package/src/postgres/function/json.ts +499 -2
- package/src/postgres/metadata.ts +31 -0
- package/src/postgres/private/query.ts +1 -13
- package/src/postgres/query.ts +5 -2
- package/src/postgres/schema-expression.ts +16 -0
- package/src/postgres/schema-management.ts +204 -0
- package/src/postgres/schema.ts +35 -0
- package/src/postgres/table.ts +307 -41
- package/src/postgres/type.ts +4 -0
- package/src/postgres.ts +14 -0
- package/CHANGELOG.md +0 -134
|
@@ -79,120 +79,191 @@ type FormulaOfEq<
|
|
|
79
79
|
: UnknownTag<"eq:unsupported">
|
|
80
80
|
: AtomOf<import("./predicate-atom.js").EqColumnAtom<ColumnKeyOfExpression<Left>, ColumnKeyOfExpression<Right>>>
|
|
81
81
|
|
|
82
|
+
type FormulaOfNeq<
|
|
83
|
+
Left extends Expression.Any,
|
|
84
|
+
Right extends Expression.Any
|
|
85
|
+
> =
|
|
86
|
+
[ColumnKeyOfExpression<Left>] extends [never]
|
|
87
|
+
? [ColumnKeyOfExpression<Right>] extends [never]
|
|
88
|
+
? LiteralValueOfExpression<Left> extends infer LeftLiteral
|
|
89
|
+
? LiteralValueOfExpression<Right> extends infer RightLiteral
|
|
90
|
+
? [LeftLiteral] extends [never]
|
|
91
|
+
? UnknownTag<"neq:unsupported">
|
|
92
|
+
: [RightLiteral] extends [never]
|
|
93
|
+
? UnknownTag<"neq:unsupported">
|
|
94
|
+
: LeftLiteral extends null
|
|
95
|
+
? False
|
|
96
|
+
: RightLiteral extends null
|
|
97
|
+
? False
|
|
98
|
+
: [LeftLiteral] extends [RightLiteral]
|
|
99
|
+
? False
|
|
100
|
+
: True
|
|
101
|
+
: UnknownTag<"neq:unsupported">
|
|
102
|
+
: UnknownTag<"neq:unsupported">
|
|
103
|
+
: LiteralValueOfExpression<Left> extends infer LeftLiteral
|
|
104
|
+
? [LeftLiteral] extends [never]
|
|
105
|
+
? UnknownTag<"neq:unsupported">
|
|
106
|
+
: LeftLiteral extends null
|
|
107
|
+
? False
|
|
108
|
+
: AtomOf<NeqLiteralAtom<ColumnKeyOfExpression<Right>, ValueKey<LeftLiteral>>>
|
|
109
|
+
: UnknownTag<"neq:unsupported">
|
|
110
|
+
: [ColumnKeyOfExpression<Right>] extends [never]
|
|
111
|
+
? LiteralValueOfExpression<Right> extends infer RightLiteral
|
|
112
|
+
? [RightLiteral] extends [never]
|
|
113
|
+
? UnknownTag<"neq:unsupported">
|
|
114
|
+
: RightLiteral extends null
|
|
115
|
+
? False
|
|
116
|
+
: AtomOf<NeqLiteralAtom<ColumnKeyOfExpression<Left>, ValueKey<RightLiteral>>>
|
|
117
|
+
: UnknownTag<"neq:unsupported">
|
|
118
|
+
: CombineFacts<NonNullFactsOfExpression<Left>, NonNullFactsOfExpression<Right>>
|
|
119
|
+
|
|
120
|
+
type FormulaOfIsNotDistinctFrom<
|
|
121
|
+
Left extends Expression.Any,
|
|
122
|
+
Right extends Expression.Any
|
|
123
|
+
> =
|
|
124
|
+
LiteralValueOfExpression<Left> extends infer LeftLiteral
|
|
125
|
+
? LiteralValueOfExpression<Right> extends infer RightLiteral
|
|
126
|
+
? [LeftLiteral] extends [never]
|
|
127
|
+
? [RightLiteral] extends [never]
|
|
128
|
+
? UnknownTag<"isNotDistinctFrom:unsupported">
|
|
129
|
+
: RightLiteral extends null
|
|
130
|
+
? [ColumnKeyOfExpression<Left>] extends [never]
|
|
131
|
+
? UnknownTag<"isNotDistinctFrom:unsupported">
|
|
132
|
+
: AtomOf<NullAtom<ColumnKeyOfExpression<Left>>>
|
|
133
|
+
: UnknownTag<"isNotDistinctFrom:unsupported">
|
|
134
|
+
: LeftLiteral extends null
|
|
135
|
+
? [ColumnKeyOfExpression<Right>] extends [never]
|
|
136
|
+
? UnknownTag<"isNotDistinctFrom:unsupported">
|
|
137
|
+
: AtomOf<NullAtom<ColumnKeyOfExpression<Right>>>
|
|
138
|
+
: RightLiteral extends null
|
|
139
|
+
? [ColumnKeyOfExpression<Left>] extends [never]
|
|
140
|
+
? UnknownTag<"isNotDistinctFrom:unsupported">
|
|
141
|
+
: AtomOf<NullAtom<ColumnKeyOfExpression<Left>>>
|
|
142
|
+
: [ColumnKeyOfExpression<Left>] extends [never]
|
|
143
|
+
? [ColumnKeyOfExpression<Right>] extends [never]
|
|
144
|
+
? CombineFacts<NonNullFactsOfExpression<Left>, NonNullFactsOfExpression<Right>>
|
|
145
|
+
: AtomOf<EqLiteralAtom<ColumnKeyOfExpression<Right>, ValueKey<LeftLiteral>>>
|
|
146
|
+
: AtomOf<EqLiteralAtom<ColumnKeyOfExpression<Left>, ValueKey<RightLiteral>>>
|
|
147
|
+
: UnknownTag<"isNotDistinctFrom:unsupported">
|
|
148
|
+
: UnknownTag<"isNotDistinctFrom:unsupported">
|
|
149
|
+
|
|
150
|
+
type OrFormulas<
|
|
151
|
+
Items extends readonly PredicateFormula[]
|
|
152
|
+
> = import("./predicate-formula.js").NormalizeBooleanConstants<AnyFormula<Items>>
|
|
153
|
+
|
|
154
|
+
type AndFormulas<
|
|
155
|
+
Items extends readonly PredicateFormula[]
|
|
156
|
+
> = import("./predicate-formula.js").NormalizeBooleanConstants<AllFormula<Items>>
|
|
157
|
+
|
|
158
|
+
type FormulaTupleOf<
|
|
159
|
+
Values extends readonly Expression.Any[]
|
|
160
|
+
> = {
|
|
161
|
+
readonly [K in keyof Values]: Values[K] extends Expression.Any ? FormulaOfExpression<Values[K]> : never
|
|
162
|
+
} & readonly PredicateFormula[]
|
|
163
|
+
|
|
164
|
+
type AllFormulaOfValues<
|
|
165
|
+
Values extends readonly Expression.Any[]
|
|
166
|
+
> = import("./predicate-formula.js").NormalizeBooleanConstants<AllFormula<FormulaTupleOf<Values>>>
|
|
167
|
+
|
|
168
|
+
type AnyFormulaOfValues<
|
|
169
|
+
Values extends readonly Expression.Any[]
|
|
170
|
+
> = import("./predicate-formula.js").NormalizeBooleanConstants<AnyFormula<FormulaTupleOf<Values>>>
|
|
171
|
+
|
|
172
|
+
type FormulaOfInValues<
|
|
173
|
+
Left extends Expression.Any,
|
|
174
|
+
Values extends readonly Expression.Any[],
|
|
175
|
+
Current extends readonly PredicateFormula[] = []
|
|
176
|
+
> = Values extends readonly [
|
|
177
|
+
infer Head extends Expression.Any,
|
|
178
|
+
...infer Tail extends readonly Expression.Any[]
|
|
179
|
+
]
|
|
180
|
+
? FormulaOfInValues<Left, Tail, [...Current, FormulaOfEq<Left, Head>]>
|
|
181
|
+
: Current
|
|
182
|
+
|
|
183
|
+
type FormulaOfNotInValues<
|
|
184
|
+
Left extends Expression.Any,
|
|
185
|
+
Values extends readonly Expression.Any[],
|
|
186
|
+
Current extends readonly PredicateFormula[] = []
|
|
187
|
+
> = Values extends readonly [
|
|
188
|
+
infer Head extends Expression.Any,
|
|
189
|
+
...infer Tail extends readonly Expression.Any[]
|
|
190
|
+
]
|
|
191
|
+
? FormulaOfNotInValues<Left, Tail, [...Current, FormulaOfNeq<Left, Head>]>
|
|
192
|
+
: Current
|
|
193
|
+
|
|
82
194
|
type FormulaOfVariadic<
|
|
83
195
|
Kind extends ExpressionAst.VariadicKind,
|
|
84
196
|
Values extends readonly Expression.Any[]
|
|
85
197
|
> = Kind extends "and"
|
|
86
|
-
?
|
|
87
|
-
readonly [K in keyof Values]: Values[K] extends Expression.Any ? FormulaOfExpression<Values[K]> : never
|
|
88
|
-
} & readonly PredicateFormula[]>>
|
|
198
|
+
? AllFormulaOfValues<Values>
|
|
89
199
|
: Kind extends "or"
|
|
90
|
-
?
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
200
|
+
? AnyFormulaOfValues<Values>
|
|
201
|
+
: Kind extends "in"
|
|
202
|
+
? Values extends readonly [infer Left extends Expression.Any, ...infer Tail extends readonly Expression.Any[]]
|
|
203
|
+
? OrFormulas<FormulaOfInValues<Left, Tail>>
|
|
204
|
+
: False
|
|
205
|
+
: Kind extends "notIn"
|
|
206
|
+
? Values extends readonly [infer Left extends Expression.Any, ...infer Tail extends readonly Expression.Any[]]
|
|
207
|
+
? AndFormulas<FormulaOfNotInValues<Left, Tail>>
|
|
208
|
+
: True
|
|
209
|
+
: Kind extends "between"
|
|
210
|
+
? FactsOfExpressions<Values> extends infer Facts extends PredicateFormula
|
|
211
|
+
? [Facts] extends [never]
|
|
212
|
+
? UnknownTag<"variadic:between">
|
|
213
|
+
: CombineFacts<Facts, UnknownTag<"variadic:between">>
|
|
214
|
+
: UnknownTag<"variadic:between">
|
|
98
215
|
: UnknownTag<`variadic:${Kind}`>
|
|
99
|
-
: UnknownTag<`variadic:${Kind}`>
|
|
100
216
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
: Ast extends ExpressionAst.UnaryNode<infer Kind extends ExpressionAst.UnaryKind, infer Inner extends Expression.Any>
|
|
110
|
-
? Kind extends "isNull"
|
|
217
|
+
type FormulaOfUnary<
|
|
218
|
+
Kind extends ExpressionAst.UnaryKind,
|
|
219
|
+
Inner extends Expression.Any
|
|
220
|
+
> = Kind extends "isNull"
|
|
221
|
+
? [ColumnKeyOfExpression<Inner>] extends [never]
|
|
222
|
+
? UnknownTag<"isNull:unsupported">
|
|
223
|
+
: AtomOf<NullAtom<ColumnKeyOfExpression<Inner>>>
|
|
224
|
+
: Kind extends "isNotNull"
|
|
111
225
|
? [ColumnKeyOfExpression<Inner>] extends [never]
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
? [LeftLiteral] extends [never]
|
|
154
|
-
? [RightLiteral] extends [never]
|
|
155
|
-
? UnknownTag<"isNotDistinctFrom:unsupported">
|
|
156
|
-
: RightLiteral extends null
|
|
157
|
-
? [ColumnKeyOfExpression<Left>] extends [never]
|
|
158
|
-
? UnknownTag<"isNotDistinctFrom:unsupported">
|
|
159
|
-
: AtomOf<NullAtom<ColumnKeyOfExpression<Left>>>
|
|
160
|
-
: UnknownTag<"isNotDistinctFrom:unsupported">
|
|
161
|
-
: LeftLiteral extends null
|
|
162
|
-
? [ColumnKeyOfExpression<Right>] extends [never]
|
|
163
|
-
? UnknownTag<"isNotDistinctFrom:unsupported">
|
|
164
|
-
: AtomOf<NullAtom<ColumnKeyOfExpression<Right>>>
|
|
165
|
-
: RightLiteral extends null
|
|
166
|
-
? [ColumnKeyOfExpression<Left>] extends [never]
|
|
167
|
-
? UnknownTag<"isNotDistinctFrom:unsupported">
|
|
168
|
-
: AtomOf<NullAtom<ColumnKeyOfExpression<Left>>>
|
|
169
|
-
: [ColumnKeyOfExpression<Left>] extends [never]
|
|
170
|
-
? [ColumnKeyOfExpression<Right>] extends [never]
|
|
171
|
-
? CombineFacts<NonNullFactsOfExpression<Left>, NonNullFactsOfExpression<Right>>
|
|
172
|
-
: AtomOf<EqLiteralAtom<ColumnKeyOfExpression<Right>, ValueKey<LeftLiteral>>>
|
|
173
|
-
: AtomOf<EqLiteralAtom<ColumnKeyOfExpression<Left>, ValueKey<RightLiteral>>>
|
|
174
|
-
: UnknownTag<"isNotDistinctFrom:unsupported">
|
|
175
|
-
: UnknownTag<"isNotDistinctFrom:unsupported">
|
|
176
|
-
: UnknownTag<"isNotDistinctFrom:unsupported">
|
|
177
|
-
: UnknownTag<"isNotDistinctFrom:unsupported">
|
|
178
|
-
: Kind extends "isDistinctFrom"
|
|
179
|
-
? UnknownTag<"isDistinctFrom:unsupported">
|
|
180
|
-
: CombineFacts<NonNullFactsOfExpression<Left>, NonNullFactsOfExpression<Right>>
|
|
181
|
-
: Ast extends ExpressionAst.VariadicNode<"and", infer Values extends readonly Expression.Any[]>
|
|
182
|
-
? import("./predicate-formula.js").NormalizeBooleanConstants<import("./predicate-formula.js").AllFormula<{
|
|
183
|
-
readonly [K in keyof Values]: Values[K] extends Expression.Any ? FormulaOfExpression<Values[K]> : never
|
|
184
|
-
} & readonly PredicateFormula[]>>
|
|
185
|
-
: Ast extends ExpressionAst.VariadicNode<"or", infer Values extends readonly Expression.Any[]>
|
|
186
|
-
? import("./predicate-formula.js").NormalizeBooleanConstants<import("./predicate-formula.js").AnyFormula<{
|
|
187
|
-
readonly [K in keyof Values]: Values[K] extends Expression.Any ? FormulaOfExpression<Values[K]> : never
|
|
188
|
-
} & readonly PredicateFormula[]>>
|
|
189
|
-
: Ast extends ExpressionAst.VariadicNode<infer Kind extends "in" | "notIn" | "between", infer Values extends readonly Expression.Any[]>
|
|
190
|
-
? CombineFacts<NonNullFactsOfExpression<Values[number]>, UnknownTag<`variadic:${Kind}`>>
|
|
191
|
-
: Ast extends ExpressionAst.BinaryNode<infer Kind extends ExpressionAst.BinaryKind, infer Left extends Expression.Any, infer Right extends Expression.Any>
|
|
192
|
-
? Kind extends "eq"
|
|
193
|
-
? FormulaOfEq<Left, Right>
|
|
194
|
-
: CombineFacts<NonNullFactsOfExpression<Left>, NonNullFactsOfExpression<Right>>
|
|
195
|
-
: UnknownTag<`expr:${Ast["kind"]}`>
|
|
226
|
+
? UnknownTag<"isNotNull:unsupported">
|
|
227
|
+
: AtomOf<NonNullAtom<ColumnKeyOfExpression<Inner>>>
|
|
228
|
+
: Kind extends "not"
|
|
229
|
+
? import("./predicate-formula.js").Not<FormulaOfExpression<Inner>>
|
|
230
|
+
: UnknownTag<`unary:${Kind}`>
|
|
231
|
+
|
|
232
|
+
type FormulaOfBinary<
|
|
233
|
+
Kind extends ExpressionAst.BinaryKind,
|
|
234
|
+
Left extends Expression.Any,
|
|
235
|
+
Right extends Expression.Any
|
|
236
|
+
> = Kind extends "eq"
|
|
237
|
+
? FormulaOfEq<Left, Right>
|
|
238
|
+
: Kind extends "neq"
|
|
239
|
+
? FormulaOfNeq<Left, Right>
|
|
240
|
+
: Kind extends "lt" | "lte" | "gt" | "gte" | "like" | "ilike" | "contains" | "containedBy" | "overlaps"
|
|
241
|
+
? CombineFacts<NonNullFactsOfExpression<Left>, NonNullFactsOfExpression<Right>>
|
|
242
|
+
: Kind extends "isNotDistinctFrom"
|
|
243
|
+
? FormulaOfIsNotDistinctFrom<Left, Right>
|
|
244
|
+
: Kind extends "isDistinctFrom"
|
|
245
|
+
? import("./predicate-formula.js").Not<FormulaOfIsNotDistinctFrom<Left, Right>>
|
|
246
|
+
: CombineFacts<NonNullFactsOfExpression<Left>, NonNullFactsOfExpression<Right>>
|
|
247
|
+
|
|
248
|
+
type FormulaOfAst<
|
|
249
|
+
Ast extends ExpressionAst.Any
|
|
250
|
+
> = [Ast] extends [ExpressionAst.LiteralNode<infer Literal>]
|
|
251
|
+
? Literal extends true
|
|
252
|
+
? True
|
|
253
|
+
: Literal extends false
|
|
254
|
+
? False
|
|
255
|
+
: UnknownTag<"literal:non-boolean">
|
|
256
|
+
: [Ast] extends [ExpressionAst.UnaryNode<infer Kind extends ExpressionAst.UnaryKind, infer Inner extends Expression.Any>]
|
|
257
|
+
? FormulaOfUnary<Kind, Inner>
|
|
258
|
+
: [Ast] extends [ExpressionAst.VariadicNode<infer Kind extends ExpressionAst.VariadicKind, infer Values extends readonly Expression.Any[]>]
|
|
259
|
+
? FormulaOfVariadic<Kind, Values>
|
|
260
|
+
: [Ast] extends [ExpressionAst.BinaryNode<infer Kind extends ExpressionAst.BinaryKind, infer Left extends Expression.Any, infer Right extends Expression.Any>]
|
|
261
|
+
? FormulaOfBinary<Kind, Left, Right>
|
|
262
|
+
: UnknownTag<`expr:${Ast["kind"]}`>
|
|
263
|
+
|
|
264
|
+
export type FormulaOfExpression<Value extends Expression.Any> =
|
|
265
|
+
[AstOf<Value>] extends [infer Ast extends ExpressionAst.Any]
|
|
266
|
+
? FormulaOfAst<Ast>
|
|
196
267
|
: UnknownTag<"missing-ast">
|
|
197
268
|
|
|
198
269
|
export type FormulaOfPredicate<Value> =
|