@query-graph/core 1.1.5 → 1.1.7

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.
@@ -12,35 +12,17 @@ import type {
12
12
  DefinitionParameter,
13
13
  DefinitionProjectionField,
14
14
  DefinitionProjectionPath,
15
- OperationParameters,
15
+ OperationParameterInput,
16
+ OptionalParameter,
16
17
  OracleCompileOptions,
17
18
  ParameterValue,
18
19
  QueryOperationBase,
19
20
  RelationalQueryGraph,
21
+ RequiredParameter,
20
22
  SqlServerCompileOptions,
21
23
  } from './runtime.js'
22
24
  import type { ListParameterRef } from './authoring.js'
23
25
 
24
- type RequiredParameter<Parameter extends ParameterDefinition> = Parameter extends unknown
25
- ? Parameter extends { required?: true }
26
- ? Parameter
27
- : never
28
- : never
29
-
30
- type OptionalParameter<Parameter extends ParameterDefinition> = Parameter extends unknown
31
- ? Parameter extends { required?: true }
32
- ? never
33
- : Parameter
34
- : never
35
-
36
- type OperationParameterInput<Definition extends GraphDefinitionInput> = [DefinitionParameter<Definition>] extends [
37
- never,
38
- ]
39
- ? { parameters?: never }
40
- : [RequiredParameter<DefinitionParameter<Definition>>] extends [never]
41
- ? { parameters?: OperationParameters<Definition> }
42
- : { parameters: OperationParameters<Definition> }
43
-
44
26
  type ProjectionFieldPath<Field> =
45
27
  Field extends ProjectionTypeMetadata<infer Path, infer _Type, infer _Nullability, infer _SelectedByDefault>
46
28
  ? Path
package/types/model.d.ts CHANGED
@@ -24,11 +24,11 @@ export type ScalarParameterValue<Type extends ScalarType> = Type extends 'boolea
24
24
  ? JsonValue
25
25
  : never
26
26
 
27
- export type ParameterShape = 'scalar' | 'list'
27
+ export type ParameterShape = 'scalar' | 'list' | 'groupedList'
28
28
  export type RelationCardinality = 'one' | 'many'
29
29
  export type OrderDirection = 'asc' | 'desc'
30
30
  export type NullsOrder = 'first' | 'last'
31
- export type SemanticFunctionName = 'lower' | 'upper' | 'coalesce' | 'concat'
31
+ export type SemanticFunctionName = 'lower' | 'upper' | 'coalesce' | 'concat' | 'divide' | 'truncate' | 'modulo'
32
32
  export type AggregateFunctionName = 'count' | 'countDistinct' | 'sum' | 'average' | 'minimum' | 'maximum'
33
33
  export type ProjectionFieldRole = 'value' | 'dimension' | 'measure'
34
34
 
@@ -86,6 +86,7 @@ export interface ParameterDefinition {
86
86
  name: string
87
87
  scalarType: ScalarType
88
88
  shape?: ParameterShape
89
+ keyType?: ScalarType
89
90
  required?: boolean
90
91
  }
91
92
 
@@ -144,6 +145,24 @@ export interface InParameterExpression<Name extends string = string> {
144
145
  parameter: Name
145
146
  }
146
147
 
148
+ export interface GroupKeyExpression {
149
+ kind: 'groupKey'
150
+ scope: string
151
+ }
152
+
153
+ export interface InGroupValuesExpression {
154
+ kind: 'inGroupValues'
155
+ expression: Expression
156
+ scope: string
157
+ }
158
+
159
+ export interface AllGroupsExpression<Name extends string = string> {
160
+ kind: 'allGroups'
161
+ parameter: Name
162
+ scope: string
163
+ predicate: Expression
164
+ }
165
+
147
166
  export interface ExpressionGroup {
148
167
  kind: 'and' | 'or'
149
168
  expressions: Expression[]
@@ -181,6 +200,9 @@ export type Expression =
181
200
  | LikeExpression
182
201
  | InExpression
183
202
  | InParameterExpression
203
+ | GroupKeyExpression
204
+ | InGroupValuesExpression
205
+ | AllGroupsExpression
184
206
  | ExpressionGroup
185
207
  | UnaryExpression
186
208
  | ExistsExpression
@@ -376,7 +398,7 @@ export interface FirstBySelection {
376
398
  export type RelationSelection = FirstBySelection
377
399
 
378
400
  export interface GraphDefinitionInput {
379
- schemaVersion: 10
401
+ schemaVersion: 12
380
402
  name: string
381
403
  root: string
382
404
  sources: SourceDefinition[]
@@ -6,6 +6,7 @@ import type {
6
6
  ProjectionDefinitionInput,
7
7
  RelationalMapping,
8
8
  ScalarParameterValue,
9
+ ScalarType,
9
10
  } from './model.js'
10
11
 
11
12
  export interface QueryOperationBase<SelectPath extends string = string, OrderingName extends string = string> {
@@ -66,17 +67,22 @@ export type DefinitionRelation<Definition extends GraphDefinitionInput> = NonNul
66
67
 
67
68
  export type DefinitionRoot<Definition extends GraphDefinitionInput> = Definition['root']
68
69
 
69
- export type ParameterValue<Parameter extends ParameterDefinition> = Parameter extends { shape: 'list' }
70
- ? readonly ScalarParameterValue<Parameter['scalarType']>[]
71
- : ScalarParameterValue<Parameter['scalarType']>
70
+ export type ParameterValue<Parameter extends ParameterDefinition> = Parameter extends {
71
+ shape: 'groupedList'
72
+ keyType: infer Key extends ScalarType
73
+ }
74
+ ? readonly { key: ScalarParameterValue<Key>; values: readonly ScalarParameterValue<Parameter['scalarType']>[] }[]
75
+ : Parameter extends { shape: 'list' }
76
+ ? readonly ScalarParameterValue<Parameter['scalarType']>[]
77
+ : ScalarParameterValue<Parameter['scalarType']>
72
78
 
73
- type RequiredParameter<Parameter extends ParameterDefinition> = Parameter extends unknown
79
+ export type RequiredParameter<Parameter extends ParameterDefinition> = Parameter extends unknown
74
80
  ? Parameter extends { required?: true }
75
81
  ? Parameter
76
82
  : never
77
83
  : never
78
84
 
79
- type OptionalParameter<Parameter extends ParameterDefinition> = Parameter extends unknown
85
+ export type OptionalParameter<Parameter extends ParameterDefinition> = Parameter extends unknown
80
86
  ? Parameter extends { required?: true }
81
87
  ? never
82
88
  : Parameter
@@ -88,9 +94,9 @@ export type OperationParameters<Definition extends GraphDefinitionInput> = {
88
94
  [Parameter in OptionalParameter<DefinitionParameter<Definition>> as Parameter['name']]?: ParameterValue<Parameter>
89
95
  }
90
96
 
91
- type OperationParameterInput<Definition extends GraphDefinitionInput> = [DefinitionParameter<Definition>] extends [
92
- never,
93
- ]
97
+ export type OperationParameterInput<Definition extends GraphDefinitionInput> = [
98
+ DefinitionParameter<Definition>,
99
+ ] extends [never]
94
100
  ? { parameters?: never }
95
101
  : [RequiredParameter<DefinitionParameter<Definition>>] extends [never]
96
102
  ? { parameters?: OperationParameters<Definition> }