effect-qb 0.17.0 → 0.20.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 +11 -1
- package/dist/index.js +9376 -0
- package/dist/mysql.js +4092 -2671
- package/dist/postgres/metadata.js +2589 -1402
- package/dist/postgres.js +3953 -3583
- package/dist/sqlite.js +5527 -4088
- package/dist/standard.js +9330 -0
- package/package.json +9 -4
- package/src/casing.ts +71 -0
- package/src/index.ts +2 -0
- package/src/internal/casing.ts +89 -0
- package/src/internal/coercion/rules.ts +13 -1
- package/src/internal/column-state.d.ts +3 -3
- package/src/internal/column-state.ts +24 -18
- package/src/internal/column.ts +52 -15
- package/src/internal/datatypes/define.ts +7 -1
- package/src/internal/datatypes/enrich.ts +23 -0
- package/src/internal/datatypes/lookup.ts +81 -25
- package/src/internal/datatypes/matrix.ts +903 -0
- package/src/internal/datatypes/shape.ts +2 -0
- package/src/internal/derived-table.ts +4 -36
- package/src/{mysql/internal/sql-expression-renderer.ts → internal/dialect-renderers/mysql.ts} +552 -361
- package/src/{postgres/internal/sql-expression-renderer.ts → internal/dialect-renderers/postgres.ts} +657 -400
- package/src/{sqlite/internal/sql-expression-renderer.ts → internal/dialect-renderers/sqlite.ts} +505 -347
- package/src/internal/dialect.ts +36 -1
- package/src/internal/dsl-mutation-runtime.ts +12 -162
- package/src/internal/dsl-plan-runtime.ts +10 -138
- package/src/internal/dsl-query-runtime.ts +5 -79
- package/src/internal/dsl-transaction-ddl-runtime.ts +41 -65
- package/src/internal/executor.ts +66 -49
- package/src/internal/grouping-key.ts +87 -20
- package/src/internal/implication-runtime.ts +1 -1
- package/src/internal/json/path-access.ts +351 -0
- package/src/internal/predicate/runtime.ts +3 -0
- package/src/internal/query.d.ts +39 -12
- package/src/internal/query.ts +65 -26
- package/src/internal/renderer.ts +26 -14
- package/src/internal/runtime/driver-value-mapping.ts +3 -3
- package/src/internal/runtime/normalize.ts +12 -5
- package/src/internal/runtime/schema.ts +28 -38
- package/src/internal/runtime/value.ts +20 -23
- package/src/internal/scalar.d.ts +1 -1
- package/src/internal/scalar.ts +8 -2
- package/src/internal/schema-derivation.d.ts +12 -61
- package/src/internal/schema-derivation.ts +95 -43
- package/src/internal/schema-expression.ts +2 -2
- package/src/internal/sql-expression-renderer.ts +19 -0
- package/src/internal/standard-dsl.ts +6978 -0
- package/src/internal/table-options.ts +126 -66
- package/src/internal/table.ts +819 -237
- package/src/mysql/column-extension.ts +3 -0
- package/src/mysql/column.ts +14 -15
- package/src/mysql/datatypes/index.ts +4 -2
- package/src/mysql/datatypes/spec.ts +6 -176
- package/src/mysql/errors/normalize.ts +0 -1
- package/src/mysql/executor.ts +11 -11
- package/src/mysql/function/temporal.ts +1 -1
- package/src/mysql/internal/dialect.ts +9 -4
- package/src/mysql/internal/dsl.ts +334 -170
- package/src/mysql/internal/renderer.ts +6 -2
- package/src/mysql/json.ts +7 -2
- package/src/mysql/query-extension.ts +16 -0
- package/src/mysql/renderer.ts +37 -3
- package/src/mysql/type.ts +60 -0
- package/src/mysql.ts +7 -13
- package/src/postgres/check.ts +1 -0
- package/src/postgres/column-extension.ts +28 -0
- package/src/postgres/column.ts +13 -19
- package/src/postgres/datatypes/index.d.ts +2 -1
- package/src/postgres/datatypes/index.ts +4 -2
- package/src/postgres/datatypes/spec.ts +6 -260
- package/src/postgres/errors/normalize.ts +0 -1
- package/src/postgres/executor.ts +11 -11
- package/src/postgres/foreign-key.ts +24 -0
- package/src/postgres/function/core.ts +1 -3
- package/src/postgres/function/index.ts +1 -17
- package/src/postgres/function/temporal.ts +1 -1
- package/src/postgres/index.ts +1 -0
- package/src/postgres/internal/dialect.ts +9 -4
- package/src/postgres/internal/dsl.ts +328 -179
- package/src/postgres/internal/renderer.ts +6 -2
- package/src/postgres/internal/schema-ddl.ts +22 -10
- package/src/postgres/internal/schema-model.ts +238 -7
- package/src/postgres/json-extension.ts +7 -0
- package/src/postgres/json.ts +762 -173
- package/src/postgres/jsonb.ts +37 -0
- package/src/postgres/primary-key.ts +24 -0
- package/src/postgres/query-extension.ts +2 -0
- package/src/postgres/renderer.ts +37 -3
- package/src/postgres/schema-management.ts +13 -13
- package/src/postgres/schema.ts +106 -15
- package/src/postgres/table.ts +205 -538
- package/src/postgres/type.ts +93 -10
- package/src/postgres/unique.ts +32 -0
- package/src/postgres.ts +20 -16
- package/src/sqlite/column-extension.ts +3 -0
- package/src/sqlite/column.ts +14 -15
- package/src/sqlite/datatypes/index.ts +4 -2
- package/src/sqlite/datatypes/spec.ts +6 -94
- package/src/sqlite/errors/normalize.ts +0 -1
- package/src/sqlite/executor.ts +11 -11
- package/src/sqlite/function/temporal.ts +1 -1
- package/src/sqlite/internal/dialect.ts +9 -4
- package/src/sqlite/internal/dsl.ts +307 -159
- package/src/sqlite/internal/renderer.ts +6 -2
- package/src/sqlite/json.ts +8 -2
- package/src/sqlite/query-extension.ts +2 -0
- package/src/sqlite/renderer.ts +37 -3
- package/src/sqlite/type.ts +40 -0
- package/src/sqlite.ts +7 -13
- package/src/standard/cast.ts +113 -0
- package/src/standard/check.ts +17 -0
- package/src/standard/column.ts +163 -0
- package/src/standard/datatypes/index.ts +83 -0
- package/src/standard/datatypes/spec.ts +12 -0
- package/src/standard/dialect.ts +40 -0
- package/src/standard/foreign-key.ts +37 -0
- package/src/standard/function/aggregate.ts +2 -0
- package/src/standard/function/core.ts +2 -0
- package/src/standard/function/index.ts +18 -0
- package/src/standard/function/string.ts +2 -0
- package/src/standard/function/temporal.ts +78 -0
- package/src/standard/function/window.ts +2 -0
- package/src/standard/index.ts +17 -0
- package/src/standard/internal/renderer.ts +45 -0
- package/src/standard/json.ts +883 -0
- package/src/standard/primary-key.ts +17 -0
- package/src/standard/query.ts +152 -0
- package/src/standard/renderer.ts +49 -0
- package/src/standard/table.ts +151 -0
- package/src/standard/unique.ts +17 -0
- package/src/standard.ts +32 -0
- package/src/internal/aggregation-validation.ts +0 -57
- package/src/internal/table.d.ts +0 -173
- package/src/mysql/table.ts +0 -183
- package/src/postgres/cast.ts +0 -45
- package/src/sqlite/table.ts +0 -183
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export * as core from "./core.js"
|
|
2
|
+
export * as string from "./string.js"
|
|
3
|
+
export * as aggregate from "./aggregate.js"
|
|
4
|
+
export * as window from "./window.js"
|
|
5
|
+
export * as temporal from "./temporal.js"
|
|
6
|
+
|
|
7
|
+
export { coalesce, call } from "./core.js"
|
|
8
|
+
export { lower, upper, concat } from "./string.js"
|
|
9
|
+
export { count, max, min } from "./aggregate.js"
|
|
10
|
+
export { over, rowNumber, rank, denseRank } from "./window.js"
|
|
11
|
+
export {
|
|
12
|
+
currentDate,
|
|
13
|
+
currentTime,
|
|
14
|
+
currentTimestamp,
|
|
15
|
+
localTime,
|
|
16
|
+
localTimestamp,
|
|
17
|
+
now
|
|
18
|
+
} from "./temporal.js"
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type * as Schema from "effect/Schema"
|
|
2
|
+
|
|
3
|
+
import type * as Expression from "../../internal/scalar.js"
|
|
4
|
+
import type * as ExpressionAst from "../../internal/expression-ast.js"
|
|
5
|
+
import { makeExpression } from "../../internal/query.js"
|
|
6
|
+
import {
|
|
7
|
+
InstantStringSchema,
|
|
8
|
+
LocalDateStringSchema,
|
|
9
|
+
LocalDateTimeStringSchema,
|
|
10
|
+
LocalTimeStringSchema,
|
|
11
|
+
type InstantString,
|
|
12
|
+
type LocalDateString,
|
|
13
|
+
type LocalDateTimeString,
|
|
14
|
+
type LocalTimeString
|
|
15
|
+
} from "../../internal/runtime/value.js"
|
|
16
|
+
import { standardDatatypes } from "../datatypes/index.js"
|
|
17
|
+
|
|
18
|
+
type TemporalExpression<
|
|
19
|
+
Runtime,
|
|
20
|
+
Db extends Expression.DbType.Any,
|
|
21
|
+
Name extends string
|
|
22
|
+
> = Expression.Scalar<
|
|
23
|
+
Runtime,
|
|
24
|
+
Db,
|
|
25
|
+
"never",
|
|
26
|
+
"standard",
|
|
27
|
+
"scalar",
|
|
28
|
+
never
|
|
29
|
+
> & {
|
|
30
|
+
readonly [ExpressionAst.TypeId]: ExpressionAst.FunctionCallNode<Name, readonly []>
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const makeTemporal = <
|
|
34
|
+
Runtime,
|
|
35
|
+
Db extends Expression.DbType.Any,
|
|
36
|
+
Name extends string
|
|
37
|
+
>(
|
|
38
|
+
name: Name,
|
|
39
|
+
dbType: Db,
|
|
40
|
+
runtimeSchema: Schema.Schema<Runtime>
|
|
41
|
+
): TemporalExpression<Runtime, Db, Name> =>
|
|
42
|
+
makeExpression({
|
|
43
|
+
runtime: undefined as unknown as Runtime,
|
|
44
|
+
dbType,
|
|
45
|
+
runtimeSchema,
|
|
46
|
+
nullability: "never",
|
|
47
|
+
dialect: "standard",
|
|
48
|
+
kind: "scalar",
|
|
49
|
+
dependencies: {}
|
|
50
|
+
}, {
|
|
51
|
+
kind: "function",
|
|
52
|
+
name,
|
|
53
|
+
args: []
|
|
54
|
+
}) as TemporalExpression<Runtime, Db, Name>
|
|
55
|
+
|
|
56
|
+
/** Standard current instant. */
|
|
57
|
+
export const now = (): TemporalExpression<InstantString, ReturnType<typeof standardDatatypes.timestamp>, "now"> =>
|
|
58
|
+
makeTemporal("now", standardDatatypes.timestamp(), InstantStringSchema)
|
|
59
|
+
|
|
60
|
+
/** Standard current date. */
|
|
61
|
+
export const currentDate = (): TemporalExpression<LocalDateString, ReturnType<typeof standardDatatypes.date>, "current_date"> =>
|
|
62
|
+
makeTemporal("current_date", standardDatatypes.date(), LocalDateStringSchema)
|
|
63
|
+
|
|
64
|
+
/** Standard current time. */
|
|
65
|
+
export const currentTime = (): TemporalExpression<LocalTimeString, ReturnType<typeof standardDatatypes.time>, "current_time"> =>
|
|
66
|
+
makeTemporal("current_time", standardDatatypes.time(), LocalTimeStringSchema)
|
|
67
|
+
|
|
68
|
+
/** Standard current timestamp. */
|
|
69
|
+
export const currentTimestamp = (): TemporalExpression<LocalDateTimeString, ReturnType<typeof standardDatatypes.timestamp>, "current_timestamp"> =>
|
|
70
|
+
makeTemporal("current_timestamp", standardDatatypes.timestamp(), LocalDateTimeStringSchema)
|
|
71
|
+
|
|
72
|
+
/** Standard local time. */
|
|
73
|
+
export const localTime = (): TemporalExpression<LocalTimeString, ReturnType<typeof standardDatatypes.time>, "localtime"> =>
|
|
74
|
+
makeTemporal("localtime", standardDatatypes.time(), LocalTimeStringSchema)
|
|
75
|
+
|
|
76
|
+
/** Standard local timestamp. */
|
|
77
|
+
export const localTimestamp = (): TemporalExpression<LocalDateTimeString, ReturnType<typeof standardDatatypes.timestamp>, "localtimestamp"> =>
|
|
78
|
+
makeTemporal("localtimestamp", standardDatatypes.timestamp(), LocalDateTimeStringSchema)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as BaseTable from "../internal/table.js"
|
|
2
|
+
import type { TableOptionSpec } from "../internal/table-options.js"
|
|
3
|
+
|
|
4
|
+
type IndexSpec = Extract<TableOptionSpec, { readonly kind: "index" }>
|
|
5
|
+
|
|
6
|
+
export const make = BaseTable.index
|
|
7
|
+
|
|
8
|
+
export const named = <const Name extends string>(
|
|
9
|
+
name: BaseTable.NonEmptyStringInput<Name>
|
|
10
|
+
) =>
|
|
11
|
+
<Spec extends IndexSpec, TableContext extends BaseTable.TableDefinition<any, any, any, "schema", any>>(
|
|
12
|
+
option: BaseTable.TableOption<Spec, TableContext>
|
|
13
|
+
): BaseTable.TableOption<Spec & { readonly name: Name }, TableContext> =>
|
|
14
|
+
BaseTable.mapOption(option, (spec) => ({
|
|
15
|
+
...spec,
|
|
16
|
+
name
|
|
17
|
+
} as Spec & { readonly name: Name }))
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import * as Query from "../../internal/query.js"
|
|
2
|
+
import type * as Expression from "../../internal/scalar.js"
|
|
3
|
+
import type * as Casing from "../../internal/casing.js"
|
|
4
|
+
import { type RenderState } from "../../internal/dialect.js"
|
|
5
|
+
import { type Projection } from "../../internal/projections.js"
|
|
6
|
+
import { renderQueryAst } from "../../internal/sql-expression-renderer.js"
|
|
7
|
+
import { standardDialect } from "../dialect.js"
|
|
8
|
+
|
|
9
|
+
export interface StandardRenderResult {
|
|
10
|
+
readonly sql: string
|
|
11
|
+
readonly params: readonly unknown[]
|
|
12
|
+
readonly projections: readonly Projection[]
|
|
13
|
+
readonly valueMappings?: Expression.DriverValueMappings
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface StandardRenderOptions {
|
|
17
|
+
readonly valueMappings?: Expression.DriverValueMappings
|
|
18
|
+
readonly casing?: Casing.Options
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const renderStandardPlan = <PlanValue extends Query.Plan.Any>(
|
|
22
|
+
plan: Query.DialectCompatiblePlan<PlanValue, "standard">,
|
|
23
|
+
options: StandardRenderOptions = {}
|
|
24
|
+
): StandardRenderResult => {
|
|
25
|
+
const state: RenderState = {
|
|
26
|
+
params: [],
|
|
27
|
+
valueMappings: options.valueMappings,
|
|
28
|
+
casing: options.casing,
|
|
29
|
+
ctes: [],
|
|
30
|
+
cteNames: new Set<string>(),
|
|
31
|
+
cteSources: new Map<string, unknown>(),
|
|
32
|
+
sourceNames: new Map()
|
|
33
|
+
}
|
|
34
|
+
const rendered = renderQueryAst(
|
|
35
|
+
Query.getAst(plan as Query.Plan.Any) as any,
|
|
36
|
+
state,
|
|
37
|
+
standardDialect
|
|
38
|
+
)
|
|
39
|
+
return {
|
|
40
|
+
sql: rendered.sql,
|
|
41
|
+
params: state.params,
|
|
42
|
+
projections: rendered.projections,
|
|
43
|
+
valueMappings: state.valueMappings
|
|
44
|
+
}
|
|
45
|
+
}
|