effect-qb 0.15.0 → 0.17.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.
Files changed (88) hide show
  1. package/dist/mysql.js +1957 -595
  2. package/dist/postgres/metadata.js +2507 -182
  3. package/dist/postgres.js +9587 -8201
  4. package/dist/sqlite.js +8360 -0
  5. package/package.json +7 -2
  6. package/src/internal/column-state.ts +7 -0
  7. package/src/internal/column.ts +22 -0
  8. package/src/internal/derived-table.ts +29 -3
  9. package/src/internal/dialect.ts +14 -1
  10. package/src/internal/dsl-mutation-runtime.ts +173 -4
  11. package/src/internal/dsl-plan-runtime.ts +165 -20
  12. package/src/internal/dsl-query-runtime.ts +60 -6
  13. package/src/internal/dsl-transaction-ddl-runtime.ts +72 -2
  14. package/src/internal/executor.ts +62 -13
  15. package/src/internal/expression-ast.ts +3 -2
  16. package/src/internal/grouping-key.ts +141 -1
  17. package/src/internal/implication-runtime.ts +2 -1
  18. package/src/internal/json/types.ts +155 -40
  19. package/src/internal/predicate/analysis.ts +103 -1
  20. package/src/internal/predicate/atom.ts +7 -0
  21. package/src/internal/predicate/context.ts +170 -17
  22. package/src/internal/predicate/key.ts +64 -2
  23. package/src/internal/predicate/normalize.ts +115 -34
  24. package/src/internal/predicate/runtime.ts +144 -13
  25. package/src/internal/query.ts +563 -103
  26. package/src/internal/renderer.ts +39 -2
  27. package/src/internal/runtime/driver-value-mapping.ts +244 -0
  28. package/src/internal/runtime/normalize.ts +62 -38
  29. package/src/internal/runtime/schema.ts +5 -3
  30. package/src/internal/runtime/value.ts +153 -30
  31. package/src/internal/scalar.ts +11 -0
  32. package/src/internal/table-options.ts +108 -1
  33. package/src/internal/table.ts +87 -29
  34. package/src/mysql/column.ts +19 -2
  35. package/src/mysql/datatypes/index.ts +21 -0
  36. package/src/mysql/errors/catalog.ts +5 -5
  37. package/src/mysql/errors/normalize.ts +2 -2
  38. package/src/mysql/executor.ts +20 -5
  39. package/src/mysql/internal/dialect.ts +12 -6
  40. package/src/mysql/internal/dsl.ts +995 -263
  41. package/src/mysql/internal/renderer.ts +13 -3
  42. package/src/mysql/internal/sql-expression-renderer.ts +530 -128
  43. package/src/mysql/query.ts +9 -2
  44. package/src/mysql/renderer.ts +7 -2
  45. package/src/mysql/table.ts +38 -12
  46. package/src/postgres/cast.ts +22 -7
  47. package/src/postgres/column.ts +5 -2
  48. package/src/postgres/errors/normalize.ts +2 -2
  49. package/src/postgres/executor.ts +68 -10
  50. package/src/postgres/function/core.ts +19 -1
  51. package/src/postgres/internal/dialect.ts +12 -6
  52. package/src/postgres/internal/dsl.ts +958 -288
  53. package/src/postgres/internal/renderer.ts +13 -3
  54. package/src/postgres/internal/schema-ddl.ts +2 -1
  55. package/src/postgres/internal/schema-model.ts +6 -3
  56. package/src/postgres/internal/sql-expression-renderer.ts +477 -96
  57. package/src/postgres/json.ts +57 -17
  58. package/src/postgres/query.ts +9 -2
  59. package/src/postgres/renderer.ts +7 -2
  60. package/src/postgres/schema-management.ts +91 -4
  61. package/src/postgres/schema.ts +1 -1
  62. package/src/postgres/table.ts +189 -53
  63. package/src/postgres/type.ts +4 -0
  64. package/src/sqlite/column.ts +128 -0
  65. package/src/sqlite/datatypes/index.ts +79 -0
  66. package/src/sqlite/datatypes/spec.ts +98 -0
  67. package/src/sqlite/errors/catalog.ts +103 -0
  68. package/src/sqlite/errors/fields.ts +19 -0
  69. package/src/sqlite/errors/index.ts +19 -0
  70. package/src/sqlite/errors/normalize.ts +229 -0
  71. package/src/sqlite/errors/requirements.ts +71 -0
  72. package/src/sqlite/errors/types.ts +29 -0
  73. package/src/sqlite/executor.ts +227 -0
  74. package/src/sqlite/function/aggregate.ts +2 -0
  75. package/src/sqlite/function/core.ts +2 -0
  76. package/src/sqlite/function/index.ts +19 -0
  77. package/src/sqlite/function/string.ts +2 -0
  78. package/src/sqlite/function/temporal.ts +100 -0
  79. package/src/sqlite/function/window.ts +2 -0
  80. package/src/sqlite/internal/dialect.ts +37 -0
  81. package/src/sqlite/internal/dsl.ts +6926 -0
  82. package/src/sqlite/internal/renderer.ts +47 -0
  83. package/src/sqlite/internal/sql-expression-renderer.ts +1821 -0
  84. package/src/sqlite/json.ts +2 -0
  85. package/src/sqlite/query.ts +196 -0
  86. package/src/sqlite/renderer.ts +24 -0
  87. package/src/sqlite/table.ts +183 -0
  88. package/src/sqlite.ts +22 -0
@@ -1,4 +1,5 @@
1
1
  import * as Query from "../../internal/query.js"
2
+ import type * as Expression from "../../internal/scalar.js"
2
3
  import { type RenderState } from "../../internal/dialect.js"
3
4
  import { postgresDialect } from "./dialect.js"
4
5
  import { type Projection } from "../../internal/projections.js"
@@ -14,18 +15,26 @@ export interface PostgresRenderResult {
14
15
  readonly sql: string
15
16
  readonly params: readonly unknown[]
16
17
  readonly projections: readonly Projection[]
18
+ readonly valueMappings?: Expression.DriverValueMappings
19
+ }
20
+
21
+ export interface PostgresRenderOptions {
22
+ readonly valueMappings?: Expression.DriverValueMappings
17
23
  }
18
24
 
19
25
  /**
20
26
  * Renders the current query AST into Postgres SQL plus bind parameters.
21
27
  */
22
28
  export const renderPostgresPlan = <PlanValue extends Query.Plan.Any>(
23
- plan: Query.DialectCompatiblePlan<PlanValue, "postgres">
29
+ plan: Query.DialectCompatiblePlan<PlanValue, "postgres">,
30
+ options: PostgresRenderOptions = {}
24
31
  ): PostgresRenderResult => {
25
32
  const state: RenderState = {
26
33
  params: [],
34
+ valueMappings: options.valueMappings,
27
35
  ctes: [],
28
- cteNames: new Set<string>()
36
+ cteNames: new Set<string>(),
37
+ cteSources: new Map<string, unknown>()
29
38
  }
30
39
  const rendered = renderQueryAst(
31
40
  Query.getAst(plan as Query.Plan.Any) as any,
@@ -35,6 +44,7 @@ export const renderPostgresPlan = <PlanValue extends Query.Plan.Any>(
35
44
  return {
36
45
  sql: rendered.sql,
37
46
  params: state.params,
38
- projections: rendered.projections
47
+ projections: rendered.projections,
48
+ valueMappings: state.valueMappings
39
49
  }
40
50
  }
@@ -42,7 +42,8 @@ export const renderDdlExpressionSql = (expression: DdlExpressionLike): string =>
42
42
  : renderExpression(expression as Expression.Any, {
43
43
  params: [],
44
44
  ctes: [],
45
- cteNames: new Set()
45
+ cteNames: new Set(),
46
+ cteSources: new Map()
46
47
  }, inlineLiteralDialect)
47
48
 
48
49
  const stripRedundantOuterParens = (value: string): string => {
@@ -121,17 +121,17 @@ export const fromDiscoveredValues = (values: ReadonlyArray<unknown>): SchemaMode
121
121
  const enums = new Map<string, EnumModel>()
122
122
  for (const value of values) {
123
123
  if (isEnumDefinition(value)) {
124
- enums.set(enumKey(value.schemaName, value.name), toEnumModel(value))
124
+ enums.set(modelIdentityKey(value.schemaName, value.name), toEnumModel(value))
125
125
  } else if (isTableDefinition(value)) {
126
126
  for (const enumModel of enumModelsOfTable(value)) {
127
- const key = enumKey(enumModel.schemaName, enumModel.name)
127
+ const key = modelIdentityKey(enumModel.schemaName, enumModel.name)
128
128
  const existing = enums.get(key)
129
129
  if (existing === undefined) {
130
130
  enums.set(key, enumModel)
131
131
  continue
132
132
  }
133
133
  if (JSON.stringify(existing.values) !== JSON.stringify(enumModel.values)) {
134
- throw new Error(`Conflicting enum definitions discovered for '${key}'`)
134
+ throw new Error(`Conflicting enum definitions discovered for '${enumKey(enumModel.schemaName, enumModel.name)}'`)
135
135
  }
136
136
  }
137
137
  }
@@ -148,3 +148,6 @@ export const tableKey = (schemaName: string | undefined, name: string): string =
148
148
 
149
149
  export const enumKey = (schemaName: string | undefined, name: string): string =>
150
150
  `${schemaName ?? "public"}.${name}`
151
+
152
+ const modelIdentityKey = (schemaName: string | undefined, name: string): string =>
153
+ JSON.stringify([schemaName ?? "public", name])