@prisma-next/sql-builder 0.13.0-dev.9 → 0.14.0-dev.1
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/dist/{db-BdrQgIiw.d.mts → db-BS_UG1Si.d.mts} +39 -26
- package/dist/{db-BdrQgIiw.d.mts.map → db-BS_UG1Si.d.mts.map} +1 -1
- package/dist/exports/types.d.mts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/runtime/index.d.mts +2 -2
- package/dist/runtime/index.mjs +48 -4
- package/dist/runtime/index.mjs.map +1 -1
- package/package.json +14 -14
- package/src/runtime/mutation-impl.ts +12 -2
- package/src/runtime/resolve-table.ts +4 -4
- package/src/runtime/sql.ts +3 -0
- package/src/runtime/table-proxy-impl.ts +16 -8
- package/src/types/db.ts +50 -14
- package/src/types/table-proxy.ts +93 -74
|
@@ -25,7 +25,7 @@ import type {
|
|
|
25
25
|
StorageTableToScopeTable,
|
|
26
26
|
Subquery,
|
|
27
27
|
} from '../scope';
|
|
28
|
-
import type {
|
|
28
|
+
import type { NamespaceTable, TableProxyContract } from '../types/db';
|
|
29
29
|
import type { JoinedTables } from '../types/joined-tables';
|
|
30
30
|
import type { DeleteQuery, InsertQuery, UpdateQuery } from '../types/mutation-query';
|
|
31
31
|
import type { SelectQuery } from '../types/select-query';
|
|
@@ -47,16 +47,17 @@ import { tableSourceForProxy } from './table-source-for-proxy';
|
|
|
47
47
|
|
|
48
48
|
export class TableProxyImpl<
|
|
49
49
|
C extends TableProxyContract,
|
|
50
|
-
Name extends string
|
|
50
|
+
Name extends string,
|
|
51
51
|
Alias extends string,
|
|
52
52
|
AvailableScope extends Scope,
|
|
53
53
|
QC extends QueryContext,
|
|
54
|
+
NsId extends string = string,
|
|
54
55
|
>
|
|
55
56
|
extends BuilderBase<C['capabilities']>
|
|
56
|
-
implements TableProxy<C, Name, Alias, AvailableScope, QC>
|
|
57
|
+
implements TableProxy<C, NsId, Name, Alias, AvailableScope, QC>
|
|
57
58
|
{
|
|
58
59
|
declare readonly [JoinOuterScope]: JoinSource<
|
|
59
|
-
StorageTableToScopeTable<
|
|
60
|
+
StorageTableToScopeTable<NamespaceTable<C, NsId, Name>>,
|
|
60
61
|
Alias
|
|
61
62
|
>[typeof JoinOuterScope];
|
|
62
63
|
|
|
@@ -97,7 +98,7 @@ export class TableProxyImpl<
|
|
|
97
98
|
> => {
|
|
98
99
|
return this.#toJoined().lateralJoin(alias, builder);
|
|
99
100
|
},
|
|
100
|
-
) as TableProxy<C, Name, Alias, AvailableScope, QC>['lateralJoin'];
|
|
101
|
+
) as TableProxy<C, NsId, Name, Alias, AvailableScope, QC>['lateralJoin'];
|
|
101
102
|
|
|
102
103
|
outerLateralJoin = this._gate(
|
|
103
104
|
{ sql: { lateral: true } },
|
|
@@ -114,7 +115,7 @@ export class TableProxyImpl<
|
|
|
114
115
|
> => {
|
|
115
116
|
return this.#toJoined().outerLateralJoin(alias, builder);
|
|
116
117
|
},
|
|
117
|
-
) as TableProxy<C, Name, Alias, AvailableScope, QC>['outerLateralJoin'];
|
|
118
|
+
) as TableProxy<C, NsId, Name, Alias, AvailableScope, QC>['outerLateralJoin'];
|
|
118
119
|
|
|
119
120
|
getJoinOuterScope(): Scope {
|
|
120
121
|
return this.#scope;
|
|
@@ -126,8 +127,15 @@ export class TableProxyImpl<
|
|
|
126
127
|
|
|
127
128
|
as<NewAlias extends string>(
|
|
128
129
|
newAlias: NewAlias,
|
|
129
|
-
): TableProxy<C, Name, NewAlias, RebindScope<AvailableScope, Alias, NewAlias>, QC> {
|
|
130
|
-
return new TableProxyImpl
|
|
130
|
+
): TableProxy<C, NsId, Name, NewAlias, RebindScope<AvailableScope, Alias, NewAlias>, QC> {
|
|
131
|
+
return new TableProxyImpl<
|
|
132
|
+
C,
|
|
133
|
+
Name,
|
|
134
|
+
NewAlias,
|
|
135
|
+
RebindScope<AvailableScope, Alias, NewAlias>,
|
|
136
|
+
QC,
|
|
137
|
+
NsId
|
|
138
|
+
>(this.#tableName, this.#table, newAlias, this.ctx, this.#namespaceId);
|
|
131
139
|
}
|
|
132
140
|
|
|
133
141
|
select<Columns extends (keyof AvailableScope['topLevel'] & string)[]>(
|
package/src/types/db.ts
CHANGED
|
@@ -3,18 +3,33 @@ import type { TableProxy } from './table-proxy';
|
|
|
3
3
|
|
|
4
4
|
export type CapabilitiesBase = Record<string, Record<string, boolean>>;
|
|
5
5
|
|
|
6
|
+
type NamespaceEntries = Readonly<Record<string, Readonly<Record<string, unknown>>>>;
|
|
7
|
+
|
|
8
|
+
// The application-domain models the table-proxy helpers read to map a storage
|
|
9
|
+
// table -> model and column -> field within a namespace coordinate. The index
|
|
10
|
+
// signature lets the helpers index `C['domain']['namespaces'][NsId]` by a
|
|
11
|
+
// generic `NsId` directly, so `FindModelForTable` / `FindFieldForColumn` no
|
|
12
|
+
// longer need a `C extends Contract<SqlStorage>` guard to reach the per-namespace
|
|
13
|
+
// models; concrete emitted contracts (whose models are richer) satisfy it.
|
|
14
|
+
type NamespaceDomain = Readonly<
|
|
15
|
+
Record<string, { readonly models: Readonly<Record<string, unknown>> }>
|
|
16
|
+
>;
|
|
17
|
+
|
|
6
18
|
export type TableProxyContract = {
|
|
19
|
+
readonly domain: {
|
|
20
|
+
readonly namespaces: NamespaceDomain;
|
|
21
|
+
};
|
|
7
22
|
readonly storage: {
|
|
8
|
-
readonly namespaces: Readonly<
|
|
9
|
-
Record<
|
|
10
|
-
string,
|
|
11
|
-
{ readonly entries: { readonly table: Readonly<Record<string, StorageTable>> } }
|
|
12
|
-
>
|
|
13
|
-
>;
|
|
23
|
+
readonly namespaces: Readonly<Record<string, { readonly entries: NamespaceEntries }>>;
|
|
14
24
|
};
|
|
15
25
|
readonly capabilities: CapabilitiesBase;
|
|
16
26
|
};
|
|
17
27
|
|
|
28
|
+
type TablesInNamespace<NS extends { readonly entries: NamespaceEntries }> =
|
|
29
|
+
NS['entries']['table'] extends Readonly<Record<string, StorageTable>>
|
|
30
|
+
? NS['entries']['table']
|
|
31
|
+
: Readonly<Record<string, StorageTable>>;
|
|
32
|
+
|
|
18
33
|
// Union of every table name declared in any namespace of `C`. Replaces
|
|
19
34
|
// the prior `UnboundTables<C>` indexing (which only saw `__unbound__`).
|
|
20
35
|
export type UnboundTables<C extends TableProxyContract> = {
|
|
@@ -22,27 +37,48 @@ export type UnboundTables<C extends TableProxyContract> = {
|
|
|
22
37
|
};
|
|
23
38
|
|
|
24
39
|
export type TableNamesAcrossNamespaces<C extends TableProxyContract> = {
|
|
25
|
-
[NSId in keyof C['storage']['namespaces']]: keyof
|
|
40
|
+
[NSId in keyof C['storage']['namespaces']]: keyof TablesInNamespace<
|
|
41
|
+
C['storage']['namespaces'][NSId]
|
|
42
|
+
> &
|
|
26
43
|
string;
|
|
27
44
|
}[keyof C['storage']['namespaces']];
|
|
28
45
|
|
|
29
46
|
export type TableInAnyNamespace<C extends TableProxyContract, Name extends string> = {
|
|
30
|
-
[NSId in keyof C['storage']['namespaces']]: Name extends keyof
|
|
31
|
-
|
|
47
|
+
[NSId in keyof C['storage']['namespaces']]: Name extends keyof TablesInNamespace<
|
|
48
|
+
C['storage']['namespaces'][NSId]
|
|
49
|
+
>
|
|
50
|
+
? TablesInNamespace<C['storage']['namespaces'][NSId]>[Name]
|
|
32
51
|
: never;
|
|
33
52
|
}[keyof C['storage']['namespaces']];
|
|
34
53
|
|
|
54
|
+
// The exact storage table at a single namespace coordinate. Resolving through
|
|
55
|
+
// the coordinate (rather than the cross-namespace `UnboundTables` union) keeps
|
|
56
|
+
// a bare table name shared across namespaces resolving to each namespace's own
|
|
57
|
+
// table — no per-namespace column intersection. `TablesInNamespace` narrows the
|
|
58
|
+
// open-dict `entries['table']` (`Record<string, unknown>`) back to the typed
|
|
59
|
+
// `StorageTable` map before indexing by the bare name.
|
|
60
|
+
export type NamespaceTable<
|
|
61
|
+
C extends TableProxyContract,
|
|
62
|
+
NsId extends string,
|
|
63
|
+
Name extends string,
|
|
64
|
+
> = TablesInNamespace<C['storage']['namespaces'][NsId]>[Name];
|
|
65
|
+
|
|
35
66
|
// The tables of a single storage namespace, keyed by bare table name. Lets
|
|
36
67
|
// callers reach a table by its namespace coordinate (`db.<ns>.<table>`) when
|
|
37
|
-
// the same bare name is declared in more than one namespace.
|
|
68
|
+
// the same bare name is declared in more than one namespace. The `NsId`
|
|
69
|
+
// coordinate is threaded into each `TableProxy` so its column/field resolution
|
|
70
|
+
// is a function of `(NsId, Name)`, not `Name` alone.
|
|
38
71
|
export type Namespace<
|
|
39
72
|
C extends TableProxyContract,
|
|
40
|
-
NsId extends keyof C['storage']['namespaces'],
|
|
73
|
+
NsId extends string & keyof C['storage']['namespaces'],
|
|
41
74
|
> = {
|
|
42
|
-
readonly [Name in keyof C['storage']['namespaces'][NsId]
|
|
43
|
-
|
|
75
|
+
readonly [Name in keyof TablesInNamespace<C['storage']['namespaces'][NsId]> & string]: TableProxy<
|
|
76
|
+
C,
|
|
77
|
+
NsId,
|
|
78
|
+
Name
|
|
79
|
+
>;
|
|
44
80
|
};
|
|
45
81
|
|
|
46
82
|
export type Db<C extends TableProxyContract> = {
|
|
47
|
-
readonly [Ns in keyof C['storage']['namespaces']]: Namespace<C, Ns>;
|
|
83
|
+
readonly [Ns in keyof C['storage']['namespaces'] & string]: Namespace<C, Ns>;
|
|
48
84
|
};
|
package/src/types/table-proxy.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import type { Contract, ContractModelDefinitions } from '@prisma-next/contract/types';
|
|
2
1
|
import type {
|
|
3
2
|
ExtractCodecTypes,
|
|
4
3
|
ExtractFieldInputTypes,
|
|
5
|
-
ExtractFieldOutputTypes,
|
|
6
4
|
ExtractQueryOperationTypes,
|
|
7
5
|
StorageTable,
|
|
8
6
|
} from '@prisma-next/sql-contract/types';
|
|
7
|
+
import type { ComputeColumnJsType } from '@prisma-next/sql-relational-core/types';
|
|
9
8
|
import type { Expression, FieldProxy, Functions } from '../expression';
|
|
10
9
|
import type {
|
|
11
10
|
DefaultScope,
|
|
@@ -16,98 +15,111 @@ import type {
|
|
|
16
15
|
Scope,
|
|
17
16
|
StorageTableToScopeTable,
|
|
18
17
|
} from '../scope';
|
|
19
|
-
import type {
|
|
18
|
+
import type { NamespaceTable, TableProxyContract } from './db';
|
|
20
19
|
import type { DeleteQuery, InsertQuery, InsertValues, UpdateQuery } from './mutation-query';
|
|
21
20
|
import type { WithJoin, WithSelect } from './shared';
|
|
22
21
|
|
|
23
|
-
type FindModelForTable<
|
|
22
|
+
type FindModelForTable<
|
|
23
|
+
C extends TableProxyContract,
|
|
24
|
+
NsId extends string,
|
|
25
|
+
TableName extends string,
|
|
26
|
+
> = C['domain']['namespaces'][NsId]['models'] extends infer Models extends Record<string, unknown>
|
|
24
27
|
? {
|
|
25
|
-
[M in keyof
|
|
28
|
+
[M in keyof Models & string]: Models[M] extends {
|
|
26
29
|
readonly storage: { readonly table: TableName };
|
|
27
30
|
}
|
|
28
31
|
? M
|
|
29
32
|
: never;
|
|
30
|
-
}[keyof
|
|
33
|
+
}[keyof Models & string]
|
|
31
34
|
: never;
|
|
32
35
|
|
|
33
|
-
type FindFieldForColumn<
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
36
|
+
type FindFieldForColumn<
|
|
37
|
+
C extends TableProxyContract,
|
|
38
|
+
NsId extends string,
|
|
39
|
+
ModelName extends string,
|
|
40
|
+
ColumnName extends string,
|
|
41
|
+
> = C['domain']['namespaces'][NsId]['models'] extends infer Models extends Record<string, unknown>
|
|
42
|
+
? ModelName extends keyof Models
|
|
43
|
+
? Models[ModelName] extends {
|
|
44
|
+
readonly storage: { readonly fields: infer Fields extends Record<string, unknown> };
|
|
45
|
+
}
|
|
46
|
+
? {
|
|
47
|
+
[F in keyof Fields & string]: Fields[F] extends { readonly column: ColumnName }
|
|
48
|
+
? F
|
|
49
|
+
: never;
|
|
50
|
+
}[keyof Fields & string]
|
|
51
|
+
: never
|
|
43
52
|
: never
|
|
44
53
|
: never;
|
|
45
54
|
|
|
55
|
+
// The select-result row's column types for a table at a namespace coordinate.
|
|
56
|
+
// Each column resolves through `ComputeColumnJsType` with the coordinate, so
|
|
57
|
+
// refined per-namespace output types (e.g. `Vector<N>`) are preserved and
|
|
58
|
+
// same-named tables across namespaces resolve to each namespace's own columns.
|
|
59
|
+
// `ComputeColumnJsType`'s constraint is the minimal `ColumnResolutionContract`,
|
|
60
|
+
// which `TableProxyContract` satisfies, so `C` is indexed directly — no
|
|
61
|
+
// `C extends Contract<SqlStorage>` guard.
|
|
46
62
|
type ResolvedColumnTypes<
|
|
47
|
-
C,
|
|
63
|
+
C extends TableProxyContract,
|
|
64
|
+
NsId extends string,
|
|
48
65
|
TableName extends string,
|
|
49
|
-
|
|
50
|
-
>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
ModelName,
|
|
61
|
-
ColName
|
|
62
|
-
> extends infer FieldName extends string
|
|
63
|
-
? FieldName extends keyof FieldTypes[ModelName]
|
|
64
|
-
? FieldTypes[ModelName][FieldName]
|
|
65
|
-
: unknown
|
|
66
|
-
: unknown;
|
|
67
|
-
}
|
|
68
|
-
: Record<string, never>
|
|
69
|
-
: Record<string, never>
|
|
70
|
-
: Record<string, never>
|
|
71
|
-
: Record<string, never>
|
|
66
|
+
> =
|
|
67
|
+
NamespaceTable<C, NsId, TableName> extends infer Table extends StorageTable
|
|
68
|
+
? {
|
|
69
|
+
[ColName in keyof Table['columns'] & string]: ComputeColumnJsType<
|
|
70
|
+
C,
|
|
71
|
+
NsId,
|
|
72
|
+
TableName,
|
|
73
|
+
ColName,
|
|
74
|
+
ExtractCodecTypes<C>
|
|
75
|
+
>;
|
|
76
|
+
}
|
|
72
77
|
: Record<string, never>;
|
|
73
78
|
|
|
74
79
|
type ResolvedInsertValues<
|
|
75
|
-
C,
|
|
80
|
+
C extends TableProxyContract,
|
|
81
|
+
NsId extends string,
|
|
76
82
|
Table extends StorageTable,
|
|
77
83
|
TableName extends string,
|
|
78
84
|
CT extends Record<string, { readonly input: unknown }>,
|
|
79
|
-
FieldInputs extends Record<string, Record<string, unknown
|
|
85
|
+
FieldInputs extends Record<string, Record<string, Record<string, unknown>>>,
|
|
80
86
|
> = string extends keyof FieldInputs
|
|
81
87
|
? InsertValues<Table, CT>
|
|
82
|
-
:
|
|
83
|
-
?
|
|
84
|
-
?
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
88
|
+
: NsId extends keyof FieldInputs
|
|
89
|
+
? FieldInputs[NsId] extends infer NsInputs extends Record<string, Record<string, unknown>>
|
|
90
|
+
? FindModelForTable<C, NsId, TableName> extends infer ModelName extends string
|
|
91
|
+
? ModelName extends keyof NsInputs
|
|
92
|
+
? {
|
|
93
|
+
[K in keyof Table['columns']]?: FindFieldForColumn<
|
|
94
|
+
C,
|
|
95
|
+
NsId,
|
|
96
|
+
ModelName,
|
|
97
|
+
K & string
|
|
98
|
+
> extends infer FieldName extends string
|
|
99
|
+
? FieldName extends keyof NsInputs[ModelName]
|
|
100
|
+
? Table['columns'][K]['nullable'] extends true
|
|
101
|
+
? NonNullable<NsInputs[ModelName][FieldName]> | null
|
|
102
|
+
: NonNullable<NsInputs[ModelName][FieldName]>
|
|
103
|
+
: Table['columns'][K]['codecId'] extends keyof CT
|
|
104
|
+
? CT[Table['columns'][K]['codecId']]['input']
|
|
105
|
+
: unknown
|
|
106
|
+
: Table['columns'][K]['codecId'] extends keyof CT
|
|
107
|
+
? CT[Table['columns'][K]['codecId']]['input']
|
|
108
|
+
: unknown;
|
|
109
|
+
}
|
|
110
|
+
: InsertValues<Table, CT>
|
|
111
|
+
: InsertValues<Table, CT>
|
|
101
112
|
: InsertValues<Table, CT>
|
|
102
113
|
: InsertValues<Table, CT>;
|
|
103
114
|
|
|
104
115
|
type ResolvedUpdateValues<
|
|
105
|
-
C,
|
|
116
|
+
C extends TableProxyContract,
|
|
117
|
+
NsId extends string,
|
|
106
118
|
Table extends StorageTable,
|
|
107
119
|
TableName extends string,
|
|
108
120
|
CT extends Record<string, { readonly input: unknown }>,
|
|
109
|
-
FieldInputs extends Record<string, Record<string, unknown
|
|
110
|
-
> = ResolvedInsertValues<C, Table, TableName, CT, FieldInputs>;
|
|
121
|
+
FieldInputs extends Record<string, Record<string, Record<string, unknown>>>,
|
|
122
|
+
> = ResolvedInsertValues<C, NsId, Table, TableName, CT, FieldInputs>;
|
|
111
123
|
|
|
112
124
|
type ResolvedUpdateExpressions<Table extends StorageTable> = {
|
|
113
125
|
[K in keyof Table['columns']]?: Expression<{
|
|
@@ -116,31 +128,37 @@ type ResolvedUpdateExpressions<Table extends StorageTable> = {
|
|
|
116
128
|
}>;
|
|
117
129
|
};
|
|
118
130
|
|
|
119
|
-
export type ContractToQC<
|
|
131
|
+
export type ContractToQC<
|
|
132
|
+
C extends TableProxyContract,
|
|
133
|
+
NsId extends string = string,
|
|
134
|
+
Name extends string = string,
|
|
135
|
+
> = {
|
|
120
136
|
readonly codecTypes: ExtractCodecTypes<C>;
|
|
121
137
|
readonly capabilities: C['capabilities'];
|
|
122
138
|
readonly queryOperationTypes: ExtractQueryOperationTypes<C>;
|
|
123
|
-
readonly resolvedColumnOutputTypes: ResolvedColumnTypes<C,
|
|
139
|
+
readonly resolvedColumnOutputTypes: ResolvedColumnTypes<C, NsId, Name>;
|
|
124
140
|
};
|
|
125
141
|
|
|
126
142
|
export interface TableProxy<
|
|
127
143
|
C extends TableProxyContract,
|
|
128
|
-
|
|
144
|
+
NsId extends string,
|
|
145
|
+
Name extends string,
|
|
129
146
|
Alias extends string = Name,
|
|
130
|
-
AvailableScope extends Scope = DefaultScope<Name,
|
|
131
|
-
QC extends QueryContext = ContractToQC<C, Name>,
|
|
132
|
-
> extends JoinSource<StorageTableToScopeTable<
|
|
147
|
+
AvailableScope extends Scope = DefaultScope<Name, NamespaceTable<C, NsId, Name>>,
|
|
148
|
+
QC extends QueryContext = ContractToQC<C, NsId, Name>,
|
|
149
|
+
> extends JoinSource<StorageTableToScopeTable<NamespaceTable<C, NsId, Name>>, Alias>,
|
|
133
150
|
WithSelect<QC, AvailableScope, EmptyRow>,
|
|
134
151
|
WithJoin<QC, AvailableScope, C['capabilities']> {
|
|
135
152
|
as<NewAlias extends string>(
|
|
136
153
|
newAlias: NewAlias,
|
|
137
|
-
): TableProxy<C, Name, NewAlias, RebindScope<AvailableScope, Alias, NewAlias>, QC>;
|
|
154
|
+
): TableProxy<C, NsId, Name, NewAlias, RebindScope<AvailableScope, Alias, NewAlias>, QC>;
|
|
138
155
|
|
|
139
156
|
insert(
|
|
140
157
|
rows: ReadonlyArray<
|
|
141
158
|
ResolvedInsertValues<
|
|
142
159
|
C,
|
|
143
|
-
|
|
160
|
+
NsId,
|
|
161
|
+
NamespaceTable<C, NsId, Name>,
|
|
144
162
|
Name,
|
|
145
163
|
QC['codecTypes'],
|
|
146
164
|
ExtractFieldInputTypes<C>
|
|
@@ -151,7 +169,8 @@ export interface TableProxy<
|
|
|
151
169
|
update(
|
|
152
170
|
set: ResolvedUpdateValues<
|
|
153
171
|
C,
|
|
154
|
-
|
|
172
|
+
NsId,
|
|
173
|
+
NamespaceTable<C, NsId, Name>,
|
|
155
174
|
Name,
|
|
156
175
|
QC['codecTypes'],
|
|
157
176
|
ExtractFieldInputTypes<C>
|
|
@@ -162,7 +181,7 @@ export interface TableProxy<
|
|
|
162
181
|
callback: (
|
|
163
182
|
fields: FieldProxy<AvailableScope>,
|
|
164
183
|
fns: Functions<QC>,
|
|
165
|
-
) => ResolvedUpdateExpressions<
|
|
184
|
+
) => ResolvedUpdateExpressions<NamespaceTable<C, NsId, Name>>,
|
|
166
185
|
): UpdateQuery<QC, AvailableScope, EmptyRow>;
|
|
167
186
|
|
|
168
187
|
delete(): DeleteQuery<QC, AvailableScope, EmptyRow>;
|