effect-qb 4.0.0-beta.66 → 4.0.0-beta.92

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 (126) hide show
  1. package/README.md +5 -2
  2. package/dist/index.js +9373 -0
  3. package/dist/mysql.js +3917 -2572
  4. package/dist/postgres/metadata.js +2491 -1373
  5. package/dist/postgres.js +5450 -5155
  6. package/dist/sqlite.js +6891 -5528
  7. package/dist/standard.js +9327 -0
  8. package/package.json +9 -2
  9. package/src/casing.ts +71 -0
  10. package/src/index.ts +2 -0
  11. package/src/internal/casing.ts +89 -0
  12. package/src/internal/coercion/rules.ts +13 -1
  13. package/src/internal/column-state.ts +21 -15
  14. package/src/internal/column.ts +44 -7
  15. package/src/internal/datatypes/define.ts +7 -1
  16. package/src/internal/datatypes/enrich.ts +23 -0
  17. package/src/internal/datatypes/lookup.ts +81 -25
  18. package/src/internal/datatypes/matrix.ts +903 -0
  19. package/src/internal/datatypes/shape.ts +2 -0
  20. package/src/internal/derived-table.ts +4 -36
  21. package/src/{mysql/internal/sql-expression-renderer.ts → internal/dialect-renderers/mysql.ts} +552 -361
  22. package/src/{postgres/internal/sql-expression-renderer.ts → internal/dialect-renderers/postgres.ts} +657 -400
  23. package/src/{sqlite/internal/sql-expression-renderer.ts → internal/dialect-renderers/sqlite.ts} +505 -347
  24. package/src/internal/dialect.ts +35 -0
  25. package/src/internal/dsl-mutation-runtime.ts +12 -162
  26. package/src/internal/dsl-plan-runtime.ts +10 -138
  27. package/src/internal/dsl-query-runtime.ts +5 -79
  28. package/src/internal/dsl-transaction-ddl-runtime.ts +41 -65
  29. package/src/internal/executor.ts +14 -16
  30. package/src/internal/grouping-key.ts +87 -20
  31. package/src/internal/implication-runtime.ts +1 -1
  32. package/src/internal/json/path-access.ts +351 -0
  33. package/src/internal/predicate/runtime.ts +3 -0
  34. package/src/internal/query.d.ts +38 -11
  35. package/src/internal/query.ts +64 -25
  36. package/src/internal/renderer.ts +26 -14
  37. package/src/internal/runtime/normalize.ts +12 -5
  38. package/src/internal/scalar.ts +7 -1
  39. package/src/internal/schema-derivation.d.ts +7 -7
  40. package/src/internal/schema-derivation.ts +9 -9
  41. package/src/internal/schema-expression.ts +2 -2
  42. package/src/internal/sql-expression-renderer.ts +19 -0
  43. package/src/internal/standard-dsl.ts +6975 -0
  44. package/src/internal/table-options.ts +126 -66
  45. package/src/internal/table.ts +652 -219
  46. package/src/mysql/column-extension.ts +3 -0
  47. package/src/mysql/column.ts +8 -9
  48. package/src/mysql/datatypes/index.ts +4 -2
  49. package/src/mysql/datatypes/spec.ts +6 -176
  50. package/src/mysql/executor.ts +7 -7
  51. package/src/mysql/internal/dialect.ts +9 -4
  52. package/src/mysql/internal/dsl.ts +309 -154
  53. package/src/mysql/internal/renderer.ts +6 -2
  54. package/src/mysql/json.ts +7 -2
  55. package/src/mysql/query-extension.ts +16 -0
  56. package/src/mysql/renderer.ts +37 -3
  57. package/src/mysql/type.ts +60 -0
  58. package/src/mysql.ts +7 -13
  59. package/src/postgres/check.ts +1 -0
  60. package/src/postgres/column-extension.ts +28 -0
  61. package/src/postgres/column.ts +2 -8
  62. package/src/postgres/datatypes/index.d.ts +2 -1
  63. package/src/postgres/datatypes/index.ts +4 -2
  64. package/src/postgres/datatypes/spec.ts +6 -260
  65. package/src/postgres/executor.ts +7 -7
  66. package/src/postgres/foreign-key.ts +24 -0
  67. package/src/postgres/function/core.ts +1 -3
  68. package/src/postgres/function/index.ts +1 -17
  69. package/src/postgres/index.ts +1 -0
  70. package/src/postgres/internal/dialect.ts +9 -4
  71. package/src/postgres/internal/dsl.ts +303 -163
  72. package/src/postgres/internal/renderer.ts +6 -2
  73. package/src/postgres/internal/schema-ddl.ts +22 -10
  74. package/src/postgres/internal/schema-model.ts +238 -7
  75. package/src/postgres/json-extension.ts +7 -0
  76. package/src/postgres/json.ts +762 -173
  77. package/src/postgres/jsonb.ts +37 -0
  78. package/src/postgres/primary-key.ts +24 -0
  79. package/src/postgres/query-extension.ts +2 -0
  80. package/src/postgres/renderer.ts +37 -3
  81. package/src/postgres/schema-management.ts +12 -11
  82. package/src/postgres/schema.ts +106 -15
  83. package/src/postgres/table.ts +205 -530
  84. package/src/postgres/type.ts +93 -10
  85. package/src/postgres/unique.ts +32 -0
  86. package/src/postgres.ts +20 -16
  87. package/src/sqlite/column-extension.ts +3 -0
  88. package/src/sqlite/column.ts +8 -9
  89. package/src/sqlite/datatypes/index.ts +4 -2
  90. package/src/sqlite/datatypes/spec.ts +6 -94
  91. package/src/sqlite/executor.ts +7 -7
  92. package/src/sqlite/internal/dialect.ts +9 -4
  93. package/src/sqlite/internal/dsl.ts +298 -154
  94. package/src/sqlite/internal/renderer.ts +6 -2
  95. package/src/sqlite/json.ts +8 -2
  96. package/src/sqlite/query-extension.ts +2 -0
  97. package/src/sqlite/renderer.ts +37 -3
  98. package/src/sqlite/type.ts +40 -0
  99. package/src/sqlite.ts +7 -13
  100. package/src/standard/cast.ts +113 -0
  101. package/src/standard/check.ts +17 -0
  102. package/src/standard/column.ts +163 -0
  103. package/src/standard/datatypes/index.ts +83 -0
  104. package/src/standard/datatypes/spec.ts +12 -0
  105. package/src/standard/dialect.ts +40 -0
  106. package/src/standard/foreign-key.ts +37 -0
  107. package/src/standard/function/aggregate.ts +2 -0
  108. package/src/standard/function/core.ts +2 -0
  109. package/src/standard/function/index.ts +18 -0
  110. package/src/standard/function/string.ts +2 -0
  111. package/src/standard/function/temporal.ts +78 -0
  112. package/src/standard/function/window.ts +2 -0
  113. package/src/standard/index.ts +17 -0
  114. package/src/standard/internal/renderer.ts +45 -0
  115. package/src/standard/json.ts +883 -0
  116. package/src/standard/primary-key.ts +17 -0
  117. package/src/standard/query.ts +152 -0
  118. package/src/standard/renderer.ts +49 -0
  119. package/src/standard/table.ts +151 -0
  120. package/src/standard/unique.ts +17 -0
  121. package/src/standard.ts +32 -0
  122. package/src/internal/aggregation-validation.ts +0 -57
  123. package/src/internal/table.d.ts +0 -180
  124. package/src/mysql/table.ts +0 -186
  125. package/src/postgres/cast.ts +0 -45
  126. package/src/sqlite/table.ts +0 -175
@@ -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,2 @@
1
+ /** Standard string functions. */
2
+ export { lower, upper, concat } from "../query.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,2 @@
1
+ /** Standard window functions. */
2
+ export { over, rowNumber, rank, denseRank } from "../query.js"
@@ -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
+ }