@prisma-next/sql-relational-core 0.3.0-dev.12 → 0.3.0-dev.122
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/LICENSE +201 -0
- package/README.md +18 -1
- package/dist/errors-BNiBIGfC.d.mts +2 -0
- package/dist/errors-DXSQwbhk.mjs +3 -0
- package/dist/exports/ast.d.mts +126 -0
- package/dist/exports/ast.d.mts.map +1 -0
- package/dist/exports/ast.mjs +253 -0
- package/dist/exports/ast.mjs.map +1 -0
- package/dist/exports/errors.d.mts +2 -0
- package/dist/exports/errors.mjs +3 -0
- package/dist/exports/guards.d.mts +5 -0
- package/dist/exports/guards.mjs +3 -0
- package/dist/exports/operations-registry.d.mts +5 -0
- package/dist/exports/operations-registry.mjs +3 -0
- package/dist/exports/param.d.mts +5 -0
- package/dist/exports/param.mjs +3 -0
- package/dist/exports/plan.d.mts +2 -0
- package/dist/exports/plan.mjs +17 -0
- package/dist/exports/plan.mjs.map +1 -0
- package/dist/exports/query-lane-context.d.mts +2 -0
- package/dist/exports/query-lane-context.mjs +1 -0
- package/dist/exports/query-operations.d.mts +2 -0
- package/dist/exports/query-operations.mjs +18 -0
- package/dist/exports/query-operations.mjs.map +1 -0
- package/dist/exports/schema.d.mts +5 -0
- package/dist/exports/schema.mjs +4 -0
- package/dist/exports/types.d.mts +4 -0
- package/dist/exports/types.mjs +3 -0
- package/dist/exports/utils/guards.d.mts +5 -0
- package/dist/exports/utils/guards.mjs +3 -0
- package/dist/guards-D1ax7TKN.mjs +57 -0
- package/dist/guards-D1ax7TKN.mjs.map +1 -0
- package/dist/guards-DC2Ll67p.d.mts +31 -0
- package/dist/guards-DC2Ll67p.d.mts.map +1 -0
- package/dist/index.d.mts +12 -0
- package/dist/index.mjs +13 -0
- package/dist/operations-registry-CBmGut8O.d.mts +9 -0
- package/dist/operations-registry-CBmGut8O.d.mts.map +1 -0
- package/dist/operations-registry-D8INFH9J.mjs +145 -0
- package/dist/operations-registry-D8INFH9J.mjs.map +1 -0
- package/dist/param-CFyhvphn.mjs +14 -0
- package/dist/param-CFyhvphn.mjs.map +1 -0
- package/dist/param-Cmdv_exJ.d.mts +8 -0
- package/dist/param-Cmdv_exJ.d.mts.map +1 -0
- package/dist/plan-BrZtMUA9.d.mts +517 -0
- package/dist/plan-BrZtMUA9.d.mts.map +1 -0
- package/dist/query-lane-context-BTtg0xm8.d.mts +278 -0
- package/dist/query-lane-context-BTtg0xm8.d.mts.map +1 -0
- package/dist/query-operation-registry-B6bClJs8.d.mts +27 -0
- package/dist/query-operation-registry-B6bClJs8.d.mts.map +1 -0
- package/dist/schema-XcyJSq4j.mjs +174 -0
- package/dist/schema-XcyJSq4j.mjs.map +1 -0
- package/dist/schema-j3Srik3R.d.mts +88 -0
- package/dist/schema-j3Srik3R.d.mts.map +1 -0
- package/dist/types-BZKzxgOb.mjs +18 -0
- package/dist/types-BZKzxgOb.mjs.map +1 -0
- package/dist/types-CMyotK6U.d.mts +443 -0
- package/dist/types-CMyotK6U.d.mts.map +1 -0
- package/dist/types-I6Hsg-GU.mjs +1102 -0
- package/dist/types-I6Hsg-GU.mjs.map +1 -0
- package/package.json +37 -53
- package/src/ast/codec-types.ts +123 -22
- package/src/ast/driver-types.ts +20 -3
- package/src/ast/join.ts +3 -23
- package/src/ast/sql-codecs.ts +81 -0
- package/src/ast/types.ts +1704 -74
- package/src/exports/ast.ts +1 -7
- package/src/exports/guards.ts +3 -4
- package/src/exports/query-operations.ts +1 -0
- package/src/exports/utils/guards.ts +1 -0
- package/src/operations-registry.ts +115 -89
- package/src/plan.ts +4 -4
- package/src/query-lane-context.ts +79 -1
- package/src/query-operation-registry.ts +35 -0
- package/src/schema.ts +104 -43
- package/src/types.ts +333 -84
- package/src/utils/guards.ts +44 -80
- package/dist/ast/adapter-types.d.ts +0 -28
- package/dist/ast/adapter-types.d.ts.map +0 -1
- package/dist/ast/codec-types.d.ts +0 -141
- package/dist/ast/codec-types.d.ts.map +0 -1
- package/dist/ast/common.d.ts +0 -7
- package/dist/ast/common.d.ts.map +0 -1
- package/dist/ast/delete.d.ts +0 -8
- package/dist/ast/delete.d.ts.map +0 -1
- package/dist/ast/driver-types.d.ts +0 -20
- package/dist/ast/driver-types.d.ts.map +0 -1
- package/dist/ast/insert.d.ts +0 -8
- package/dist/ast/insert.d.ts.map +0 -1
- package/dist/ast/join.d.ts +0 -6
- package/dist/ast/join.d.ts.map +0 -1
- package/dist/ast/order.d.ts +0 -6
- package/dist/ast/order.d.ts.map +0 -1
- package/dist/ast/predicate.d.ts +0 -4
- package/dist/ast/predicate.d.ts.map +0 -1
- package/dist/ast/select.d.ts +0 -18
- package/dist/ast/select.d.ts.map +0 -1
- package/dist/ast/types.d.ts +0 -118
- package/dist/ast/types.d.ts.map +0 -1
- package/dist/ast/update.d.ts +0 -9
- package/dist/ast/update.d.ts.map +0 -1
- package/dist/ast/util.d.ts +0 -2
- package/dist/ast/util.d.ts.map +0 -1
- package/dist/chunk-2F7DSEOU.js +0 -8
- package/dist/chunk-2F7DSEOU.js.map +0 -1
- package/dist/chunk-36WJWNHT.js +0 -1
- package/dist/chunk-36WJWNHT.js.map +0 -1
- package/dist/chunk-5N34PNVZ.js +0 -62
- package/dist/chunk-5N34PNVZ.js.map +0 -1
- package/dist/chunk-7I3EMQID.js +0 -16
- package/dist/chunk-7I3EMQID.js.map +0 -1
- package/dist/chunk-CBTYMOX2.js +0 -152
- package/dist/chunk-CBTYMOX2.js.map +0 -1
- package/dist/chunk-G52ENULI.js +0 -1
- package/dist/chunk-G52ENULI.js.map +0 -1
- package/dist/chunk-KYSP7L5C.js +0 -16
- package/dist/chunk-KYSP7L5C.js.map +0 -1
- package/dist/chunk-M23L3JHG.js +0 -159
- package/dist/chunk-M23L3JHG.js.map +0 -1
- package/dist/chunk-MM74SVJ4.js +0 -13
- package/dist/chunk-MM74SVJ4.js.map +0 -1
- package/dist/chunk-U7AXAUJA.js +0 -1
- package/dist/chunk-U7AXAUJA.js.map +0 -1
- package/dist/chunk-WZBPVEZI.js +0 -320
- package/dist/chunk-WZBPVEZI.js.map +0 -1
- package/dist/errors.d.ts +0 -2
- package/dist/errors.d.ts.map +0 -1
- package/dist/exports/ast.d.ts +0 -14
- package/dist/exports/ast.d.ts.map +0 -1
- package/dist/exports/ast.js +0 -46
- package/dist/exports/ast.js.map +0 -1
- package/dist/exports/errors.d.ts +0 -2
- package/dist/exports/errors.d.ts.map +0 -1
- package/dist/exports/errors.js +0 -9
- package/dist/exports/errors.js.map +0 -1
- package/dist/exports/guards.d.ts +0 -2
- package/dist/exports/guards.d.ts.map +0 -1
- package/dist/exports/guards.js +0 -21
- package/dist/exports/guards.js.map +0 -1
- package/dist/exports/operations-registry.d.ts +0 -2
- package/dist/exports/operations-registry.d.ts.map +0 -1
- package/dist/exports/operations-registry.js +0 -9
- package/dist/exports/operations-registry.js.map +0 -1
- package/dist/exports/param.d.ts +0 -3
- package/dist/exports/param.d.ts.map +0 -1
- package/dist/exports/param.js +0 -7
- package/dist/exports/param.js.map +0 -1
- package/dist/exports/plan.d.ts +0 -2
- package/dist/exports/plan.d.ts.map +0 -1
- package/dist/exports/plan.js +0 -7
- package/dist/exports/plan.js.map +0 -1
- package/dist/exports/query-lane-context.d.ts +0 -2
- package/dist/exports/query-lane-context.d.ts.map +0 -1
- package/dist/exports/query-lane-context.js +0 -2
- package/dist/exports/query-lane-context.js.map +0 -1
- package/dist/exports/schema.d.ts +0 -3
- package/dist/exports/schema.d.ts.map +0 -1
- package/dist/exports/schema.js +0 -14
- package/dist/exports/schema.js.map +0 -1
- package/dist/exports/types.d.ts +0 -2
- package/dist/exports/types.d.ts.map +0 -1
- package/dist/exports/types.js +0 -10
- package/dist/exports/types.js.map +0 -1
- package/dist/index.d.ts +0 -9
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -81
- package/dist/index.js.map +0 -1
- package/dist/operations-registry.d.ts +0 -5
- package/dist/operations-registry.d.ts.map +0 -1
- package/dist/param.d.ts +0 -4
- package/dist/param.d.ts.map +0 -1
- package/dist/plan.d.ts +0 -23
- package/dist/plan.d.ts.map +0 -1
- package/dist/query-lane-context.d.ts +0 -16
- package/dist/query-lane-context.d.ts.map +0 -1
- package/dist/schema.d.ts +0 -63
- package/dist/schema.d.ts.map +0 -1
- package/dist/types.d.ts +0 -332
- package/dist/types.d.ts.map +0 -1
- package/dist/utils/guards.d.ts +0 -55
- package/dist/utils/guards.d.ts.map +0 -1
- package/src/ast/common.ts +0 -36
- package/src/ast/delete.ts +0 -17
- package/src/ast/insert.ts +0 -17
- package/src/ast/order.ts +0 -11
- package/src/ast/predicate.ts +0 -30
- package/src/ast/select.ts +0 -39
- package/src/ast/update.ts +0 -19
package/src/schema.ts
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import type { OperationRegistry } from '@prisma-next/operations';
|
|
2
2
|
import { planInvalid } from '@prisma-next/plan';
|
|
3
3
|
import type {
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
ExtractTypeMapsFromContract,
|
|
5
|
+
ResolveCodecTypes,
|
|
6
|
+
ResolveOperationTypes,
|
|
6
7
|
SqlContract,
|
|
7
8
|
SqlStorage,
|
|
8
9
|
StorageColumn,
|
|
9
10
|
} from '@prisma-next/sql-contract/types';
|
|
10
|
-
import type
|
|
11
|
+
import { type BinaryOp, ColumnRef, type ExpressionSource, type TableRef } from './ast/types';
|
|
11
12
|
import { attachOperationsToColumnBuilder } from './operations-registry';
|
|
12
|
-
import type {
|
|
13
|
+
import type { ExecutionContext } from './query-lane-context';
|
|
13
14
|
import type {
|
|
14
|
-
AnyColumnBuilderBase,
|
|
15
15
|
BinaryBuilder,
|
|
16
16
|
CodecTypes as CodecTypesType,
|
|
17
17
|
ColumnBuilder,
|
|
18
18
|
ComputeColumnJsType,
|
|
19
|
+
NullCheckBuilder,
|
|
19
20
|
OperationTypeSignature,
|
|
20
21
|
OperationTypes,
|
|
21
22
|
OrderBuilder,
|
|
22
23
|
ParamPlaceholder,
|
|
23
24
|
} from './types';
|
|
24
|
-
import { isColumnBuilder } from './types';
|
|
25
25
|
|
|
26
26
|
type TableColumns<Table extends { columns: Record<string, StorageColumn> }> = Table['columns'];
|
|
27
27
|
|
|
@@ -44,7 +44,8 @@ export class ColumnBuilderImpl<
|
|
|
44
44
|
ColumnName extends string,
|
|
45
45
|
ColumnMeta extends StorageColumn,
|
|
46
46
|
JsType = unknown,
|
|
47
|
-
>
|
|
47
|
+
> implements ExpressionSource
|
|
48
|
+
{
|
|
48
49
|
readonly kind = 'column' as const;
|
|
49
50
|
|
|
50
51
|
constructor(
|
|
@@ -62,64 +63,72 @@ export class ColumnBuilderImpl<
|
|
|
62
63
|
return undefined as unknown as JsType;
|
|
63
64
|
}
|
|
64
65
|
|
|
66
|
+
/**
|
|
67
|
+
* Converts this column builder to a ColumnRef expression.
|
|
68
|
+
* This is the canonical way to get an AST node from a builder.
|
|
69
|
+
*/
|
|
70
|
+
toExpr(): ColumnRef {
|
|
71
|
+
return new ColumnRef(this.table, this.column);
|
|
72
|
+
}
|
|
73
|
+
|
|
65
74
|
private createBinaryBuilder(
|
|
66
75
|
op: BinaryOp,
|
|
67
|
-
value: ParamPlaceholder |
|
|
76
|
+
value: ParamPlaceholder | ExpressionSource,
|
|
68
77
|
): BinaryBuilder<ColumnName, ColumnMeta, JsType> {
|
|
69
78
|
if (value == null) {
|
|
70
|
-
throw planInvalid(
|
|
79
|
+
throw planInvalid(
|
|
80
|
+
'Parameter placeholder or expression source required for column comparison',
|
|
81
|
+
);
|
|
71
82
|
}
|
|
72
|
-
|
|
83
|
+
// Check for ExpressionSource first (has toExpr method)
|
|
84
|
+
if ('toExpr' in value && typeof value.toExpr === 'function') {
|
|
73
85
|
return Object.freeze({
|
|
74
86
|
kind: 'binary' as const,
|
|
75
87
|
op,
|
|
76
|
-
left: this
|
|
88
|
+
left: this.toExpr(),
|
|
77
89
|
right: value,
|
|
78
90
|
}) as BinaryBuilder<ColumnName, ColumnMeta, JsType>;
|
|
79
91
|
}
|
|
80
|
-
|
|
92
|
+
// Must be a ParamPlaceholder
|
|
93
|
+
if ('kind' in value && value.kind === 'param-placeholder') {
|
|
94
|
+
return Object.freeze({
|
|
95
|
+
kind: 'binary' as const,
|
|
96
|
+
op,
|
|
97
|
+
left: this.toExpr(),
|
|
98
|
+
right: value,
|
|
99
|
+
}) as BinaryBuilder<ColumnName, ColumnMeta, JsType>;
|
|
100
|
+
}
|
|
101
|
+
throw planInvalid('Parameter placeholder or expression source required for column comparison');
|
|
81
102
|
}
|
|
82
103
|
|
|
83
|
-
eq(
|
|
84
|
-
value: ParamPlaceholder | AnyColumnBuilderBase,
|
|
85
|
-
): BinaryBuilder<ColumnName, ColumnMeta, JsType> {
|
|
104
|
+
eq(value: ParamPlaceholder | ExpressionSource): BinaryBuilder<ColumnName, ColumnMeta, JsType> {
|
|
86
105
|
return this.createBinaryBuilder('eq', value);
|
|
87
106
|
}
|
|
88
107
|
|
|
89
|
-
neq(
|
|
90
|
-
value: ParamPlaceholder | AnyColumnBuilderBase,
|
|
91
|
-
): BinaryBuilder<ColumnName, ColumnMeta, JsType> {
|
|
108
|
+
neq(value: ParamPlaceholder | ExpressionSource): BinaryBuilder<ColumnName, ColumnMeta, JsType> {
|
|
92
109
|
return this.createBinaryBuilder('neq', value);
|
|
93
110
|
}
|
|
94
111
|
|
|
95
|
-
gt(
|
|
96
|
-
value: ParamPlaceholder | AnyColumnBuilderBase,
|
|
97
|
-
): BinaryBuilder<ColumnName, ColumnMeta, JsType> {
|
|
112
|
+
gt(value: ParamPlaceholder | ExpressionSource): BinaryBuilder<ColumnName, ColumnMeta, JsType> {
|
|
98
113
|
return this.createBinaryBuilder('gt', value);
|
|
99
114
|
}
|
|
100
115
|
|
|
101
|
-
lt(
|
|
102
|
-
value: ParamPlaceholder | AnyColumnBuilderBase,
|
|
103
|
-
): BinaryBuilder<ColumnName, ColumnMeta, JsType> {
|
|
116
|
+
lt(value: ParamPlaceholder | ExpressionSource): BinaryBuilder<ColumnName, ColumnMeta, JsType> {
|
|
104
117
|
return this.createBinaryBuilder('lt', value);
|
|
105
118
|
}
|
|
106
119
|
|
|
107
|
-
gte(
|
|
108
|
-
value: ParamPlaceholder | AnyColumnBuilderBase,
|
|
109
|
-
): BinaryBuilder<ColumnName, ColumnMeta, JsType> {
|
|
120
|
+
gte(value: ParamPlaceholder | ExpressionSource): BinaryBuilder<ColumnName, ColumnMeta, JsType> {
|
|
110
121
|
return this.createBinaryBuilder('gte', value);
|
|
111
122
|
}
|
|
112
123
|
|
|
113
|
-
lte(
|
|
114
|
-
value: ParamPlaceholder | AnyColumnBuilderBase,
|
|
115
|
-
): BinaryBuilder<ColumnName, ColumnMeta, JsType> {
|
|
124
|
+
lte(value: ParamPlaceholder | ExpressionSource): BinaryBuilder<ColumnName, ColumnMeta, JsType> {
|
|
116
125
|
return this.createBinaryBuilder('lte', value);
|
|
117
126
|
}
|
|
118
127
|
|
|
119
128
|
asc(): OrderBuilder<ColumnName, ColumnMeta, JsType> {
|
|
120
129
|
return Object.freeze({
|
|
121
130
|
kind: 'order' as const,
|
|
122
|
-
expr: this
|
|
131
|
+
expr: this.toExpr(),
|
|
123
132
|
dir: 'asc' as const,
|
|
124
133
|
}) as OrderBuilder<ColumnName, ColumnMeta, JsType>;
|
|
125
134
|
}
|
|
@@ -127,10 +136,34 @@ export class ColumnBuilderImpl<
|
|
|
127
136
|
desc(): OrderBuilder<ColumnName, ColumnMeta, JsType> {
|
|
128
137
|
return Object.freeze({
|
|
129
138
|
kind: 'order' as const,
|
|
130
|
-
expr: this
|
|
139
|
+
expr: this.toExpr(),
|
|
131
140
|
dir: 'desc' as const,
|
|
132
141
|
}) as OrderBuilder<ColumnName, ColumnMeta, JsType>;
|
|
133
142
|
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Creates an IS NULL check for this column.
|
|
146
|
+
* Available on all columns at runtime, but typed to only be visible on nullable columns.
|
|
147
|
+
*/
|
|
148
|
+
isNull(): NullCheckBuilder<ColumnName, ColumnMeta, JsType> {
|
|
149
|
+
return Object.freeze({
|
|
150
|
+
kind: 'nullCheck' as const,
|
|
151
|
+
expr: this.toExpr(),
|
|
152
|
+
isNull: true,
|
|
153
|
+
}) as NullCheckBuilder<ColumnName, ColumnMeta, JsType>;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Creates an IS NOT NULL check for this column.
|
|
158
|
+
* Available on all columns at runtime, but typed to only be visible on nullable columns.
|
|
159
|
+
*/
|
|
160
|
+
isNotNull(): NullCheckBuilder<ColumnName, ColumnMeta, JsType> {
|
|
161
|
+
return Object.freeze({
|
|
162
|
+
kind: 'nullCheck' as const,
|
|
163
|
+
expr: this.toExpr(),
|
|
164
|
+
isNull: false,
|
|
165
|
+
}) as NullCheckBuilder<ColumnName, ColumnMeta, JsType>;
|
|
166
|
+
}
|
|
134
167
|
}
|
|
135
168
|
|
|
136
169
|
export class TableBuilderImpl<
|
|
@@ -290,18 +323,39 @@ type ExtractSchemaTables<
|
|
|
290
323
|
TableRef;
|
|
291
324
|
};
|
|
292
325
|
|
|
326
|
+
/**
|
|
327
|
+
* Extracts the types registry shape from a contract.
|
|
328
|
+
* Each key is a type name from storage.types, and the value preserves the
|
|
329
|
+
* literal type from the contract (including codecId, nativeType, and typeParams).
|
|
330
|
+
* Returns an empty object type {} when storage.types is undefined.
|
|
331
|
+
*/
|
|
332
|
+
type ExtractSchemaTypes<Contract extends SqlContract<SqlStorage>> =
|
|
333
|
+
Contract['storage']['types'] extends infer Types
|
|
334
|
+
? Types extends Record<string, unknown>
|
|
335
|
+
? { readonly [TypeName in keyof Types]: Types[TypeName] }
|
|
336
|
+
: Record<string, never>
|
|
337
|
+
: Record<string, never>;
|
|
338
|
+
|
|
293
339
|
export type SchemaHandle<
|
|
294
340
|
Contract extends SqlContract<SqlStorage> = SqlContract<SqlStorage>,
|
|
295
341
|
CodecTypes extends CodecTypesType = CodecTypesType,
|
|
296
342
|
Operations extends OperationTypes = Record<string, never>,
|
|
297
343
|
> = {
|
|
298
344
|
readonly tables: ExtractSchemaTables<Contract, CodecTypes, Operations>;
|
|
345
|
+
/**
|
|
346
|
+
* Initialized type helpers from storage.types.
|
|
347
|
+
* Each entry corresponds to a named type instance in the contract's storage.types.
|
|
348
|
+
*/
|
|
349
|
+
readonly types: ExtractSchemaTypes<Contract>;
|
|
299
350
|
};
|
|
300
351
|
|
|
301
|
-
type SchemaReturnType<
|
|
352
|
+
type SchemaReturnType<
|
|
353
|
+
Contract extends SqlContract<SqlStorage>,
|
|
354
|
+
TTypeMaps = ExtractTypeMapsFromContract<Contract>,
|
|
355
|
+
> = SchemaHandle<
|
|
302
356
|
Contract,
|
|
303
|
-
|
|
304
|
-
ToOperationTypes<
|
|
357
|
+
ResolveCodecTypes<Contract, TTypeMaps>,
|
|
358
|
+
ToOperationTypes<ResolveOperationTypes<Contract, TTypeMaps>>
|
|
305
359
|
>;
|
|
306
360
|
|
|
307
361
|
type NormalizeOperationTypes<T> = {
|
|
@@ -318,21 +372,25 @@ type ToOperationTypes<T> = T extends OperationTypes ? T : NormalizeOperationType
|
|
|
318
372
|
* Creates a schema handle for building SQL queries.
|
|
319
373
|
*
|
|
320
374
|
* @param context - Query lane context containing contract, codec and operation registries
|
|
321
|
-
* @returns A schema handle with typed table builders
|
|
375
|
+
* @returns A schema handle with typed table builders and type helpers
|
|
322
376
|
*
|
|
323
377
|
* @example
|
|
324
378
|
* ```typescript
|
|
379
|
+
* // No-emit: infers TypeMaps from ContractWithTypeMaps
|
|
325
380
|
* const schemaHandle = schema<Contract>(context);
|
|
326
|
-
*
|
|
381
|
+
*
|
|
382
|
+
* // Emitted: pass TypeMaps explicitly
|
|
383
|
+
* const schemaHandle = schema<Contract, TypeMaps>(context);
|
|
327
384
|
* ```
|
|
328
385
|
*/
|
|
329
|
-
export function schema<
|
|
330
|
-
|
|
331
|
-
|
|
386
|
+
export function schema<
|
|
387
|
+
Contract extends SqlContract<SqlStorage>,
|
|
388
|
+
TTypeMaps = ExtractTypeMapsFromContract<Contract>,
|
|
389
|
+
>(context: ExecutionContext<Contract>): SchemaReturnType<Contract, TTypeMaps> {
|
|
332
390
|
const contract = context.contract;
|
|
333
391
|
const storage = contract.storage;
|
|
334
|
-
type CodecTypes =
|
|
335
|
-
type Operations = ToOperationTypes<
|
|
392
|
+
type CodecTypes = ResolveCodecTypes<Contract, TTypeMaps>;
|
|
393
|
+
type Operations = ToOperationTypes<ResolveOperationTypes<Contract, TTypeMaps>>;
|
|
336
394
|
const tables = {} as ExtractSchemaTables<Contract, CodecTypes, Operations>;
|
|
337
395
|
const contractCapabilities = contract.capabilities;
|
|
338
396
|
|
|
@@ -367,7 +425,10 @@ export function schema<Contract extends SqlContract<SqlStorage>>(
|
|
|
367
425
|
) as ExtractSchemaTables<Contract, CodecTypes, Operations>[typeof tableName];
|
|
368
426
|
}
|
|
369
427
|
|
|
370
|
-
|
|
428
|
+
// Get type helpers from context (populated by runtime context creation)
|
|
429
|
+
const types = context.types as ExtractSchemaTypes<Contract>;
|
|
430
|
+
|
|
431
|
+
return Object.freeze({ tables, types }) as SchemaReturnType<Contract, TTypeMaps>;
|
|
371
432
|
}
|
|
372
433
|
|
|
373
434
|
export type { ColumnBuilderImpl as Column, TableBuilderImpl as Table };
|