@contember/client 1.2.6 → 1.3.0-alpha.3
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/development/content/formatContentApiRelativeUrl.cjs +5 -0
- package/dist/development/content/formatContentApiRelativeUrl.cjs.map +1 -0
- package/dist/development/content/params/whereToFilter.cjs +17 -0
- package/dist/development/content/params/whereToFilter.cjs.map +1 -0
- package/dist/development/content/replaceGraphQlLiteral.cjs +15 -0
- package/dist/development/content/replaceGraphQlLiteral.cjs.map +1 -0
- package/dist/development/content/replaceGraphQlLiteral.js +15 -0
- package/dist/development/content/replaceGraphQlLiteral.js.map +1 -0
- package/dist/development/content/upload/FileUploadError.cjs +10 -0
- package/dist/development/content/upload/FileUploadError.cjs.map +1 -0
- package/dist/development/content/upload/GenerateUploadUrlMutationBuilder.cjs +64 -0
- package/dist/development/content/upload/GenerateUploadUrlMutationBuilder.cjs.map +1 -0
- package/dist/development/content/upload/GenerateUploadUrlMutationBuilder.js +48 -19
- package/dist/development/content/upload/GenerateUploadUrlMutationBuilder.js.map +1 -1
- package/dist/development/content/upload/S3FileUploader.cjs +107 -0
- package/dist/development/content/upload/S3FileUploader.cjs.map +1 -0
- package/dist/development/content/upload/S3FileUploader.js +1 -2
- package/dist/development/content/upload/S3FileUploader.js.map +1 -1
- package/dist/development/graphQlBuilder/GraphQlLiteral.cjs +15 -0
- package/dist/development/graphQlBuilder/GraphQlLiteral.cjs.map +1 -0
- package/dist/development/graphQlBuilder/GraphQlLiteral.js +3 -0
- package/dist/development/graphQlBuilder/GraphQlLiteral.js.map +1 -1
- package/dist/development/graphQlClient/GraphQlClient.cjs +26 -0
- package/dist/development/graphQlClient/GraphQlClient.cjs.map +1 -0
- package/dist/development/graphQlClient/GraphQlClient.js +9 -16
- package/dist/development/graphQlClient/GraphQlClient.js.map +1 -1
- package/dist/development/index.cjs +46 -0
- package/dist/development/index.cjs.map +1 -0
- package/dist/development/index.js +5 -26
- package/dist/development/index.js.map +1 -1
- package/dist/development/system/formatSystemApiRelativeUrl.cjs +5 -0
- package/dist/development/system/formatSystemApiRelativeUrl.cjs.map +1 -0
- package/dist/development/tenant/loginMutation.cjs +34 -0
- package/dist/development/tenant/loginMutation.cjs.map +1 -0
- package/dist/development/tenant/tenantApiRelativeUrl.cjs +5 -0
- package/dist/development/tenant/tenantApiRelativeUrl.cjs.map +1 -0
- package/dist/development/tenant/tenantErrorMessages.cjs +18 -0
- package/dist/development/tenant/tenantErrorMessages.cjs.map +1 -0
- package/dist/development/utils/readFileAsArrayBuffer.cjs +15 -0
- package/dist/development/utils/readFileAsArrayBuffer.cjs.map +1 -0
- package/dist/production/content/formatContentApiRelativeUrl.cjs +5 -0
- package/dist/production/content/formatContentApiRelativeUrl.cjs.map +1 -0
- package/dist/production/content/params/whereToFilter.cjs +17 -0
- package/dist/production/content/params/whereToFilter.cjs.map +1 -0
- package/dist/production/content/replaceGraphQlLiteral.cjs +15 -0
- package/dist/production/content/replaceGraphQlLiteral.cjs.map +1 -0
- package/dist/production/content/replaceGraphQlLiteral.js +15 -0
- package/dist/production/content/replaceGraphQlLiteral.js.map +1 -0
- package/dist/production/content/upload/FileUploadError.cjs +10 -0
- package/dist/production/content/upload/FileUploadError.cjs.map +1 -0
- package/dist/production/content/upload/GenerateUploadUrlMutationBuilder.cjs +64 -0
- package/dist/production/content/upload/GenerateUploadUrlMutationBuilder.cjs.map +1 -0
- package/dist/production/content/upload/GenerateUploadUrlMutationBuilder.js +48 -19
- package/dist/production/content/upload/GenerateUploadUrlMutationBuilder.js.map +1 -1
- package/dist/production/content/upload/S3FileUploader.cjs +107 -0
- package/dist/production/content/upload/S3FileUploader.cjs.map +1 -0
- package/dist/production/content/upload/S3FileUploader.js +1 -2
- package/dist/production/content/upload/S3FileUploader.js.map +1 -1
- package/dist/production/graphQlBuilder/GraphQlLiteral.cjs +12 -0
- package/dist/production/graphQlBuilder/GraphQlLiteral.cjs.map +1 -0
- package/dist/production/graphQlBuilder/GraphQlLiteral.js.map +1 -1
- package/dist/production/graphQlClient/GraphQlClient.cjs +26 -0
- package/dist/production/graphQlClient/GraphQlClient.cjs.map +1 -0
- package/dist/production/graphQlClient/GraphQlClient.js +9 -16
- package/dist/production/graphQlClient/GraphQlClient.js.map +1 -1
- package/dist/production/index.cjs +46 -0
- package/dist/production/index.cjs.map +1 -0
- package/dist/production/index.js +5 -26
- package/dist/production/index.js.map +1 -1
- package/dist/production/system/formatSystemApiRelativeUrl.cjs +5 -0
- package/dist/production/system/formatSystemApiRelativeUrl.cjs.map +1 -0
- package/dist/production/tenant/loginMutation.cjs +34 -0
- package/dist/production/tenant/loginMutation.cjs.map +1 -0
- package/dist/production/tenant/tenantApiRelativeUrl.cjs +5 -0
- package/dist/production/tenant/tenantApiRelativeUrl.cjs.map +1 -0
- package/dist/production/tenant/tenantErrorMessages.cjs +18 -0
- package/dist/production/tenant/tenantErrorMessages.cjs.map +1 -0
- package/dist/production/utils/readFileAsArrayBuffer.cjs +15 -0
- package/dist/production/utils/readFileAsArrayBuffer.cjs.map +1 -0
- package/dist/types/content/index.d.ts +1 -0
- package/dist/types/content/index.d.ts.map +1 -1
- package/dist/types/content/replaceGraphQlLiteral.d.ts +6 -0
- package/dist/types/content/replaceGraphQlLiteral.d.ts.map +1 -0
- package/dist/types/content/upload/GenerateUploadUrlMutationBuilder.d.ts +8 -4
- package/dist/types/content/upload/GenerateUploadUrlMutationBuilder.d.ts.map +1 -1
- package/dist/types/content/upload/S3FileUploader.d.ts.map +1 -1
- package/dist/types/crudQueryBuilder/index.d.ts +0 -6
- package/dist/types/crudQueryBuilder/index.d.ts.map +1 -1
- package/dist/types/crudQueryBuilder/types.d.ts +2 -43
- package/dist/types/crudQueryBuilder/types.d.ts.map +1 -1
- package/dist/types/graphQlBuilder/GraphQlLiteral.d.ts +3 -0
- package/dist/types/graphQlBuilder/GraphQlLiteral.d.ts.map +1 -1
- package/dist/types/graphQlBuilder/QueryBuilder.d.ts +2 -8
- package/dist/types/graphQlBuilder/QueryBuilder.d.ts.map +1 -1
- package/dist/types/graphQlBuilder/index.d.ts +0 -3
- package/dist/types/graphQlBuilder/index.d.ts.map +1 -1
- package/dist/types/graphQlClient/GraphQlClient.d.ts +10 -12
- package/dist/types/graphQlClient/GraphQlClient.d.ts.map +1 -1
- package/dist/types/graphQlClient/index.d.ts +2 -0
- package/dist/types/graphQlClient/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -29
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +18 -3
- package/src/content/index.ts +1 -1
- package/src/content/replaceGraphQlLiteral.ts +22 -0
- package/src/content/upload/GenerateUploadUrlMutationBuilder.ts +56 -33
- package/src/content/upload/S3FileUploader.ts +1 -2
- package/src/crudQueryBuilder/index.ts +0 -6
- package/src/crudQueryBuilder/types.ts +5 -70
- package/src/graphQlBuilder/GraphQlLiteral.ts +8 -1
- package/src/graphQlBuilder/QueryBuilder.ts +2 -23
- package/src/graphQlBuilder/index.ts +0 -3
- package/src/graphQlClient/GraphQlClient.ts +15 -28
- package/src/graphQlClient/index.ts +7 -0
- package/src/index.ts +5 -31
- package/src/tsconfig.json +12 -1
- package/dist/development/crudQueryBuilder/CrudQueryBuilder.js +0 -104
- package/dist/development/crudQueryBuilder/CrudQueryBuilder.js.map +0 -1
- package/dist/development/crudQueryBuilder/CrudQueryBuilderError.js +0 -6
- package/dist/development/crudQueryBuilder/CrudQueryBuilderError.js.map +0 -1
- package/dist/development/crudQueryBuilder/ErrorsRelationBuilder.js +0 -15
- package/dist/development/crudQueryBuilder/ErrorsRelationBuilder.js.map +0 -1
- package/dist/development/crudQueryBuilder/ReadBuilder.js +0 -70
- package/dist/development/crudQueryBuilder/ReadBuilder.js.map +0 -1
- package/dist/development/crudQueryBuilder/ValidationRelationBuilder.js +0 -18
- package/dist/development/crudQueryBuilder/ValidationRelationBuilder.js.map +0 -1
- package/dist/development/crudQueryBuilder/WriteBuilder.js +0 -54
- package/dist/development/crudQueryBuilder/WriteBuilder.js.map +0 -1
- package/dist/development/crudQueryBuilder/WriteDataBuilder.js +0 -110
- package/dist/development/crudQueryBuilder/WriteDataBuilder.js.map +0 -1
- package/dist/development/crudQueryBuilder/WriteManyRelationBuilder.js +0 -77
- package/dist/development/crudQueryBuilder/WriteManyRelationBuilder.js.map +0 -1
- package/dist/development/crudQueryBuilder/WriteOneRelationBuilder.js +0 -51
- package/dist/development/crudQueryBuilder/WriteOneRelationBuilder.js.map +0 -1
- package/dist/development/crudQueryBuilder/types.js +0 -40
- package/dist/development/crudQueryBuilder/types.js.map +0 -1
- package/dist/development/graphQlBuilder/GraphQlBuilderError.js +0 -6
- package/dist/development/graphQlBuilder/GraphQlBuilderError.js.map +0 -1
- package/dist/development/graphQlBuilder/ObjectBuilder.js +0 -80
- package/dist/development/graphQlBuilder/ObjectBuilder.js.map +0 -1
- package/dist/development/graphQlBuilder/QueryBuilder.js +0 -22
- package/dist/development/graphQlBuilder/QueryBuilder.js.map +0 -1
- package/dist/development/graphQlBuilder/QueryCompiler.js +0 -101
- package/dist/development/graphQlBuilder/QueryCompiler.js.map +0 -1
- package/dist/development/graphQlBuilder/RootObjectBuilder.js +0 -31
- package/dist/development/graphQlBuilder/RootObjectBuilder.js.map +0 -1
- package/dist/development/utils/isEmptyObject.js +0 -12
- package/dist/development/utils/isEmptyObject.js.map +0 -1
- package/dist/production/crudQueryBuilder/CrudQueryBuilder.js +0 -104
- package/dist/production/crudQueryBuilder/CrudQueryBuilder.js.map +0 -1
- package/dist/production/crudQueryBuilder/CrudQueryBuilderError.js +0 -6
- package/dist/production/crudQueryBuilder/CrudQueryBuilderError.js.map +0 -1
- package/dist/production/crudQueryBuilder/ErrorsRelationBuilder.js +0 -15
- package/dist/production/crudQueryBuilder/ErrorsRelationBuilder.js.map +0 -1
- package/dist/production/crudQueryBuilder/ReadBuilder.js +0 -70
- package/dist/production/crudQueryBuilder/ReadBuilder.js.map +0 -1
- package/dist/production/crudQueryBuilder/ValidationRelationBuilder.js +0 -18
- package/dist/production/crudQueryBuilder/ValidationRelationBuilder.js.map +0 -1
- package/dist/production/crudQueryBuilder/WriteBuilder.js +0 -54
- package/dist/production/crudQueryBuilder/WriteBuilder.js.map +0 -1
- package/dist/production/crudQueryBuilder/WriteDataBuilder.js +0 -110
- package/dist/production/crudQueryBuilder/WriteDataBuilder.js.map +0 -1
- package/dist/production/crudQueryBuilder/WriteManyRelationBuilder.js +0 -77
- package/dist/production/crudQueryBuilder/WriteManyRelationBuilder.js.map +0 -1
- package/dist/production/crudQueryBuilder/WriteOneRelationBuilder.js +0 -51
- package/dist/production/crudQueryBuilder/WriteOneRelationBuilder.js.map +0 -1
- package/dist/production/crudQueryBuilder/types.js +0 -40
- package/dist/production/crudQueryBuilder/types.js.map +0 -1
- package/dist/production/graphQlBuilder/GraphQlBuilderError.js +0 -6
- package/dist/production/graphQlBuilder/GraphQlBuilderError.js.map +0 -1
- package/dist/production/graphQlBuilder/ObjectBuilder.js +0 -80
- package/dist/production/graphQlBuilder/ObjectBuilder.js.map +0 -1
- package/dist/production/graphQlBuilder/QueryBuilder.js +0 -22
- package/dist/production/graphQlBuilder/QueryBuilder.js.map +0 -1
- package/dist/production/graphQlBuilder/QueryCompiler.js +0 -101
- package/dist/production/graphQlBuilder/QueryCompiler.js.map +0 -1
- package/dist/production/graphQlBuilder/RootObjectBuilder.js +0 -31
- package/dist/production/graphQlBuilder/RootObjectBuilder.js.map +0 -1
- package/dist/production/utils/isEmptyObject.js +0 -12
- package/dist/production/utils/isEmptyObject.js.map +0 -1
- package/dist/types/crudQueryBuilder/CrudQueryBuilder.d.ts +0 -21
- package/dist/types/crudQueryBuilder/CrudQueryBuilder.d.ts.map +0 -1
- package/dist/types/crudQueryBuilder/CrudQueryBuilderError.d.ts +0 -3
- package/dist/types/crudQueryBuilder/CrudQueryBuilderError.d.ts.map +0 -1
- package/dist/types/crudQueryBuilder/ErrorsRelationBuilder.d.ts +0 -5
- package/dist/types/crudQueryBuilder/ErrorsRelationBuilder.d.ts.map +0 -1
- package/dist/types/crudQueryBuilder/ReadBuilder.d.ts +0 -31
- package/dist/types/crudQueryBuilder/ReadBuilder.d.ts.map +0 -1
- package/dist/types/crudQueryBuilder/ValidationRelationBuilder.d.ts +0 -5
- package/dist/types/crudQueryBuilder/ValidationRelationBuilder.d.ts.map +0 -1
- package/dist/types/crudQueryBuilder/WriteBuilder.d.ts +0 -24
- package/dist/types/crudQueryBuilder/WriteBuilder.d.ts.map +0 -1
- package/dist/types/crudQueryBuilder/WriteDataBuilder.d.ts +0 -24
- package/dist/types/crudQueryBuilder/WriteDataBuilder.d.ts.map +0 -1
- package/dist/types/crudQueryBuilder/WriteManyRelationBuilder.d.ts +0 -27
- package/dist/types/crudQueryBuilder/WriteManyRelationBuilder.d.ts.map +0 -1
- package/dist/types/crudQueryBuilder/WriteOneRelationBuilder.d.ts +0 -28
- package/dist/types/crudQueryBuilder/WriteOneRelationBuilder.d.ts.map +0 -1
- package/dist/types/graphQlBuilder/GraphQlBuilderError.d.ts +0 -3
- package/dist/types/graphQlBuilder/GraphQlBuilderError.d.ts.map +0 -1
- package/dist/types/graphQlBuilder/ObjectBuilder.d.ts +0 -28
- package/dist/types/graphQlBuilder/ObjectBuilder.d.ts.map +0 -1
- package/dist/types/graphQlBuilder/QueryCompiler.d.ts +0 -13
- package/dist/types/graphQlBuilder/QueryCompiler.d.ts.map +0 -1
- package/dist/types/graphQlBuilder/RootObjectBuilder.d.ts +0 -17
- package/dist/types/graphQlBuilder/RootObjectBuilder.d.ts.map +0 -1
- package/src/crudQueryBuilder/CrudQueryBuilder.ts +0 -168
- package/src/crudQueryBuilder/CrudQueryBuilderError.ts +0 -1
- package/src/crudQueryBuilder/ErrorsRelationBuilder.ts +0 -16
- package/src/crudQueryBuilder/ReadBuilder.ts +0 -106
- package/src/crudQueryBuilder/ValidationRelationBuilder.ts +0 -17
- package/src/crudQueryBuilder/WriteBuilder.ts +0 -79
- package/src/crudQueryBuilder/WriteDataBuilder.ts +0 -153
- package/src/crudQueryBuilder/WriteManyRelationBuilder.ts +0 -141
- package/src/crudQueryBuilder/WriteOneRelationBuilder.ts +0 -101
- package/src/graphQlBuilder/GraphQlBuilderError.ts +0 -1
- package/src/graphQlBuilder/ObjectBuilder.ts +0 -87
- package/src/graphQlBuilder/QueryCompiler.ts +0 -115
- package/src/graphQlBuilder/RootObjectBuilder.ts +0 -36
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import { ObjectBuilder, QueryBuilder, RootObjectBuilder } from '../graphQlBuilder'
|
|
2
|
-
import { isEmptyObject } from '../utils'
|
|
3
|
-
import { CrudQueryBuilderError } from './CrudQueryBuilderError'
|
|
4
|
-
import { ReadBuilder } from './ReadBuilder'
|
|
5
|
-
import type {
|
|
6
|
-
CreateMutationArguments,
|
|
7
|
-
CreateMutationFields,
|
|
8
|
-
DeleteMutationArguments,
|
|
9
|
-
DeleteMutationFields,
|
|
10
|
-
GetQueryArguments,
|
|
11
|
-
ListQueryArguments,
|
|
12
|
-
Mutations,
|
|
13
|
-
PaginateQueryArguments,
|
|
14
|
-
Queries,
|
|
15
|
-
UpdateMutationArguments,
|
|
16
|
-
UpdateMutationFields,
|
|
17
|
-
WriteOperation,
|
|
18
|
-
} from './types'
|
|
19
|
-
import { WriteBuilder } from './WriteBuilder'
|
|
20
|
-
|
|
21
|
-
export class CrudQueryBuilder {
|
|
22
|
-
constructor(
|
|
23
|
-
private type: undefined | 'query' | 'mutation' = undefined,
|
|
24
|
-
private rootObjectBuilder: RootObjectBuilder = new RootObjectBuilder(),
|
|
25
|
-
) {}
|
|
26
|
-
|
|
27
|
-
public fragment(name: string, typeName: string, query: ReadBuilder.BuilderFactory<never>): CrudQueryBuilder {
|
|
28
|
-
const readBuilder = ReadBuilder.instantiateFromFactory(query)
|
|
29
|
-
const objectBuilder = readBuilder.objectBuilder.name(typeName)
|
|
30
|
-
|
|
31
|
-
return new CrudQueryBuilder(this.type, this.rootObjectBuilder.fragment(name, objectBuilder))
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
public list(
|
|
35
|
-
name: string,
|
|
36
|
-
query: ReadBuilder.BuilderFactory<ListQueryArguments>,
|
|
37
|
-
alias?: string,
|
|
38
|
-
): Omit<CrudQueryBuilder, Mutations> {
|
|
39
|
-
if (this.type === 'mutation') {
|
|
40
|
-
throw new CrudQueryBuilderError('Cannot combine queries and mutations')
|
|
41
|
-
}
|
|
42
|
-
name = `list${name}`
|
|
43
|
-
query = ReadBuilder.instantiateFromFactory(query)
|
|
44
|
-
|
|
45
|
-
const [objectName, objectBuilder] =
|
|
46
|
-
typeof alias === 'string' ? [alias, query.objectBuilder.name(name)] : [name, query.objectBuilder]
|
|
47
|
-
|
|
48
|
-
return new CrudQueryBuilder('query', this.rootObjectBuilder.object(objectName, objectBuilder))
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
public paginate(
|
|
52
|
-
name: string,
|
|
53
|
-
query: ReadBuilder.BuilderFactory<PaginateQueryArguments>,
|
|
54
|
-
alias?: string,
|
|
55
|
-
): Omit<CrudQueryBuilder, Mutations> {
|
|
56
|
-
if (this.type === 'mutation') {
|
|
57
|
-
throw new CrudQueryBuilderError('Cannot combine queries and mutations')
|
|
58
|
-
}
|
|
59
|
-
name = `paginate${name}`
|
|
60
|
-
query = ReadBuilder.instantiateFromFactory(query)
|
|
61
|
-
|
|
62
|
-
const [objectName, objectBuilder] =
|
|
63
|
-
typeof alias === 'string' ? [alias, query.objectBuilder.name(name)] : [name, query.objectBuilder]
|
|
64
|
-
|
|
65
|
-
return new CrudQueryBuilder('query', this.rootObjectBuilder.object(objectName, objectBuilder))
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
public get(
|
|
69
|
-
name: string,
|
|
70
|
-
query: ReadBuilder.BuilderFactory<GetQueryArguments>,
|
|
71
|
-
alias?: string,
|
|
72
|
-
): Omit<CrudQueryBuilder, Mutations> {
|
|
73
|
-
if (this.type === 'mutation') {
|
|
74
|
-
throw new CrudQueryBuilderError('Cannot combine queries and mutations')
|
|
75
|
-
}
|
|
76
|
-
name = `get${name}`
|
|
77
|
-
query = ReadBuilder.instantiateFromFactory(query)
|
|
78
|
-
|
|
79
|
-
const [objectName, objectBuilder] =
|
|
80
|
-
typeof alias === 'string' ? [alias, query.objectBuilder.name(name)] : [name, query.objectBuilder]
|
|
81
|
-
|
|
82
|
-
return new CrudQueryBuilder('query', this.rootObjectBuilder.object(objectName, objectBuilder))
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
public update(
|
|
86
|
-
name: string,
|
|
87
|
-
query: WriteBuilder.BuilderFactory<UpdateMutationArguments, UpdateMutationFields, WriteOperation.Update>,
|
|
88
|
-
alias?: string,
|
|
89
|
-
): Omit<CrudQueryBuilder, Queries> {
|
|
90
|
-
if (this.type === 'query') {
|
|
91
|
-
throw new CrudQueryBuilderError('Cannot combine queries and mutations')
|
|
92
|
-
}
|
|
93
|
-
name = `update${name}`
|
|
94
|
-
query = WriteBuilder.instantiateFromFactory(query)
|
|
95
|
-
|
|
96
|
-
if (isEmptyObject(query.objectBuilder.args.data)) {
|
|
97
|
-
return this
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
const [objectName, objectBuilder] =
|
|
101
|
-
typeof alias === 'string' ? [alias, query.objectBuilder.name(name)] : [name, query.objectBuilder]
|
|
102
|
-
|
|
103
|
-
return new CrudQueryBuilder('mutation', this.rootObjectBuilder.object(objectName, objectBuilder))
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
public create(
|
|
107
|
-
name: string,
|
|
108
|
-
query: WriteBuilder.BuilderFactory<CreateMutationArguments, CreateMutationFields, WriteOperation.Create>,
|
|
109
|
-
alias?: string,
|
|
110
|
-
): Omit<CrudQueryBuilder, Queries> {
|
|
111
|
-
if (this.type === 'query') {
|
|
112
|
-
throw new CrudQueryBuilderError('Cannot combine queries and mutations')
|
|
113
|
-
}
|
|
114
|
-
name = `create${name}`
|
|
115
|
-
query = WriteBuilder.instantiateFromFactory(query)
|
|
116
|
-
|
|
117
|
-
if (isEmptyObject(query.objectBuilder.args.data)) {
|
|
118
|
-
return this
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
const [objectName, objectBuilder] =
|
|
122
|
-
typeof alias === 'string' ? [alias, query.objectBuilder.name(name)] : [name, query.objectBuilder]
|
|
123
|
-
|
|
124
|
-
return new CrudQueryBuilder('mutation', this.rootObjectBuilder.object(objectName, objectBuilder))
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
public delete(
|
|
128
|
-
name: string,
|
|
129
|
-
query: WriteBuilder.BuilderFactory<DeleteMutationArguments, DeleteMutationFields, WriteOperation.Delete>,
|
|
130
|
-
alias?: string,
|
|
131
|
-
): Omit<CrudQueryBuilder, Queries> {
|
|
132
|
-
if (this.type === 'query') {
|
|
133
|
-
throw new CrudQueryBuilderError('Cannot combine queries and mutations')
|
|
134
|
-
}
|
|
135
|
-
name = `delete${name}`
|
|
136
|
-
query = WriteBuilder.instantiateFromFactory(query)
|
|
137
|
-
|
|
138
|
-
const [objectName, objectBuilder] =
|
|
139
|
-
typeof alias === 'string' ? [alias, query.objectBuilder.name(name)] : [name, query.objectBuilder]
|
|
140
|
-
|
|
141
|
-
return new CrudQueryBuilder('mutation', this.rootObjectBuilder.object(objectName, objectBuilder))
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
public inTransaction(alias: string = 'transaction', options: { deferForeignKeyConstraints?: boolean } = {}): CrudQueryBuilder {
|
|
145
|
-
const objectBuilder = new ObjectBuilder(
|
|
146
|
-
['ok', 'errorMessage'],
|
|
147
|
-
{ ...this.rootObjectBuilder.objects },
|
|
148
|
-
{ options },
|
|
149
|
-
undefined,
|
|
150
|
-
undefined,
|
|
151
|
-
'transaction',
|
|
152
|
-
)
|
|
153
|
-
|
|
154
|
-
return new CrudQueryBuilder(this.type, new RootObjectBuilder({ [alias]: objectBuilder }, this.rootObjectBuilder.fragmentDefinitions))
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
getGql(): string {
|
|
158
|
-
const builder = new QueryBuilder()
|
|
159
|
-
switch (this.type) {
|
|
160
|
-
case 'mutation':
|
|
161
|
-
return builder.mutation(this.rootObjectBuilder)
|
|
162
|
-
case 'query':
|
|
163
|
-
return builder.query(this.rootObjectBuilder)
|
|
164
|
-
default:
|
|
165
|
-
throw new CrudQueryBuilderError(`Invalid type ${this.type}`)
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export class CrudQueryBuilderError extends Error {}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { ObjectBuilder } from '../graphQlBuilder'
|
|
2
|
-
|
|
3
|
-
export class ErrorsRelationBuilder {
|
|
4
|
-
public static errorsRelation(objectBuilder: ObjectBuilder): ObjectBuilder {
|
|
5
|
-
return objectBuilder.object('errors', builder =>
|
|
6
|
-
builder
|
|
7
|
-
.field('type')
|
|
8
|
-
.field('message')
|
|
9
|
-
.object('path', builder =>
|
|
10
|
-
builder
|
|
11
|
-
.inlineFragment('_FieldPathFragment', builder => builder.field('field'))
|
|
12
|
-
.inlineFragment('_IndexPathFragment', builder => builder.field('index').field('alias')),
|
|
13
|
-
),
|
|
14
|
-
)
|
|
15
|
-
}
|
|
16
|
-
}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import type { Input } from '@contember/schema'
|
|
2
|
-
import { GraphQlLiteral, ObjectBuilder } from '../graphQlBuilder'
|
|
3
|
-
import type { HasManyArguments, HasOneArguments, OrderDirection, ReadArguments, ReductionArguments } from './types'
|
|
4
|
-
|
|
5
|
-
class ReadBuilder<AllowedArgs extends ReadArguments = ReadArguments> {
|
|
6
|
-
protected constructor(public readonly objectBuilder: ObjectBuilder = new ObjectBuilder()) {}
|
|
7
|
-
|
|
8
|
-
public static instantiate<AllowedArgs extends ReadArguments = ReadArguments>(
|
|
9
|
-
objectBuilder: ObjectBuilder = new ObjectBuilder(),
|
|
10
|
-
): ReadBuilder.Builder<AllowedArgs> {
|
|
11
|
-
return new ReadBuilder<AllowedArgs>(objectBuilder)
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
public static instantiateFromFactory<AllowedArgs extends ReadArguments>(
|
|
15
|
-
builder: ReadBuilder.BuilderFactory<AllowedArgs>,
|
|
16
|
-
): ReadBuilder.Builder<never> {
|
|
17
|
-
if (typeof builder === 'function') {
|
|
18
|
-
return builder(ReadBuilder.instantiate())
|
|
19
|
-
}
|
|
20
|
-
return builder
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
protected instantiate<AA extends ReadArguments = ReadArguments>(
|
|
24
|
-
objectBuilder: ObjectBuilder = new ObjectBuilder(),
|
|
25
|
-
): ReadBuilder.Builder<AA> {
|
|
26
|
-
return ReadBuilder.instantiate<AA>(objectBuilder)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
public by(by: Input.UniqueWhere<GraphQlLiteral>) {
|
|
30
|
-
return this.instantiate<Exclude<AllowedArgs, 'by'>>(this.objectBuilder.argument('by', by))
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
public filter(where: Input.Where<Input.Condition<Input.ColumnValue<GraphQlLiteral>>>) {
|
|
34
|
-
return this.instantiate<Exclude<AllowedArgs, 'filter'>>(this.objectBuilder.argument('filter', where))
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
public orderBy(orderBy: Input.OrderBy<OrderDirection>[]) {
|
|
38
|
-
return this.instantiate<Exclude<AllowedArgs, 'orderBy'>>(this.objectBuilder.argument('orderBy', orderBy))
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
public offset(offset: number) {
|
|
42
|
-
return this.instantiate<Exclude<AllowedArgs, 'offset'>>(this.objectBuilder.argument('offset', offset))
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
public limit(limit: number) {
|
|
46
|
-
return this.instantiate<Exclude<AllowedArgs, 'limit'>>(this.objectBuilder.argument('limit', limit))
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
public skip(offset: number) {
|
|
50
|
-
return this.instantiate<Exclude<AllowedArgs, 'skip'>>(this.objectBuilder.argument('skip', offset))
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
public first(limit: number) {
|
|
54
|
-
return this.instantiate<Exclude<AllowedArgs, 'first'>>(this.objectBuilder.argument('first', limit))
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
public column(name: string) {
|
|
58
|
-
return this.instantiate<AllowedArgs>(this.objectBuilder.field(name))
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
public inlineFragment(typeName: string, builder: ReadBuilder.BuilderFactory<never>) {
|
|
62
|
-
builder = ReadBuilder.instantiateFromFactory(builder)
|
|
63
|
-
return this.instantiate<AllowedArgs>(this.objectBuilder.inlineFragment(typeName, builder.objectBuilder))
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
public applyFragment(fragmentName: string) {
|
|
67
|
-
return this.instantiate<AllowedArgs>(this.objectBuilder.applyFragment(fragmentName))
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
public reductionRelation(name: string, builder: ReadBuilder.BuilderFactory<ReductionArguments>, alias?: string) {
|
|
71
|
-
return this.relation(name, builder, alias)
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
public hasOneRelation(name: string, builder: ReadBuilder.BuilderFactory<HasOneArguments>, alias?: string) {
|
|
75
|
-
return this.relation(name, builder, alias)
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
public hasManyRelation(name: string, builder: ReadBuilder.BuilderFactory<HasManyArguments>, alias?: string) {
|
|
79
|
-
return this.relation(name, builder, alias)
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
public anyRelation(name: string, builder: ReadBuilder.BuilderFactory<never>, alias?: string) {
|
|
83
|
-
return this.relation(name, builder, alias)
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
protected relation<A extends ReadArguments>(name: string, builder: ReadBuilder.BuilderFactory<A>, alias?: string) {
|
|
87
|
-
builder = ReadBuilder.instantiateFromFactory(builder)
|
|
88
|
-
|
|
89
|
-
const [objectName, objectBuilder] =
|
|
90
|
-
typeof alias === 'string' ? [alias, builder.objectBuilder.name(name)] : [name, builder.objectBuilder]
|
|
91
|
-
|
|
92
|
-
return this.instantiate<AllowedArgs>(this.objectBuilder.object(objectName, objectBuilder))
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
namespace ReadBuilder {
|
|
97
|
-
export type Builder<AllowedArgs extends ReadArguments> = Omit<
|
|
98
|
-
ReadBuilder<AllowedArgs>,
|
|
99
|
-
Exclude<ReadArguments, AllowedArgs>
|
|
100
|
-
>
|
|
101
|
-
export type BuilderFactory<AllowedArgs extends ReadArguments> =
|
|
102
|
-
| Builder<never>
|
|
103
|
-
| ((builder: Builder<AllowedArgs>) => Builder<never>)
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
export { ReadBuilder }
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { ObjectBuilder } from '../graphQlBuilder'
|
|
2
|
-
|
|
3
|
-
export class ValidationRelationBuilder {
|
|
4
|
-
public static validationRelation(objectBuilder: ObjectBuilder): ObjectBuilder {
|
|
5
|
-
return objectBuilder.object('validation', builder =>
|
|
6
|
-
builder.field('valid').object('errors', builder =>
|
|
7
|
-
builder
|
|
8
|
-
.object('path', builder =>
|
|
9
|
-
builder
|
|
10
|
-
.inlineFragment('_FieldPathFragment', builder => builder.field('field'))
|
|
11
|
-
.inlineFragment('_IndexPathFragment', builder => builder.field('index').field('alias')),
|
|
12
|
-
)
|
|
13
|
-
.object('message', builder => builder.field('text')),
|
|
14
|
-
),
|
|
15
|
-
)
|
|
16
|
-
}
|
|
17
|
-
}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import type { Input } from '@contember/schema'
|
|
2
|
-
import { GraphQlLiteral, ObjectBuilder } from '../graphQlBuilder'
|
|
3
|
-
import { ErrorsRelationBuilder } from './ErrorsRelationBuilder'
|
|
4
|
-
import { ReadBuilder } from './ReadBuilder'
|
|
5
|
-
import type { WriteArguments, WriteFields, WriteOperation } from './types'
|
|
6
|
-
import { ValidationRelationBuilder } from './ValidationRelationBuilder'
|
|
7
|
-
import { WriteDataBuilder } from './WriteDataBuilder'
|
|
8
|
-
|
|
9
|
-
class WriteBuilder<AA extends WriteArguments, AF extends WriteFields, Op extends WriteOperation.Operation> {
|
|
10
|
-
protected constructor(public readonly objectBuilder: ObjectBuilder = new ObjectBuilder()) {}
|
|
11
|
-
|
|
12
|
-
public static instantiate<AA extends WriteArguments, AF extends WriteFields, Op extends WriteOperation.Operation>(
|
|
13
|
-
objectBuilder: ObjectBuilder = new ObjectBuilder(),
|
|
14
|
-
): WriteBuilder.Builder<AA, AF, Op> {
|
|
15
|
-
return new WriteBuilder<AA, AF, Op>(objectBuilder)
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
public static instantiateFromFactory<
|
|
19
|
-
AA extends WriteArguments,
|
|
20
|
-
AF extends WriteFields,
|
|
21
|
-
Op extends WriteOperation.Operation,
|
|
22
|
-
>(builder: WriteBuilder.BuilderFactory<AA, AF, Op>): WriteBuilder.Builder<never, never, Op> {
|
|
23
|
-
if (typeof builder === 'function') {
|
|
24
|
-
return builder(WriteBuilder.instantiate())
|
|
25
|
-
}
|
|
26
|
-
return builder
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
public data<SubOp extends Op & WriteOperation.ContentfulOperation>(data: WriteDataBuilder.DataLike<SubOp>) {
|
|
30
|
-
const resolvedData = WriteDataBuilder.resolveData(data)
|
|
31
|
-
return WriteBuilder.instantiate<Exclude<AA, 'data'>, AF, Op>(
|
|
32
|
-
resolvedData === undefined ? this.objectBuilder : this.objectBuilder.argument('data', resolvedData),
|
|
33
|
-
)
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
public by(by: Input.UniqueWhere<GraphQlLiteral>) {
|
|
37
|
-
return WriteBuilder.instantiate<Exclude<AA, 'by'>, AF, Op>(this.objectBuilder.argument('by', by))
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
public ok() {
|
|
41
|
-
return WriteBuilder.instantiate<AA, Exclude<AF, 'ok'>, Op>(this.objectBuilder.field('ok'))
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
public errorMessage() {
|
|
45
|
-
return WriteBuilder.instantiate<AA, Exclude<AF, 'errorMessage'>, Op>(this.objectBuilder.field('errorMessage'))
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
public validation() {
|
|
49
|
-
return WriteBuilder.instantiate<AA, Exclude<AF, 'validation'>, Op>(
|
|
50
|
-
ValidationRelationBuilder.validationRelation(this.objectBuilder),
|
|
51
|
-
)
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
public errors() {
|
|
55
|
-
return WriteBuilder.instantiate<AA, Exclude<AF, 'errors'>, Op>(
|
|
56
|
-
ErrorsRelationBuilder.errorsRelation(this.objectBuilder),
|
|
57
|
-
)
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
public node(builder: ReadBuilder.BuilderFactory<never>) {
|
|
61
|
-
const readBuilder = ReadBuilder.instantiateFromFactory(builder)
|
|
62
|
-
return WriteBuilder.instantiate<AA, Exclude<AF, 'node'>, Op>(
|
|
63
|
-
this.objectBuilder.object('node', readBuilder.objectBuilder),
|
|
64
|
-
)
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
namespace WriteBuilder {
|
|
69
|
-
export type Builder<AA extends WriteArguments, AF extends WriteFields, Op extends WriteOperation.Operation> = Omit<
|
|
70
|
-
Omit<WriteBuilder<AA, AF, Op>, Exclude<WriteArguments, AA>>,
|
|
71
|
-
Exclude<WriteFields, AF>
|
|
72
|
-
>
|
|
73
|
-
|
|
74
|
-
export type BuilderFactory<AA extends WriteArguments, AF extends WriteFields, Op extends WriteOperation.Operation> =
|
|
75
|
-
| Builder<never, never, Op>
|
|
76
|
-
| ((builder: Builder<AA, AF, Op>) => Builder<never, never, Op>)
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export { WriteBuilder }
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
import type { Input, Value } from '@contember/schema'
|
|
2
|
-
import { GraphQlLiteral } from '../graphQlBuilder'
|
|
3
|
-
import { isEmptyObject } from '../utils'
|
|
4
|
-
import { CrudQueryBuilderError } from './CrudQueryBuilderError'
|
|
5
|
-
import type { WriteOperation } from './types'
|
|
6
|
-
import { WriteManyRelationBuilder } from './WriteManyRelationBuilder'
|
|
7
|
-
import { WriteOneRelationBuilder } from './WriteOneRelationBuilder'
|
|
8
|
-
|
|
9
|
-
class WriteDataBuilder<Op extends WriteOperation.ContentfulOperation> {
|
|
10
|
-
public readonly data: WriteDataBuilder.DataFormat[Op['op']]
|
|
11
|
-
|
|
12
|
-
public constructor(data?: WriteDataBuilder.DataFormat[Op['op']]) {
|
|
13
|
-
this.data = data || {}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
public static resolveData<Op extends WriteOperation.ContentfulOperation>(
|
|
17
|
-
dataLike: WriteDataBuilder.DataLike<Op>,
|
|
18
|
-
): WriteDataBuilder.DataFormat[Op['op']] | undefined {
|
|
19
|
-
let resolvedData: WriteDataBuilder.DataFormat[Op['op']]
|
|
20
|
-
|
|
21
|
-
if (dataLike instanceof WriteDataBuilder) {
|
|
22
|
-
resolvedData = dataLike.data
|
|
23
|
-
} else if (typeof dataLike === 'function') {
|
|
24
|
-
resolvedData = dataLike(new WriteDataBuilder()).data
|
|
25
|
-
} else {
|
|
26
|
-
resolvedData = dataLike
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
if (isEmptyObject(resolvedData)) {
|
|
30
|
-
return undefined
|
|
31
|
-
}
|
|
32
|
-
return resolvedData
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
public set(fieldName: string, value: Input.ColumnValue<GraphQlLiteral>) {
|
|
36
|
-
return new WriteDataBuilder<Op>({ ...this.data, [fieldName]: value })
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
public many(fieldName: string, data: WriteManyRelationBuilder.BuilderFactory<Op>): WriteDataBuilder<Op> {
|
|
40
|
-
const resolvedData = WriteManyRelationBuilder.instantiateFromFactory(data).data
|
|
41
|
-
return resolvedData === undefined || resolvedData.length === 0
|
|
42
|
-
? this
|
|
43
|
-
: new WriteDataBuilder<Op>(this.mergeInFreshData(this.data, fieldName, resolvedData))
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
public one(fieldName: string, data: WriteOneRelationBuilder.BuilderFactory<Op>): WriteDataBuilder<Op> {
|
|
47
|
-
const resolvedData = WriteOneRelationBuilder.instantiateFromFactory(data).data
|
|
48
|
-
return resolvedData === undefined || isEmptyObject(resolvedData)
|
|
49
|
-
? this
|
|
50
|
-
: new WriteDataBuilder<Op>(this.mergeInFreshData(this.data, fieldName, resolvedData))
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
private mergeInFreshData(
|
|
54
|
-
original: WriteDataBuilder.DataFormat[Op['op']],
|
|
55
|
-
fieldName: string,
|
|
56
|
-
fresh: WriteManyRelationBuilder.DataFormat[Op['op']] | WriteOneRelationBuilder.DataFormat[Op['op']],
|
|
57
|
-
): WriteDataBuilder.DataFormat[Op['op']] {
|
|
58
|
-
if (fieldName in original) {
|
|
59
|
-
const existingValue = original[fieldName]
|
|
60
|
-
if (Array.isArray(existingValue)) {
|
|
61
|
-
if (Array.isArray(fresh)) {
|
|
62
|
-
return { ...original, [fieldName]: [...existingValue, ...fresh] }
|
|
63
|
-
}
|
|
64
|
-
throw new CrudQueryBuilderError(`Inconsistent data.`)
|
|
65
|
-
}
|
|
66
|
-
if (Array.isArray(fresh)) {
|
|
67
|
-
throw new CrudQueryBuilderError(`Inconsistent data.`)
|
|
68
|
-
}
|
|
69
|
-
return { ...original, [fieldName]: this.mergeUpdateOne(existingValue, fresh) }
|
|
70
|
-
}
|
|
71
|
-
return { ...original, [fieldName]: fresh }
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
private mergeUpdateOne(
|
|
75
|
-
original:
|
|
76
|
-
| Value.FieldValue<GraphQlLiteral>
|
|
77
|
-
| Input.CreateOneRelationInput<GraphQlLiteral>
|
|
78
|
-
| Input.UpdateOneRelationInput<GraphQlLiteral>,
|
|
79
|
-
fresh:
|
|
80
|
-
| Value.FieldValue<GraphQlLiteral>
|
|
81
|
-
| Input.CreateOneRelationInput<GraphQlLiteral>
|
|
82
|
-
| Input.UpdateOneRelationInput<GraphQlLiteral>,
|
|
83
|
-
):
|
|
84
|
-
| Value.FieldValue<GraphQlLiteral>
|
|
85
|
-
| Input.CreateOneRelationInput<GraphQlLiteral>
|
|
86
|
-
| Input.UpdateOneRelationInput<GraphQlLiteral> {
|
|
87
|
-
// TODO This implementation pretty bad but it will have to do for now.
|
|
88
|
-
if (original instanceof GraphQlLiteral) {
|
|
89
|
-
if (fresh instanceof GraphQlLiteral) {
|
|
90
|
-
if (original.value === fresh.value) {
|
|
91
|
-
return original
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
throw new CrudQueryBuilderError(`Inconsistent data.`)
|
|
95
|
-
}
|
|
96
|
-
if (fresh instanceof GraphQlLiteral) {
|
|
97
|
-
throw new CrudQueryBuilderError(`Inconsistent data.`)
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
if (Array.isArray(original)) {
|
|
101
|
-
if (Array.isArray(fresh)) {
|
|
102
|
-
return [...original, ...fresh]
|
|
103
|
-
}
|
|
104
|
-
throw new CrudQueryBuilderError(`Inconsistent data.`)
|
|
105
|
-
}
|
|
106
|
-
if (Array.isArray(fresh)) {
|
|
107
|
-
throw new CrudQueryBuilderError(`Inconsistent data.`)
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
if (original === null) {
|
|
111
|
-
if (fresh === null) {
|
|
112
|
-
return original
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
if (fresh === null) {
|
|
116
|
-
throw new CrudQueryBuilderError(`Inconsistent data.`)
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
if (typeof original === 'object') {
|
|
120
|
-
if (typeof fresh === 'object') {
|
|
121
|
-
const composite: any = { ...original }
|
|
122
|
-
for (const field in fresh) {
|
|
123
|
-
const fromFresh = (fresh as any)[field]
|
|
124
|
-
composite[field] = field in composite ? this.mergeUpdateOne(composite[field], fromFresh) : fromFresh
|
|
125
|
-
}
|
|
126
|
-
return composite
|
|
127
|
-
}
|
|
128
|
-
throw new CrudQueryBuilderError(`Inconsistent data.`)
|
|
129
|
-
}
|
|
130
|
-
if (typeof fresh === 'object') {
|
|
131
|
-
throw new CrudQueryBuilderError(`Inconsistent data.`)
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
if (original === fresh) {
|
|
135
|
-
return original
|
|
136
|
-
}
|
|
137
|
-
throw new CrudQueryBuilderError(`Inconsistent data.`)
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
namespace WriteDataBuilder {
|
|
142
|
-
export interface DataFormat {
|
|
143
|
-
create: Input.CreateDataInput<GraphQlLiteral>
|
|
144
|
-
update: Input.UpdateDataInput<GraphQlLiteral>
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
export type DataLike<Op extends WriteOperation.ContentfulOperation> =
|
|
148
|
-
| DataFormat[Op['op']]
|
|
149
|
-
| WriteDataBuilder<Op>
|
|
150
|
-
| ((builder: WriteDataBuilder<Op>) => WriteDataBuilder<Op>)
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
export { WriteDataBuilder }
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import type { Input } from '@contember/schema'
|
|
2
|
-
import type { GraphQlLiteral } from '../graphQlBuilder'
|
|
3
|
-
import type { WriteOperation, WriteRelationOps } from './types'
|
|
4
|
-
import { WriteDataBuilder } from './WriteDataBuilder'
|
|
5
|
-
|
|
6
|
-
class WriteManyRelationBuilder<
|
|
7
|
-
Op extends WriteOperation.ContentfulOperation,
|
|
8
|
-
Allowed extends WriteRelationOps[Op['op']],
|
|
9
|
-
> {
|
|
10
|
-
private constructor(public readonly data: WriteManyRelationBuilder.DataFormat[Op['op']] = []) {}
|
|
11
|
-
|
|
12
|
-
public static instantiate<
|
|
13
|
-
Op extends WriteOperation.ContentfulOperation,
|
|
14
|
-
Allowed extends WriteRelationOps[Op['op']] = WriteRelationOps[Op['op']],
|
|
15
|
-
>(data: WriteManyRelationBuilder.DataFormat[Op['op']] = []): WriteManyRelationBuilder.Builder<Op, Allowed> {
|
|
16
|
-
return new WriteManyRelationBuilder<Op, Allowed>(data)
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
public static instantiateFromFactory<
|
|
20
|
-
Op extends WriteOperation.ContentfulOperation,
|
|
21
|
-
Allowed extends WriteRelationOps[Op['op']],
|
|
22
|
-
>(builder: WriteManyRelationBuilder.BuilderFactory<Op, Allowed>): WriteManyRelationBuilder.Builder<Op, never> {
|
|
23
|
-
if (typeof builder === 'function') {
|
|
24
|
-
return builder(WriteManyRelationBuilder.instantiate())
|
|
25
|
-
}
|
|
26
|
-
if ('data' in builder) {
|
|
27
|
-
return WriteManyRelationBuilder.instantiate(builder.data)
|
|
28
|
-
}
|
|
29
|
-
return WriteManyRelationBuilder.instantiate(builder)
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
public create(
|
|
33
|
-
data: WriteDataBuilder.DataLike<WriteOperation.Create>,
|
|
34
|
-
alias?: string,
|
|
35
|
-
): WriteManyRelationBuilder.Builder<Op> {
|
|
36
|
-
const resolvedData = WriteDataBuilder.resolveData(data)
|
|
37
|
-
return (
|
|
38
|
-
resolvedData === undefined
|
|
39
|
-
? this
|
|
40
|
-
: WriteManyRelationBuilder.instantiate<Op>([
|
|
41
|
-
...this.data,
|
|
42
|
-
this.withAlias({ create: resolvedData }, alias),
|
|
43
|
-
] as WriteManyRelationBuilder.DataFormat[WriteOperation.Create['op']])
|
|
44
|
-
) as WriteManyRelationBuilder.Builder<Op>
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
public connect(where: Input.UniqueWhere<GraphQlLiteral>, alias?: string) {
|
|
48
|
-
return WriteManyRelationBuilder.instantiate<Op>([
|
|
49
|
-
...this.data,
|
|
50
|
-
this.withAlias({ connect: where }, alias),
|
|
51
|
-
] as WriteManyRelationBuilder.DataFormat[Op['op']])
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
public delete(where: Input.UniqueWhere<GraphQlLiteral>, alias?: string) {
|
|
55
|
-
return WriteManyRelationBuilder.instantiate<WriteOperation.Update>([
|
|
56
|
-
...this.data,
|
|
57
|
-
this.withAlias({ delete: where }, alias),
|
|
58
|
-
])
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
public disconnect(where: Input.UniqueWhere<GraphQlLiteral>, alias?: string) {
|
|
62
|
-
return WriteManyRelationBuilder.instantiate<WriteOperation.Update>([
|
|
63
|
-
...this.data,
|
|
64
|
-
this.withAlias({ disconnect: where }, alias),
|
|
65
|
-
])
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
public update(
|
|
69
|
-
where: Input.UniqueWhere<GraphQlLiteral>,
|
|
70
|
-
data: WriteDataBuilder.DataLike<WriteOperation.Update>,
|
|
71
|
-
alias?: string,
|
|
72
|
-
): WriteManyRelationBuilder.Builder<WriteOperation.Update> {
|
|
73
|
-
const resolvedData = WriteDataBuilder.resolveData(data)
|
|
74
|
-
return (
|
|
75
|
-
resolvedData === undefined
|
|
76
|
-
? this
|
|
77
|
-
: WriteManyRelationBuilder.instantiate<WriteOperation.Update>([
|
|
78
|
-
...this.data,
|
|
79
|
-
this.withAlias({ update: { by: where, data: resolvedData } }, alias),
|
|
80
|
-
])
|
|
81
|
-
) as WriteManyRelationBuilder.Builder<WriteOperation.Update>
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
public upsert(
|
|
85
|
-
where: Input.UniqueWhere<GraphQlLiteral>,
|
|
86
|
-
update: WriteDataBuilder.DataLike<WriteOperation.Update>,
|
|
87
|
-
create: WriteDataBuilder.DataLike<WriteOperation.Create>,
|
|
88
|
-
alias?: string,
|
|
89
|
-
): WriteManyRelationBuilder.Builder<WriteOperation.Update> {
|
|
90
|
-
const resolvedUpdate = WriteDataBuilder.resolveData(update)
|
|
91
|
-
const resolvedCreate = WriteDataBuilder.resolveData(create)
|
|
92
|
-
return (
|
|
93
|
-
resolvedUpdate === undefined && resolvedCreate === undefined
|
|
94
|
-
? this
|
|
95
|
-
: WriteManyRelationBuilder.instantiate<WriteOperation.Update>([
|
|
96
|
-
...this.data,
|
|
97
|
-
this.withAlias(
|
|
98
|
-
{
|
|
99
|
-
upsert: {
|
|
100
|
-
by: where,
|
|
101
|
-
update: resolvedUpdate || {},
|
|
102
|
-
create: resolvedCreate || {},
|
|
103
|
-
},
|
|
104
|
-
},
|
|
105
|
-
alias,
|
|
106
|
-
),
|
|
107
|
-
])
|
|
108
|
-
) as WriteManyRelationBuilder.Builder<WriteOperation.Update>
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
private withAlias<
|
|
112
|
-
D extends Input.CreateOneRelationInput<GraphQlLiteral> | Input.UpdateManyRelationInputItem<GraphQlLiteral>,
|
|
113
|
-
>(data: D, alias?: string): D {
|
|
114
|
-
if (alias !== undefined) {
|
|
115
|
-
data.alias = alias
|
|
116
|
-
}
|
|
117
|
-
return data
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
namespace WriteManyRelationBuilder {
|
|
122
|
-
export interface DataFormat {
|
|
123
|
-
create: Input.CreateManyRelationInput<GraphQlLiteral>
|
|
124
|
-
update: Input.UpdateManyRelationInput<GraphQlLiteral>
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
export type Builder<
|
|
128
|
-
Op extends WriteOperation.ContentfulOperation,
|
|
129
|
-
Allowed extends WriteRelationOps[Op['op']] = WriteRelationOps[Op['op']],
|
|
130
|
-
> = Omit<
|
|
131
|
-
WriteManyRelationBuilder<Op, Allowed>,
|
|
132
|
-
Exclude<WriteRelationOps[WriteOperation.ContentfulOperation['op']], Allowed>
|
|
133
|
-
>
|
|
134
|
-
|
|
135
|
-
export type BuilderFactory<
|
|
136
|
-
Op extends WriteOperation.ContentfulOperation,
|
|
137
|
-
Allowed extends WriteRelationOps[Op['op']] = WriteRelationOps[Op['op']],
|
|
138
|
-
> = DataFormat[Op['op']] | Builder<Op, never> | ((builder: Builder<Op, Allowed>) => Builder<Op, never>)
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
export { WriteManyRelationBuilder }
|