@commitspark/graphql-api 0.10.0 → 0.11.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.
- package/CHANGELOG.md +4 -0
- package/README.md +96 -85
- package/dist/graphql/field-resolver/entry-reference-resolver.d.ts +3 -2
- package/dist/graphql/field-resolver/entry-reference-resolver.js.map +1 -1
- package/dist/graphql/field-resolver/field-default-value-resolver.d.ts +2 -2
- package/dist/graphql/field-resolver/field-default-value-resolver.js.map +1 -1
- package/dist/graphql/field-resolver/fieldResolver.d.ts +2 -2
- package/dist/graphql/field-resolver/union-value-resolver.d.ts +2 -2
- package/dist/graphql/field-resolver/union-value-resolver.js.map +1 -1
- package/dist/graphql/queries-mutations-generator.service.d.ts +6 -6
- package/dist/graphql/queries-mutations-generator.service.js +6 -6
- package/dist/graphql/queries-mutations-generator.service.js.map +1 -1
- package/dist/graphql/resolver-generators/mutation-create-resolver-generator.d.ts +3 -2
- package/dist/graphql/resolver-generators/mutation-create-resolver-generator.js +1 -1
- package/dist/graphql/resolver-generators/mutation-create-resolver-generator.js.map +1 -1
- package/dist/graphql/resolver-generators/mutation-delete-resolver-generator.d.ts +3 -2
- package/dist/graphql/resolver-generators/mutation-delete-resolver-generator.js +1 -1
- package/dist/graphql/resolver-generators/mutation-delete-resolver-generator.js.map +1 -1
- package/dist/graphql/resolver-generators/mutation-update-resolver-generator.d.ts +3 -2
- package/dist/graphql/resolver-generators/mutation-update-resolver-generator.js +1 -1
- package/dist/graphql/resolver-generators/mutation-update-resolver-generator.js.map +1 -1
- package/dist/graphql/resolver-generators/object-type-field-default-value-resolver-generator.d.ts +2 -2
- package/dist/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js.map +1 -1
- package/dist/graphql/resolver-generators/query-all-resolver-generator.d.ts +3 -2
- package/dist/graphql/resolver-generators/query-all-resolver-generator.js.map +1 -1
- package/dist/graphql/resolver-generators/query-by-id-resolver-generator.d.ts +3 -2
- package/dist/graphql/resolver-generators/query-by-id-resolver-generator.js.map +1 -1
- package/dist/graphql/schema-utils/union-type-util.d.ts +2 -2
- package/dist/persistence/persistence.service.d.ts +4 -8
- package/dist/persistence/persistence.service.js +8 -8
- package/dist/persistence/persistence.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/graphql/field-resolver/entry-reference-resolver.ts +5 -7
- package/src/graphql/field-resolver/field-default-value-resolver.ts +4 -4
- package/src/graphql/field-resolver/fieldResolver.ts +2 -2
- package/src/graphql/field-resolver/union-value-resolver.ts +5 -5
- package/src/graphql/queries-mutations-generator.service.ts +17 -17
- package/src/graphql/resolver-generators/mutation-create-resolver-generator.ts +9 -11
- package/src/graphql/resolver-generators/mutation-delete-resolver-generator.ts +7 -10
- package/src/graphql/resolver-generators/mutation-update-resolver-generator.ts +9 -12
- package/src/graphql/resolver-generators/object-type-field-default-value-resolver-generator.ts +5 -5
- package/src/graphql/resolver-generators/query-all-resolver-generator.ts +4 -6
- package/src/graphql/resolver-generators/query-by-id-resolver-generator.ts +4 -6
- package/src/graphql/schema-generator.service.ts +2 -2
- package/src/graphql/schema-utils/union-type-util.ts +2 -2
- package/src/persistence/persistence.service.ts +12 -25
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { GraphQLFieldResolver } from 'graphql/type/definition'
|
|
2
|
-
import {
|
|
2
|
+
import { EntryData } from '@commitspark/git-adapter'
|
|
3
3
|
import { GitAdapter } from '@commitspark/git-adapter'
|
|
4
4
|
|
|
5
5
|
export interface FieldResolverContext {
|
|
@@ -11,7 +11,7 @@ export interface FieldResolver<
|
|
|
11
11
|
TSource,
|
|
12
12
|
TContext = FieldResolverContext,
|
|
13
13
|
TArgs = any,
|
|
14
|
-
TResult = Promise<ResolvedEntryData<
|
|
14
|
+
TResult = Promise<ResolvedEntryData<EntryData | EntryData[] | null>>,
|
|
15
15
|
> {
|
|
16
16
|
resolve: GraphQLFieldResolver<TSource, TContext, TArgs, TResult>
|
|
17
17
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { GraphQLFieldResolver } from 'graphql/type/definition'
|
|
2
|
-
import {
|
|
2
|
+
import { EntryData } from '@commitspark/git-adapter'
|
|
3
3
|
import {
|
|
4
4
|
FieldResolver,
|
|
5
5
|
ResolvedEntryData,
|
|
@@ -12,7 +12,7 @@ export class UnionValueResolver implements FieldResolver<any> {
|
|
|
12
12
|
any,
|
|
13
13
|
FieldResolverContext,
|
|
14
14
|
any,
|
|
15
|
-
Promise<ResolvedEntryData<
|
|
15
|
+
Promise<ResolvedEntryData<EntryData | EntryData[] | null>>
|
|
16
16
|
>
|
|
17
17
|
|
|
18
18
|
constructor(private readonly unionTypeUtil: UnionTypeUtil) {
|
|
@@ -21,13 +21,13 @@ export class UnionValueResolver implements FieldResolver<any> {
|
|
|
21
21
|
args,
|
|
22
22
|
context,
|
|
23
23
|
info,
|
|
24
|
-
): Promise<ResolvedEntryData<
|
|
24
|
+
): Promise<ResolvedEntryData<EntryData | EntryData[] | null>> =>
|
|
25
25
|
this.resolveFieldValue(fieldValue)
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
private resolveFieldValue(
|
|
29
29
|
fieldValue: any,
|
|
30
|
-
): Promise<ResolvedEntryData<
|
|
30
|
+
): Promise<ResolvedEntryData<EntryData | EntryData[] | null>> {
|
|
31
31
|
const typeName =
|
|
32
32
|
this.unionTypeUtil.getUnionTypeNameFromFieldValue(fieldValue)
|
|
33
33
|
const unionValue = this.unionTypeUtil.getUnionValue(fieldValue)
|
|
@@ -36,7 +36,7 @@ export class UnionValueResolver implements FieldResolver<any> {
|
|
|
36
36
|
// with this actual data and add a `__typename` field, so that our output data
|
|
37
37
|
// corresponds to the output schema provided by the user (i.e. there is
|
|
38
38
|
// no additional nesting level there).
|
|
39
|
-
const res:
|
|
39
|
+
const res: EntryData = {
|
|
40
40
|
...unionValue,
|
|
41
41
|
__typename: typeName,
|
|
42
42
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EntryData } from '@commitspark/git-adapter'
|
|
2
2
|
import { ApolloContext } from '../app/api.service'
|
|
3
3
|
import { GraphQLFieldResolver } from 'graphql/type/definition'
|
|
4
4
|
import { GraphQLObjectType } from 'graphql/type'
|
|
@@ -33,7 +33,7 @@ export class QueriesMutationsGeneratorService {
|
|
|
33
33
|
any,
|
|
34
34
|
ApolloContext,
|
|
35
35
|
any,
|
|
36
|
-
Promise<
|
|
36
|
+
Promise<EntryData[]>
|
|
37
37
|
> = this.queryAllResolverGenerator.createResolver(typeName)
|
|
38
38
|
|
|
39
39
|
const queryAllMetaName = `_${queryAllName}Meta`
|
|
@@ -51,7 +51,7 @@ export class QueriesMutationsGeneratorService {
|
|
|
51
51
|
any,
|
|
52
52
|
ApolloContext,
|
|
53
53
|
any,
|
|
54
|
-
Promise<
|
|
54
|
+
Promise<EntryData>
|
|
55
55
|
> = this.queryByIdResolverGenerator.createResolver(typeName)
|
|
56
56
|
|
|
57
57
|
const inputTypeName = `${typeName}Input`
|
|
@@ -61,7 +61,7 @@ export class QueriesMutationsGeneratorService {
|
|
|
61
61
|
any,
|
|
62
62
|
ApolloContext,
|
|
63
63
|
any,
|
|
64
|
-
Promise<
|
|
64
|
+
Promise<EntryData>
|
|
65
65
|
> = this.mutationCreateResolverGenerator.createResolver(typeName)
|
|
66
66
|
|
|
67
67
|
const updateMutationName = `update${typeName}`
|
|
@@ -70,7 +70,7 @@ export class QueriesMutationsGeneratorService {
|
|
|
70
70
|
any,
|
|
71
71
|
ApolloContext,
|
|
72
72
|
any,
|
|
73
|
-
Promise<
|
|
73
|
+
Promise<EntryData>
|
|
74
74
|
> = this.mutationUpdateResolverGenerator.createResolver(typeName)
|
|
75
75
|
|
|
76
76
|
const deleteMutationName = `delete${typeName}`
|
|
@@ -79,7 +79,7 @@ export class QueriesMutationsGeneratorService {
|
|
|
79
79
|
any,
|
|
80
80
|
ApolloContext,
|
|
81
81
|
any,
|
|
82
|
-
Promise<
|
|
82
|
+
Promise<EntryData>
|
|
83
83
|
> = this.mutationDeleteResolverGenerator.createResolver(typeName)
|
|
84
84
|
|
|
85
85
|
return {
|
|
@@ -118,9 +118,9 @@ export class QueriesMutationsGeneratorService {
|
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
public generateTypeNameQuery(): IGeneratedQuery<Promise<string>> {
|
|
121
|
-
const
|
|
122
|
-
const
|
|
123
|
-
const
|
|
121
|
+
const entryTypeQueryName = '_typeName'
|
|
122
|
+
const entryTypeQueryString = `${entryTypeQueryName}(id: ID!): String`
|
|
123
|
+
const entryTypeQueryResolver: GraphQLFieldResolver<
|
|
124
124
|
any,
|
|
125
125
|
ApolloContext,
|
|
126
126
|
any,
|
|
@@ -128,20 +128,20 @@ export class QueriesMutationsGeneratorService {
|
|
|
128
128
|
> = this.queryTypeByIdResolverGenerator.createResolver()
|
|
129
129
|
|
|
130
130
|
return {
|
|
131
|
-
name:
|
|
132
|
-
schemaString:
|
|
133
|
-
resolver:
|
|
131
|
+
name: entryTypeQueryName,
|
|
132
|
+
schemaString: entryTypeQueryString,
|
|
133
|
+
resolver: entryTypeQueryResolver,
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
137
|
|
|
138
138
|
export interface IGeneratedSchema {
|
|
139
|
-
queryAll: IGeneratedQuery<Promise<
|
|
139
|
+
queryAll: IGeneratedQuery<Promise<EntryData[]>>
|
|
140
140
|
queryAllMeta: IGeneratedQuery<Promise<TypeCount>>
|
|
141
|
-
queryById: IGeneratedQuery<Promise<
|
|
142
|
-
createMutation: IGeneratedQuery<Promise<
|
|
143
|
-
updateMutation: IGeneratedQuery<Promise<
|
|
144
|
-
deleteMutation: IGeneratedQuery<Promise<
|
|
141
|
+
queryById: IGeneratedQuery<Promise<EntryData>>
|
|
142
|
+
createMutation: IGeneratedQuery<Promise<EntryData>>
|
|
143
|
+
updateMutation: IGeneratedQuery<Promise<EntryData>>
|
|
144
|
+
deleteMutation: IGeneratedQuery<Promise<EntryData>>
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
export interface IGeneratedQuery<T> {
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { GraphQLFieldResolver } from 'graphql/type/definition'
|
|
2
2
|
import { ApolloContext } from '../../app/api.service'
|
|
3
|
-
import {
|
|
4
|
-
Entry,
|
|
5
|
-
PersistenceService,
|
|
6
|
-
} from '../../persistence/persistence.service'
|
|
3
|
+
import { PersistenceService } from '../../persistence/persistence.service'
|
|
7
4
|
import { GraphQLError } from 'graphql/error/GraphQLError'
|
|
8
5
|
import { EntryReferenceUtil } from '../schema-utils/entry-reference-util'
|
|
9
6
|
import { isObjectType } from 'graphql'
|
|
10
7
|
import {
|
|
11
|
-
|
|
8
|
+
EntryDraft,
|
|
9
|
+
EntryData,
|
|
12
10
|
ENTRY_ID_INVALID_CHARACTERS,
|
|
13
11
|
} from '@commitspark/git-adapter'
|
|
14
12
|
|
|
@@ -20,13 +18,13 @@ export class MutationCreateResolverGenerator {
|
|
|
20
18
|
|
|
21
19
|
public createResolver(
|
|
22
20
|
typeName: string,
|
|
23
|
-
): GraphQLFieldResolver<any, ApolloContext, any, Promise<
|
|
21
|
+
): GraphQLFieldResolver<any, ApolloContext, any, Promise<EntryData>> {
|
|
24
22
|
return async (
|
|
25
23
|
source,
|
|
26
24
|
args,
|
|
27
25
|
context: ApolloContext,
|
|
28
26
|
info,
|
|
29
|
-
): Promise<
|
|
27
|
+
): Promise<EntryData> => {
|
|
30
28
|
if (!isObjectType(info.returnType)) {
|
|
31
29
|
throw new Error('Expected to create an ObjectType')
|
|
32
30
|
}
|
|
@@ -70,7 +68,7 @@ export class MutationCreateResolverGenerator {
|
|
|
70
68
|
args.data,
|
|
71
69
|
)
|
|
72
70
|
|
|
73
|
-
const referencedEntryUpdates:
|
|
71
|
+
const referencedEntryUpdates: EntryDraft[] = []
|
|
74
72
|
for (const referencedEntryId of referencedEntryIds) {
|
|
75
73
|
const referencedEntry = await this.persistence.findById(
|
|
76
74
|
context.gitAdapter,
|
|
@@ -81,7 +79,7 @@ export class MutationCreateResolverGenerator {
|
|
|
81
79
|
...(referencedEntry.metadata.referencedBy ?? []),
|
|
82
80
|
args.id,
|
|
83
81
|
].sort()
|
|
84
|
-
const newReferencedEntryDraft:
|
|
82
|
+
const newReferencedEntryDraft: EntryDraft = {
|
|
85
83
|
...referencedEntry,
|
|
86
84
|
metadata: {
|
|
87
85
|
...referencedEntry.metadata,
|
|
@@ -92,7 +90,7 @@ export class MutationCreateResolverGenerator {
|
|
|
92
90
|
referencedEntryUpdates.push(newReferencedEntryDraft)
|
|
93
91
|
}
|
|
94
92
|
|
|
95
|
-
const newEntryDraft:
|
|
93
|
+
const newEntryDraft: EntryDraft = {
|
|
96
94
|
id: args.id,
|
|
97
95
|
metadata: {
|
|
98
96
|
type: typeName,
|
|
@@ -105,7 +103,7 @@ export class MutationCreateResolverGenerator {
|
|
|
105
103
|
const commit = await context.gitAdapter.createCommit({
|
|
106
104
|
ref: context.branch,
|
|
107
105
|
parentSha: context.getCurrentRef(),
|
|
108
|
-
|
|
106
|
+
entries: [newEntryDraft, ...referencedEntryUpdates],
|
|
109
107
|
message: args.message,
|
|
110
108
|
})
|
|
111
109
|
context.setCurrentRef(commit.ref)
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Entry,
|
|
3
|
-
PersistenceService,
|
|
4
|
-
} from '../../persistence/persistence.service'
|
|
1
|
+
import { PersistenceService } from '../../persistence/persistence.service'
|
|
5
2
|
import { GraphQLFieldResolver } from 'graphql/type/definition'
|
|
6
3
|
import { ApolloContext } from '../../app/api.service'
|
|
7
4
|
import { GraphQLError } from 'graphql/error/GraphQLError'
|
|
8
|
-
import {
|
|
5
|
+
import { Entry, EntryData, EntryDraft } from '@commitspark/git-adapter'
|
|
9
6
|
import { EntryReferenceUtil } from '../schema-utils/entry-reference-util'
|
|
10
7
|
import { isObjectType } from 'graphql'
|
|
11
8
|
|
|
@@ -17,14 +14,14 @@ export class MutationDeleteResolverGenerator {
|
|
|
17
14
|
|
|
18
15
|
public createResolver(
|
|
19
16
|
typeName: string,
|
|
20
|
-
): GraphQLFieldResolver<any, ApolloContext, any, Promise<
|
|
17
|
+
): GraphQLFieldResolver<any, ApolloContext, any, Promise<EntryData>> {
|
|
21
18
|
return async (
|
|
22
19
|
source,
|
|
23
20
|
args,
|
|
24
21
|
context: ApolloContext,
|
|
25
22
|
info,
|
|
26
|
-
): Promise<
|
|
27
|
-
const entry:
|
|
23
|
+
): Promise<EntryData> => {
|
|
24
|
+
const entry: Entry = await this.persistence.findByTypeId(
|
|
28
25
|
context.gitAdapter,
|
|
29
26
|
context.getCurrentRef(),
|
|
30
27
|
typeName,
|
|
@@ -62,7 +59,7 @@ export class MutationDeleteResolverGenerator {
|
|
|
62
59
|
entryType,
|
|
63
60
|
entry.data,
|
|
64
61
|
)
|
|
65
|
-
const referencedEntryUpdates:
|
|
62
|
+
const referencedEntryUpdates: EntryDraft[] = []
|
|
66
63
|
for (const referencedEntryId of referencedEntryIds) {
|
|
67
64
|
const noLongerReferencedEntry = await this.persistence.findById(
|
|
68
65
|
context.gitAdapter,
|
|
@@ -84,7 +81,7 @@ export class MutationDeleteResolverGenerator {
|
|
|
84
81
|
const commit = await context.gitAdapter.createCommit({
|
|
85
82
|
ref: context.branch,
|
|
86
83
|
parentSha: context.getCurrentRef(),
|
|
87
|
-
|
|
84
|
+
entries: [
|
|
88
85
|
{
|
|
89
86
|
...entry,
|
|
90
87
|
deletion: true,
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Entry,
|
|
3
|
-
PersistenceService,
|
|
4
|
-
} from '../../persistence/persistence.service'
|
|
1
|
+
import { PersistenceService } from '../../persistence/persistence.service'
|
|
5
2
|
import { GraphQLFieldResolver } from 'graphql/type/definition'
|
|
6
3
|
import { ApolloContext } from '../../app/api.service'
|
|
7
4
|
import { EntryReferenceUtil } from '../schema-utils/entry-reference-util'
|
|
8
5
|
import { isObjectType } from 'graphql'
|
|
9
|
-
import {
|
|
6
|
+
import { EntryData, EntryDraft } from '@commitspark/git-adapter'
|
|
10
7
|
|
|
11
8
|
export class MutationUpdateResolverGenerator {
|
|
12
9
|
constructor(
|
|
@@ -16,13 +13,13 @@ export class MutationUpdateResolverGenerator {
|
|
|
16
13
|
|
|
17
14
|
public createResolver(
|
|
18
15
|
typeName: string,
|
|
19
|
-
): GraphQLFieldResolver<any, ApolloContext, any, Promise<
|
|
16
|
+
): GraphQLFieldResolver<any, ApolloContext, any, Promise<EntryData>> {
|
|
20
17
|
return async (
|
|
21
18
|
source,
|
|
22
19
|
args,
|
|
23
20
|
context: ApolloContext,
|
|
24
21
|
info,
|
|
25
|
-
): Promise<
|
|
22
|
+
): Promise<EntryData> => {
|
|
26
23
|
if (!isObjectType(info.returnType)) {
|
|
27
24
|
throw new Error('Expected to update an ObjectType')
|
|
28
25
|
}
|
|
@@ -60,7 +57,7 @@ export class MutationUpdateResolverGenerator {
|
|
|
60
57
|
(entryId) => !existingReferencedEntryIds.includes(entryId),
|
|
61
58
|
)
|
|
62
59
|
|
|
63
|
-
const referencedEntryUpdates:
|
|
60
|
+
const referencedEntryUpdates: EntryDraft[] = []
|
|
64
61
|
for (const noLongerReferencedEntryId of noLongerReferencedIds) {
|
|
65
62
|
const noLongerReferencedEntry = await this.persistence.findById(
|
|
66
63
|
context.gitAdapter,
|
|
@@ -101,7 +98,7 @@ export class MutationUpdateResolverGenerator {
|
|
|
101
98
|
const commit = await context.gitAdapter.createCommit({
|
|
102
99
|
ref: context.branch,
|
|
103
100
|
parentSha: context.getCurrentRef(),
|
|
104
|
-
|
|
101
|
+
entries: [
|
|
105
102
|
{ ...existingEntry, data: mergedData, deletion: false },
|
|
106
103
|
...referencedEntryUpdates,
|
|
107
104
|
],
|
|
@@ -120,9 +117,9 @@ export class MutationUpdateResolverGenerator {
|
|
|
120
117
|
}
|
|
121
118
|
|
|
122
119
|
private mergeData(
|
|
123
|
-
existingEntryData:
|
|
124
|
-
updateData:
|
|
125
|
-
):
|
|
120
|
+
existingEntryData: EntryData,
|
|
121
|
+
updateData: EntryData,
|
|
122
|
+
): EntryData {
|
|
126
123
|
return {
|
|
127
124
|
...existingEntryData,
|
|
128
125
|
...updateData,
|
package/src/graphql/resolver-generators/object-type-field-default-value-resolver-generator.ts
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
GraphQLOutputType,
|
|
4
4
|
} from 'graphql/type/definition'
|
|
5
5
|
import { ApolloContext } from '../../app/api.service'
|
|
6
|
-
import {
|
|
6
|
+
import { EntryData } from '@commitspark/git-adapter'
|
|
7
7
|
import {
|
|
8
8
|
GraphQLField,
|
|
9
9
|
GraphQLObjectType,
|
|
@@ -31,7 +31,7 @@ export class ObjectTypeFieldDefaultValueResolverGenerator {
|
|
|
31
31
|
any,
|
|
32
32
|
ApolloContext,
|
|
33
33
|
any,
|
|
34
|
-
Promise<ResolvedEntryData<
|
|
34
|
+
Promise<ResolvedEntryData<EntryData | EntryData[] | null>>
|
|
35
35
|
>
|
|
36
36
|
>
|
|
37
37
|
> {
|
|
@@ -43,7 +43,7 @@ export class ObjectTypeFieldDefaultValueResolverGenerator {
|
|
|
43
43
|
any,
|
|
44
44
|
ApolloContext,
|
|
45
45
|
any,
|
|
46
|
-
Promise<ResolvedEntryData<
|
|
46
|
+
Promise<ResolvedEntryData<EntryData | EntryData[] | null>>
|
|
47
47
|
>
|
|
48
48
|
>
|
|
49
49
|
> = {}
|
|
@@ -62,7 +62,7 @@ export class ObjectTypeFieldDefaultValueResolverGenerator {
|
|
|
62
62
|
any,
|
|
63
63
|
ApolloContext,
|
|
64
64
|
any,
|
|
65
|
-
Promise<ResolvedEntryData<
|
|
65
|
+
Promise<ResolvedEntryData<EntryData | EntryData[] | null>>
|
|
66
66
|
>
|
|
67
67
|
> = {}
|
|
68
68
|
for (const field of fieldsForCustomDefaultValueResolver) {
|
|
@@ -71,7 +71,7 @@ export class ObjectTypeFieldDefaultValueResolverGenerator {
|
|
|
71
71
|
args,
|
|
72
72
|
context,
|
|
73
73
|
info,
|
|
74
|
-
): Promise<ResolvedEntryData<
|
|
74
|
+
): Promise<ResolvedEntryData<EntryData | EntryData[] | null>> =>
|
|
75
75
|
this.fieldDefaultValueResolver.resolve(
|
|
76
76
|
field.name in obj ? obj[field.name] : undefined,
|
|
77
77
|
args,
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { ApolloContext } from '../../app/api.service'
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
PersistenceService,
|
|
5
|
-
} from '../../persistence/persistence.service'
|
|
2
|
+
import { EntryData } from '@commitspark/git-adapter'
|
|
3
|
+
import { PersistenceService } from '../../persistence/persistence.service'
|
|
6
4
|
import { GraphQLFieldResolver } from 'graphql/type/definition'
|
|
7
5
|
|
|
8
6
|
export class QueryAllResolverGenerator {
|
|
@@ -10,13 +8,13 @@ export class QueryAllResolverGenerator {
|
|
|
10
8
|
|
|
11
9
|
public createResolver(
|
|
12
10
|
typeName: string,
|
|
13
|
-
): GraphQLFieldResolver<any, ApolloContext, any, Promise<
|
|
11
|
+
): GraphQLFieldResolver<any, ApolloContext, any, Promise<EntryData[]>> {
|
|
14
12
|
return async (
|
|
15
13
|
obj,
|
|
16
14
|
args,
|
|
17
15
|
context: ApolloContext,
|
|
18
16
|
info,
|
|
19
|
-
): Promise<
|
|
17
|
+
): Promise<EntryData[]> => {
|
|
20
18
|
const entries = await this.persistence.findByType(
|
|
21
19
|
context.gitAdapter,
|
|
22
20
|
context.getCurrentRef(),
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
PersistenceService,
|
|
4
|
-
} from '../../persistence/persistence.service'
|
|
1
|
+
import { EntryData } from '@commitspark/git-adapter'
|
|
2
|
+
import { PersistenceService } from '../../persistence/persistence.service'
|
|
5
3
|
import { GraphQLFieldResolver } from 'graphql/type/definition'
|
|
6
4
|
import { ApolloContext } from '../../app/api.service'
|
|
7
5
|
|
|
@@ -10,8 +8,8 @@ export class QueryByIdResolverGenerator {
|
|
|
10
8
|
|
|
11
9
|
public createResolver(
|
|
12
10
|
typeName: string,
|
|
13
|
-
): GraphQLFieldResolver<any, ApolloContext, any, Promise<
|
|
14
|
-
return async (obj, args, context, info): Promise<
|
|
11
|
+
): GraphQLFieldResolver<any, ApolloContext, any, Promise<EntryData>> {
|
|
12
|
+
return async (obj, args, context, info): Promise<EntryData> => {
|
|
15
13
|
const entry = await this.persistence.findByTypeId(
|
|
16
14
|
context.gitAdapter,
|
|
17
15
|
context.getCurrentRef(),
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
GraphQLTypeResolver,
|
|
15
15
|
} from 'graphql/type/definition'
|
|
16
16
|
import { SchemaValidator } from './schema-validator'
|
|
17
|
-
import {
|
|
17
|
+
import { EntryData } from '@commitspark/git-adapter'
|
|
18
18
|
import { ObjectTypeFieldDefaultValueResolverGenerator } from './resolver-generators/object-type-field-default-value-resolver-generator'
|
|
19
19
|
|
|
20
20
|
export class SchemaGeneratorService {
|
|
@@ -65,7 +65,7 @@ export class SchemaGeneratorService {
|
|
|
65
65
|
Record<string, any>,
|
|
66
66
|
ApolloContext,
|
|
67
67
|
any,
|
|
68
|
-
Promise<
|
|
68
|
+
Promise<EntryData | EntryData[] | null>
|
|
69
69
|
>
|
|
70
70
|
>
|
|
71
71
|
> = {}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EntryData } from '@commitspark/git-adapter'
|
|
2
2
|
|
|
3
3
|
export class UnionTypeUtil {
|
|
4
4
|
public getUnionTypeNameFromFieldValue(fieldValue: any): string {
|
|
@@ -12,7 +12,7 @@ export class UnionTypeUtil {
|
|
|
12
12
|
return firstKey.slice(0, 1).toUpperCase() + firstKey.slice(1)
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
public getUnionValue(fieldValue: any):
|
|
15
|
+
public getUnionValue(fieldValue: any): EntryData {
|
|
16
16
|
if (typeof fieldValue !== 'object') {
|
|
17
17
|
throw new Error('Expected object as union value')
|
|
18
18
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Entry, GitAdapter } from '@commitspark/git-adapter'
|
|
2
2
|
import { GraphQLError } from 'graphql/error/GraphQLError'
|
|
3
3
|
|
|
4
4
|
export class PersistenceService {
|
|
@@ -7,10 +7,8 @@ export class PersistenceService {
|
|
|
7
7
|
commitHash: string,
|
|
8
8
|
id: string,
|
|
9
9
|
): Promise<string> {
|
|
10
|
-
const allEntries = await gitAdapter.
|
|
11
|
-
const requestedEntry = allEntries.find(
|
|
12
|
-
(contentEntry: ContentEntry) => contentEntry.id === id,
|
|
13
|
-
)
|
|
10
|
+
const allEntries = await gitAdapter.getEntries(commitHash)
|
|
11
|
+
const requestedEntry = allEntries.find((entry: Entry) => entry.id === id)
|
|
14
12
|
if (requestedEntry === undefined) {
|
|
15
13
|
throw new GraphQLError(`Not found: ${id}`, {
|
|
16
14
|
extensions: {
|
|
@@ -26,11 +24,9 @@ export class PersistenceService {
|
|
|
26
24
|
gitAdapter: GitAdapter,
|
|
27
25
|
commitHash: string,
|
|
28
26
|
id: string,
|
|
29
|
-
): Promise<
|
|
30
|
-
const allEntries = await gitAdapter.
|
|
31
|
-
const requestedEntry = allEntries.find(
|
|
32
|
-
(contentEntry: ContentEntry) => contentEntry.id === id,
|
|
33
|
-
)
|
|
27
|
+
): Promise<Entry> {
|
|
28
|
+
const allEntries = await gitAdapter.getEntries(commitHash)
|
|
29
|
+
const requestedEntry = allEntries.find((entry: Entry) => entry.id === id)
|
|
34
30
|
if (requestedEntry === undefined) {
|
|
35
31
|
throw new GraphQLError(`Not found: ${id}`, {
|
|
36
32
|
extensions: {
|
|
@@ -46,11 +42,9 @@ export class PersistenceService {
|
|
|
46
42
|
gitAdapter: GitAdapter,
|
|
47
43
|
commitHash: string,
|
|
48
44
|
type: string,
|
|
49
|
-
): Promise<
|
|
50
|
-
const allEntries = await gitAdapter.
|
|
51
|
-
return allEntries.filter(
|
|
52
|
-
(contentEntry: ContentEntry) => contentEntry.metadata.type === type,
|
|
53
|
-
)
|
|
45
|
+
): Promise<Entry[]> {
|
|
46
|
+
const allEntries = await gitAdapter.getEntries(commitHash)
|
|
47
|
+
return allEntries.filter((entry: Entry) => entry.metadata.type === type)
|
|
54
48
|
}
|
|
55
49
|
|
|
56
50
|
public async findByTypeId(
|
|
@@ -58,11 +52,10 @@ export class PersistenceService {
|
|
|
58
52
|
commitHash: string,
|
|
59
53
|
type: string,
|
|
60
54
|
id: string,
|
|
61
|
-
): Promise<
|
|
62
|
-
const allEntries = await gitAdapter.
|
|
55
|
+
): Promise<Entry> {
|
|
56
|
+
const allEntries = await gitAdapter.getEntries(commitHash)
|
|
63
57
|
const requestedEntry = allEntries.find(
|
|
64
|
-
(
|
|
65
|
-
contentEntry.id === id && contentEntry.metadata.type === type,
|
|
58
|
+
(entry: Entry) => entry.id === id && entry.metadata.type === type,
|
|
66
59
|
)
|
|
67
60
|
if (requestedEntry === undefined) {
|
|
68
61
|
throw new GraphQLError(
|
|
@@ -79,9 +72,3 @@ export class PersistenceService {
|
|
|
79
72
|
return requestedEntry
|
|
80
73
|
}
|
|
81
74
|
}
|
|
82
|
-
|
|
83
|
-
export interface CommitResult {
|
|
84
|
-
ref: string // commit sha
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
export type Entry = Record<string, unknown>
|