@commitspark/graphql-api 0.9.4 → 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.
Files changed (95) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +96 -85
  3. package/dist/container.js +21 -13
  4. package/dist/container.js.map +1 -1
  5. package/dist/graphql/field-resolver/entry-reference-resolver.d.ts +10 -0
  6. package/dist/graphql/field-resolver/entry-reference-resolver.js +15 -0
  7. package/dist/graphql/field-resolver/entry-reference-resolver.js.map +1 -0
  8. package/dist/graphql/field-resolver/field-default-value-resolver.d.ts +14 -0
  9. package/dist/graphql/field-resolver/field-default-value-resolver.js +73 -0
  10. package/dist/graphql/field-resolver/field-default-value-resolver.js.map +1 -0
  11. package/dist/graphql/field-resolver/fieldResolver.d.ts +11 -0
  12. package/dist/graphql/field-resolver/fieldResolver.js +3 -0
  13. package/dist/graphql/field-resolver/fieldResolver.js.map +1 -0
  14. package/dist/graphql/field-resolver/union-value-resolver.d.ts +10 -0
  15. package/dist/graphql/field-resolver/union-value-resolver.js +17 -0
  16. package/dist/graphql/field-resolver/union-value-resolver.js.map +1 -0
  17. package/dist/graphql/input-type-generator.service.d.ts +3 -3
  18. package/dist/graphql/input-type-generator.service.js +18 -7
  19. package/dist/graphql/input-type-generator.service.js.map +1 -1
  20. package/dist/graphql/queries-mutations-generator.service.d.ts +7 -7
  21. package/dist/graphql/queries-mutations-generator.service.js +6 -6
  22. package/dist/graphql/queries-mutations-generator.service.js.map +1 -1
  23. package/dist/graphql/resolver-generators/mutation-create-resolver-generator.d.ts +6 -3
  24. package/dist/graphql/resolver-generators/mutation-create-resolver-generator.js +46 -4
  25. package/dist/graphql/resolver-generators/mutation-create-resolver-generator.js.map +1 -1
  26. package/dist/graphql/resolver-generators/mutation-delete-resolver-generator.d.ts +6 -3
  27. package/dist/graphql/resolver-generators/mutation-delete-resolver-generator.js +32 -9
  28. package/dist/graphql/resolver-generators/mutation-delete-resolver-generator.js.map +1 -1
  29. package/dist/graphql/resolver-generators/mutation-update-resolver-generator.d.ts +12 -0
  30. package/dist/graphql/resolver-generators/mutation-update-resolver-generator.js +53 -0
  31. package/dist/graphql/resolver-generators/mutation-update-resolver-generator.js.map +1 -0
  32. package/dist/graphql/resolver-generators/object-type-field-default-value-resolver-generator.d.ts +13 -0
  33. package/dist/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js +58 -0
  34. package/dist/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js.map +1 -0
  35. package/dist/graphql/resolver-generators/query-all-resolver-generator.d.ts +3 -2
  36. package/dist/graphql/resolver-generators/query-all-resolver-generator.js +4 -1
  37. package/dist/graphql/resolver-generators/query-all-resolver-generator.js.map +1 -1
  38. package/dist/graphql/resolver-generators/query-by-id-resolver-generator.d.ts +3 -2
  39. package/dist/graphql/resolver-generators/query-by-id-resolver-generator.js +2 -1
  40. package/dist/graphql/resolver-generators/query-by-id-resolver-generator.js.map +1 -1
  41. package/dist/graphql/resolver-generators/union-type-resolver-generator.d.ts +4 -4
  42. package/dist/graphql/resolver-generators/union-type-resolver-generator.js +3 -3
  43. package/dist/graphql/resolver-generators/union-type-resolver-generator.js.map +1 -1
  44. package/dist/graphql/schema-analyzer.service.d.ts +1 -9
  45. package/dist/graphql/schema-analyzer.service.js +6 -17
  46. package/dist/graphql/schema-analyzer.service.js.map +1 -1
  47. package/dist/graphql/schema-generator.service.d.ts +3 -5
  48. package/dist/graphql/schema-generator.service.js +7 -12
  49. package/dist/graphql/schema-generator.service.js.map +1 -1
  50. package/dist/graphql/schema-utils/entry-reference-util.d.ts +12 -4
  51. package/dist/graphql/schema-utils/entry-reference-util.js +105 -21
  52. package/dist/graphql/schema-utils/entry-reference-util.js.map +1 -1
  53. package/dist/graphql/schema-utils/entry-type-util.d.ts +6 -0
  54. package/dist/graphql/schema-utils/entry-type-util.js +34 -0
  55. package/dist/graphql/schema-utils/entry-type-util.js.map +1 -0
  56. package/dist/graphql/schema-utils/union-type-util.d.ts +5 -0
  57. package/dist/graphql/schema-utils/union-type-util.js +21 -0
  58. package/dist/graphql/schema-utils/union-type-util.js.map +1 -0
  59. package/dist/persistence/persistence.service.d.ts +1 -8
  60. package/dist/persistence/persistence.service.js +22 -87
  61. package/dist/persistence/persistence.service.js.map +1 -1
  62. package/dist/tsconfig.build.tsbuildinfo +1 -1
  63. package/package.json +3 -3
  64. package/src/container.ts +29 -15
  65. package/src/graphql/field-resolver/entry-reference-resolver.ts +47 -0
  66. package/src/graphql/field-resolver/field-default-value-resolver.ts +154 -0
  67. package/src/graphql/field-resolver/fieldResolver.ts +19 -0
  68. package/src/graphql/field-resolver/union-value-resolver.ts +46 -0
  69. package/src/graphql/input-type-generator.service.ts +22 -8
  70. package/src/graphql/queries-mutations-generator.service.ts +18 -18
  71. package/src/graphql/resolver-generators/mutation-create-resolver-generator.ts +82 -19
  72. package/src/graphql/resolver-generators/mutation-delete-resolver-generator.ts +72 -27
  73. package/src/graphql/resolver-generators/mutation-update-resolver-generator.ts +128 -0
  74. package/src/graphql/resolver-generators/object-type-field-default-value-resolver-generator.ts +119 -0
  75. package/src/graphql/resolver-generators/query-all-resolver-generator.ts +9 -7
  76. package/src/graphql/resolver-generators/query-by-id-resolver-generator.ts +7 -7
  77. package/src/graphql/resolver-generators/union-type-resolver-generator.ts +5 -7
  78. package/src/graphql/schema-analyzer.service.ts +10 -24
  79. package/src/graphql/schema-generator.service.ts +13 -22
  80. package/src/graphql/schema-utils/entry-reference-util.ts +170 -30
  81. package/src/graphql/schema-utils/entry-type-util.ts +42 -0
  82. package/src/graphql/schema-utils/union-type-util.ts +23 -0
  83. package/src/persistence/persistence.service.ts +30 -142
  84. package/dist/graphql/resolver-generators/entry-reference-resolver.generator.d.ts +0 -12
  85. package/dist/graphql/resolver-generators/entry-reference-resolver.generator.js +0 -29
  86. package/dist/graphql/resolver-generators/entry-reference-resolver.generator.js.map +0 -1
  87. package/dist/graphql/resolver-generators/mutation-update.resolver-generator.d.ts +0 -8
  88. package/dist/graphql/resolver-generators/mutation-update.resolver-generator.js +0 -29
  89. package/dist/graphql/resolver-generators/mutation-update.resolver-generator.js.map +0 -1
  90. package/dist/graphql/resolver-generators/union-value-resolver-generator.d.ts +0 -13
  91. package/dist/graphql/resolver-generators/union-value-resolver-generator.js +0 -80
  92. package/dist/graphql/resolver-generators/union-value-resolver-generator.js.map +0 -1
  93. package/src/graphql/resolver-generators/entry-reference-resolver.generator.ts +0 -71
  94. package/src/graphql/resolver-generators/mutation-update.resolver-generator.ts +0 -59
  95. package/src/graphql/resolver-generators/union-value-resolver-generator.ts +0 -125
@@ -2,9 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.InputTypeGeneratorService = void 0;
4
4
  const graphql_1 = require("graphql");
5
+ const definition_1 = require("graphql/type/definition");
5
6
  class InputTypeGeneratorService {
6
- constructor(entryReferenceUtil) {
7
- this.entryReferenceUtil = entryReferenceUtil;
7
+ constructor(entryTypeUtil) {
8
+ this.entryTypeUtil = entryTypeUtil;
8
9
  }
9
10
  generateFieldInputTypeString(type) {
10
11
  if ((0, graphql_1.isListType)(type)) {
@@ -14,7 +15,7 @@ class InputTypeGeneratorService {
14
15
  return `${this.generateFieldInputTypeString(type.ofType)}!`;
15
16
  }
16
17
  else if ((0, graphql_1.isObjectType)(type)) {
17
- if (this.entryReferenceUtil.hasEntryDirective(type)) {
18
+ if (this.entryTypeUtil.hasEntryDirective(type)) {
18
19
  return `${type.name}IdInput`;
19
20
  }
20
21
  else {
@@ -25,7 +26,7 @@ class InputTypeGeneratorService {
25
26
  return '';
26
27
  }
27
28
  else if ((0, graphql_1.isUnionType)(type)) {
28
- if (this.entryReferenceUtil.buildsOnTypeWithEntryDirective(type)) {
29
+ if (this.entryTypeUtil.buildsOnTypeWithEntryDirective(type)) {
29
30
  return `${type.name}IdInput`;
30
31
  }
31
32
  else {
@@ -50,13 +51,23 @@ class InputTypeGeneratorService {
50
51
  const name = objectType.name;
51
52
  const inputTypeName = `${name}Input`;
52
53
  let inputType = `input ${inputTypeName} {\n`;
54
+ let inputTypeFieldStrings = '';
53
55
  for (const fieldsKey in objectType.getFields()) {
54
56
  const field = objectType.getFields()[fieldsKey];
55
- if (field.name === 'id') {
57
+ if (((0, graphql_1.isNonNullType)(field.type) &&
58
+ (0, definition_1.isScalarType)(field.type.ofType) &&
59
+ field.type.ofType.name === 'ID') ||
60
+ ((0, definition_1.isScalarType)(field.type) && field.type.name === 'ID')) {
56
61
  continue;
57
62
  }
58
63
  const inputTypeString = this.generateFieldInputTypeString(field.type);
59
- inputType += ` ${field.name}: ${inputTypeString}\n`;
64
+ inputTypeFieldStrings += ` ${field.name}: ${inputTypeString}\n`;
65
+ }
66
+ if (inputTypeFieldStrings.length > 0) {
67
+ inputType += `${inputTypeFieldStrings}`;
68
+ }
69
+ else {
70
+ inputType += ' _: Boolean\n';
60
71
  }
61
72
  inputType += '}\n';
62
73
  return inputType;
@@ -64,7 +75,7 @@ class InputTypeGeneratorService {
64
75
  }
65
76
  generateUnionInputTypeStrings(unionTypes) {
66
77
  const typeStrings = unionTypes.map((unionType) => {
67
- if (this.entryReferenceUtil.buildsOnTypeWithEntryDirective(unionType)) {
78
+ if (this.entryTypeUtil.buildsOnTypeWithEntryDirective(unionType)) {
68
79
  return '';
69
80
  }
70
81
  let unionInputType = `input ${unionType.name}Input @oneOf {\n`;
@@ -1 +1 @@
1
- {"version":3,"file":"input-type-generator.service.js","sourceRoot":"","sources":["../../src/graphql/input-type-generator.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input-type-generator.service.js","sourceRoot":"","sources":["../../src/graphql/input-type-generator.service.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- import { Entry } from '../persistence/persistence.service';
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';
5
5
  import { QueryAllResolverGenerator } from './resolver-generators/query-all-resolver-generator';
6
6
  import { QueryByIdResolverGenerator } from './resolver-generators/query-by-id-resolver-generator';
7
7
  import { MutationCreateResolverGenerator } from './resolver-generators/mutation-create-resolver-generator';
8
- import { MutationUpdateResolverGenerator } from './resolver-generators/mutation-update.resolver-generator';
8
+ import { MutationUpdateResolverGenerator } from './resolver-generators/mutation-update-resolver-generator';
9
9
  import { MutationDeleteResolverGenerator } from './resolver-generators/mutation-delete-resolver-generator';
10
10
  import { QueryCountAllResolverGenerator } from './resolver-generators/query-count-all-resolver-generator';
11
11
  import { QueryTypeByIdResolverGenerator } from './resolver-generators/query-type-by-id-resolver-generator';
@@ -22,12 +22,12 @@ export declare class QueriesMutationsGeneratorService {
22
22
  generateTypeNameQuery(): IGeneratedQuery<Promise<string>>;
23
23
  }
24
24
  export interface IGeneratedSchema {
25
- queryAll: IGeneratedQuery<Promise<Entry[]>>;
25
+ queryAll: IGeneratedQuery<Promise<EntryData[]>>;
26
26
  queryAllMeta: IGeneratedQuery<Promise<TypeCount>>;
27
- queryById: IGeneratedQuery<Promise<Entry>>;
28
- createMutation: IGeneratedQuery<Promise<Entry>>;
29
- updateMutation: IGeneratedQuery<Promise<Entry>>;
30
- deleteMutation: IGeneratedQuery<Promise<Entry>>;
27
+ queryById: IGeneratedQuery<Promise<EntryData>>;
28
+ createMutation: IGeneratedQuery<Promise<EntryData>>;
29
+ updateMutation: IGeneratedQuery<Promise<EntryData>>;
30
+ deleteMutation: IGeneratedQuery<Promise<EntryData>>;
31
31
  }
32
32
  export interface IGeneratedQuery<T> {
33
33
  name: string;
@@ -68,13 +68,13 @@ class QueriesMutationsGeneratorService {
68
68
  });
69
69
  }
70
70
  generateTypeNameQuery() {
71
- const contentTypeQueryName = '_typeName';
72
- const contentTypeQueryString = `${contentTypeQueryName}(id: ID!): String`;
73
- const contentTypeQueryResolver = this.queryTypeByIdResolverGenerator.createResolver();
71
+ const entryTypeQueryName = '_typeName';
72
+ const entryTypeQueryString = `${entryTypeQueryName}(id: ID!): String`;
73
+ const entryTypeQueryResolver = this.queryTypeByIdResolverGenerator.createResolver();
74
74
  return {
75
- name: contentTypeQueryName,
76
- schemaString: contentTypeQueryString,
77
- resolver: contentTypeQueryResolver,
75
+ name: entryTypeQueryName,
76
+ schemaString: entryTypeQueryString,
77
+ resolver: entryTypeQueryResolver,
78
78
  };
79
79
  }
80
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"queries-mutations-generator.service.js","sourceRoot":"","sources":["../../src/graphql/queries-mutations-generator.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queries-mutations-generator.service.js","sourceRoot":"","sources":["../../src/graphql/queries-mutations-generator.service.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,11 @@
1
1
  import { GraphQLFieldResolver } from 'graphql/type/definition';
2
2
  import { ApolloContext } from '../../app/api.service';
3
- import { Entry, PersistenceService } from '../../persistence/persistence.service';
3
+ import { PersistenceService } from '../../persistence/persistence.service';
4
+ import { EntryReferenceUtil } from '../schema-utils/entry-reference-util';
5
+ import { EntryData } from '@commitspark/git-adapter';
4
6
  export declare class MutationCreateResolverGenerator {
5
7
  private readonly persistence;
6
- constructor(persistence: PersistenceService);
7
- createResolver(typeName: string): GraphQLFieldResolver<any, ApolloContext, any, Promise<Entry>>;
8
+ private readonly entryReferenceUtil;
9
+ constructor(persistence: PersistenceService, entryReferenceUtil: EntryReferenceUtil);
10
+ createResolver(typeName: string): GraphQLFieldResolver<any, ApolloContext, any, Promise<EntryData>>;
8
11
  }
@@ -2,12 +2,28 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MutationCreateResolverGenerator = void 0;
4
4
  const GraphQLError_1 = require("graphql/error/GraphQLError");
5
+ const graphql_1 = require("graphql");
6
+ const git_adapter_1 = require("@commitspark/git-adapter");
5
7
  class MutationCreateResolverGenerator {
6
- constructor(persistence) {
8
+ constructor(persistence, entryReferenceUtil) {
7
9
  this.persistence = persistence;
10
+ this.entryReferenceUtil = entryReferenceUtil;
8
11
  }
9
12
  createResolver(typeName) {
10
13
  return async (source, args, context, info) => {
14
+ var _a;
15
+ if (!(0, graphql_1.isObjectType)(info.returnType)) {
16
+ throw new Error('Expected to create an ObjectType');
17
+ }
18
+ const idValidationResult = args.id.match(git_adapter_1.ENTRY_ID_INVALID_CHARACTERS);
19
+ if (idValidationResult) {
20
+ throw new GraphQLError_1.GraphQLError(`"id" contains invalid characters "${idValidationResult.join(', ')}"`, {
21
+ extensions: {
22
+ code: 'BAD_USER_INPUT',
23
+ argumentName: 'id',
24
+ },
25
+ });
26
+ }
11
27
  let existingEntry;
12
28
  try {
13
29
  existingEntry = await this.persistence.findById(context.gitAdapter, context.getCurrentRef(), args.id);
@@ -21,9 +37,35 @@ class MutationCreateResolverGenerator {
21
37
  },
22
38
  });
23
39
  }
24
- const commitResult = await this.persistence.createType(context.gitAdapter, context.branch, context.getCurrentRef(), typeName, args.id, args.data, args.message);
25
- context.setCurrentRef(commitResult.ref);
26
- return this.persistence.findByTypeId(context.gitAdapter, context.getCurrentRef(), typeName, args.id);
40
+ const referencedEntryIds = await this.entryReferenceUtil.getReferencedEntryIds(info.returnType, context, null, info.returnType, args.data);
41
+ const referencedEntryUpdates = [];
42
+ for (const referencedEntryId of referencedEntryIds) {
43
+ const referencedEntry = await this.persistence.findById(context.gitAdapter, context.getCurrentRef(), referencedEntryId);
44
+ const newReferencedEntryIds = [
45
+ ...((_a = referencedEntry.metadata.referencedBy) !== null && _a !== void 0 ? _a : []),
46
+ args.id,
47
+ ].sort();
48
+ const newReferencedEntryDraft = Object.assign(Object.assign({}, referencedEntry), { metadata: Object.assign(Object.assign({}, referencedEntry.metadata), { referencedBy: newReferencedEntryIds }), deletion: false });
49
+ referencedEntryUpdates.push(newReferencedEntryDraft);
50
+ }
51
+ const newEntryDraft = {
52
+ id: args.id,
53
+ metadata: {
54
+ type: typeName,
55
+ referencedBy: [],
56
+ },
57
+ data: args.data,
58
+ deletion: false,
59
+ };
60
+ const commit = await context.gitAdapter.createCommit({
61
+ ref: context.branch,
62
+ parentSha: context.getCurrentRef(),
63
+ entries: [newEntryDraft, ...referencedEntryUpdates],
64
+ message: args.message,
65
+ });
66
+ context.setCurrentRef(commit.ref);
67
+ const newEntry = await this.persistence.findByTypeId(context.gitAdapter, context.getCurrentRef(), typeName, args.id);
68
+ return Object.assign(Object.assign({}, newEntry.data), { id: newEntry.id });
27
69
  };
28
70
  }
29
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mutation-create-resolver-generator.js","sourceRoot":"","sources":["../../../src/graphql/resolver-generators/mutation-create-resolver-generator.ts"],"names":[],"mappings":";;;AAMA,6DAAyD;AAEzD,MAAa,+BAA+B;IAC1C,YAA6B,WAA+B;QAA/B,gBAAW,GAAX,WAAW,CAAoB;IAAG,CAAC;IAEzD,cAAc,CACnB,QAAgB;QAEhB,OAAO,KAAK,EACV,MAAM,EACN,IAAI,EACJ,OAAsB,EACtB,IAAI,EACY,EAAE;YAClB,IAAI,aAAa,CAAA;YACjB,IAAI;gBACF,aAAa,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAC7C,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,IAAI,CAAC,EAAE,CACR,CAAA;aACF;YAAC,OAAO,CAAC,EAAE,GAAE;YACd,IAAI,aAAa,EAAE;gBACjB,MAAM,IAAI,2BAAY,CAAC,qBAAqB,IAAI,CAAC,EAAE,kBAAkB,EAAE;oBACrE,UAAU,EAAE;wBACV,IAAI,EAAE,gBAAgB;wBACtB,YAAY,EAAE,IAAI;qBACnB;iBACF,CAAC,CAAA;aACH;YAGD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CACpD,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,aAAa,EAAE,EACvB,QAAQ,EACR,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO,CACb,CAAA;YACD,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YACvC,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAClC,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,QAAQ,EACR,IAAI,CAAC,EAAE,CACR,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF;AAhDD,0EAgDC"}
1
+ {"version":3,"file":"mutation-create-resolver-generator.js","sourceRoot":"","sources":["../../../src/graphql/resolver-generators/mutation-create-resolver-generator.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,11 @@
1
- import { Entry, PersistenceService } from '../../persistence/persistence.service';
1
+ import { PersistenceService } from '../../persistence/persistence.service';
2
2
  import { GraphQLFieldResolver } from 'graphql/type/definition';
3
3
  import { ApolloContext } from '../../app/api.service';
4
+ import { EntryData } from '@commitspark/git-adapter';
5
+ import { EntryReferenceUtil } from '../schema-utils/entry-reference-util';
4
6
  export declare class MutationDeleteResolverGenerator {
5
7
  private readonly persistence;
6
- constructor(persistence: PersistenceService);
7
- createResolver(typeName: string): GraphQLFieldResolver<any, ApolloContext, any, Promise<Entry>>;
8
+ private readonly entryReferenceUtil;
9
+ constructor(persistence: PersistenceService, entryReferenceUtil: EntryReferenceUtil);
10
+ createResolver(typeName: string): GraphQLFieldResolver<any, ApolloContext, any, Promise<EntryData>>;
8
11
  }
@@ -2,25 +2,48 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MutationDeleteResolverGenerator = void 0;
4
4
  const GraphQLError_1 = require("graphql/error/GraphQLError");
5
+ const graphql_1 = require("graphql");
5
6
  class MutationDeleteResolverGenerator {
6
- constructor(persistence) {
7
+ constructor(persistence, entryReferenceUtil) {
7
8
  this.persistence = persistence;
9
+ this.entryReferenceUtil = entryReferenceUtil;
8
10
  }
9
11
  createResolver(typeName) {
10
12
  return async (source, args, context, info) => {
11
- try {
12
- await this.persistence.findByTypeId(context.gitAdapter, context.getCurrentRef(), typeName, args.id);
13
- }
14
- catch (_) {
15
- throw new GraphQLError_1.GraphQLError(`No entry of type "${typeName}" with id "${args.id}" exists`, {
13
+ var _a;
14
+ const entry = await this.persistence.findByTypeId(context.gitAdapter, context.getCurrentRef(), typeName, args.id);
15
+ if (entry.metadata.referencedBy &&
16
+ entry.metadata.referencedBy.length > 0) {
17
+ const otherIds = entry.metadata.referencedBy
18
+ .map((referenceId) => `"${referenceId}"`)
19
+ .join(', ');
20
+ throw new GraphQLError_1.GraphQLError(`Entry with id "${args.id}" is referenced by other entries: [${otherIds}]`, {
16
21
  extensions: {
17
- code: 'BAD_USER_INPUT',
22
+ code: 'IN_USE',
18
23
  argumentName: 'id',
19
24
  },
20
25
  });
21
26
  }
22
- const deleteResult = await this.persistence.deleteByTypeId(context.gitAdapter, context.branch, context.getCurrentRef(), typeName, args.id, args.message);
23
- context.setCurrentRef(deleteResult.ref);
27
+ const entryType = info.schema.getType(typeName);
28
+ if (!(0, graphql_1.isObjectType)(entryType)) {
29
+ throw new Error('Expected to delete an ObjectType');
30
+ }
31
+ const referencedEntryIds = await this.entryReferenceUtil.getReferencedEntryIds(entryType, context, null, entryType, entry.data);
32
+ const referencedEntryUpdates = [];
33
+ for (const referencedEntryId of referencedEntryIds) {
34
+ const noLongerReferencedEntry = await this.persistence.findById(context.gitAdapter, context.getCurrentRef(), referencedEntryId);
35
+ referencedEntryUpdates.push(Object.assign(Object.assign({}, noLongerReferencedEntry), { metadata: Object.assign(Object.assign({}, noLongerReferencedEntry.metadata), { referencedBy: (_a = noLongerReferencedEntry.metadata.referencedBy) === null || _a === void 0 ? void 0 : _a.filter((entryId) => entryId !== args.id) }), deletion: false }));
36
+ }
37
+ const commit = await context.gitAdapter.createCommit({
38
+ ref: context.branch,
39
+ parentSha: context.getCurrentRef(),
40
+ entries: [
41
+ Object.assign(Object.assign({}, entry), { deletion: true }),
42
+ ...referencedEntryUpdates,
43
+ ],
44
+ message: args.message,
45
+ });
46
+ context.setCurrentRef(commit.ref);
24
47
  return {
25
48
  id: args.id,
26
49
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mutation-delete-resolver-generator.js","sourceRoot":"","sources":["../../../src/graphql/resolver-generators/mutation-delete-resolver-generator.ts"],"names":[],"mappings":";;;AAMA,6DAAyD;AAEzD,MAAa,+BAA+B;IAC1C,YAA6B,WAA+B;QAA/B,gBAAW,GAAX,WAAW,CAAoB;IAAG,CAAC;IAEzD,cAAc,CACnB,QAAgB;QAEhB,OAAO,KAAK,EACV,MAAM,EACN,IAAI,EACJ,OAAsB,EACtB,IAAI,EACY,EAAE;YAClB,IAAI;gBACF,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CACjC,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,QAAQ,EACR,IAAI,CAAC,EAAE,CACR,CAAA;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,IAAI,2BAAY,CACpB,qBAAqB,QAAQ,cAAc,IAAI,CAAC,EAAE,UAAU,EAC5D;oBACE,UAAU,EAAE;wBACV,IAAI,EAAE,gBAAgB;wBACtB,YAAY,EAAE,IAAI;qBACnB;iBACF,CACF,CAAA;aACF;YAGD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CACxD,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,aAAa,EAAE,EACvB,QAAQ,EACR,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,OAAO,CACb,CAAA;YACD,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YACvC,OAAO;gBACL,EAAE,EAAE,IAAI,CAAC,EAAE;aACZ,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF;AA9CD,0EA8CC"}
1
+ {"version":3,"file":"mutation-delete-resolver-generator.js","sourceRoot":"","sources":["../../../src/graphql/resolver-generators/mutation-delete-resolver-generator.ts"],"names":[],"mappings":";;;AAGA,6DAAyD;AAGzD,qCAAsC;AAEtC,MAAa,+BAA+B;IAC1C,YACmB,WAA+B,EAC/B,kBAAsC;QADtC,gBAAW,GAAX,WAAW,CAAoB;QAC/B,uBAAkB,GAAlB,kBAAkB,CAAoB;IACtD,CAAC;IAEG,cAAc,CACnB,QAAgB;QAEhB,OAAO,KAAK,EACV,MAAM,EACN,IAAI,EACJ,OAAsB,EACtB,IAAI,EACgB,EAAE;;YACtB,MAAM,KAAK,GAAU,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CACtD,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,QAAQ,EACR,IAAI,CAAC,EAAE,CACR,CAAA;YAED,IACE,KAAK,CAAC,QAAQ,CAAC,YAAY;gBAC3B,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EACtC;gBACA,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY;qBACzC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,WAAW,GAAG,CAAC;qBACxC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACb,MAAM,IAAI,2BAAY,CACpB,kBAAkB,IAAI,CAAC,EAAE,sCAAsC,QAAQ,GAAG,EAC1E;oBACE,UAAU,EAAE;wBACV,IAAI,EAAE,QAAQ;wBACd,YAAY,EAAE,IAAI;qBACnB;iBACF,CACF,CAAA;aACF;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YAC/C,IAAI,CAAC,IAAA,sBAAY,EAAC,SAAS,CAAC,EAAE;gBAC5B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;aACpD;YAED,MAAM,kBAAkB,GACtB,MAAM,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CACjD,SAAS,EACT,OAAO,EACP,IAAI,EACJ,SAAS,EACT,KAAK,CAAC,IAAI,CACX,CAAA;YACH,MAAM,sBAAsB,GAAiB,EAAE,CAAA;YAC/C,KAAK,MAAM,iBAAiB,IAAI,kBAAkB,EAAE;gBAClD,MAAM,uBAAuB,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAC7D,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,iBAAiB,CAClB,CAAA;gBACD,sBAAsB,CAAC,IAAI,iCACtB,uBAAuB,KAC1B,QAAQ,kCACH,uBAAuB,CAAC,QAAQ,KACnC,YAAY,EAAE,MAAA,uBAAuB,CAAC,QAAQ,CAAC,YAAY,0CAAE,MAAM,CACjE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE,CACjC,KAEH,QAAQ,EAAE,KAAK,IACf,CAAA;aACH;YAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC;gBACnD,GAAG,EAAE,OAAO,CAAC,MAAM;gBACnB,SAAS,EAAE,OAAO,CAAC,aAAa,EAAE;gBAClC,OAAO,EAAE;oDAEF,KAAK,KACR,QAAQ,EAAE,IAAI;oBAEhB,GAAG,sBAAsB;iBAC1B;gBACD,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAA;YACF,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAEjC,OAAO;gBACL,EAAE,EAAE,IAAI,CAAC,EAAE;aACZ,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF;AA3FD,0EA2FC"}
@@ -0,0 +1,12 @@
1
+ import { PersistenceService } from '../../persistence/persistence.service';
2
+ import { GraphQLFieldResolver } from 'graphql/type/definition';
3
+ import { ApolloContext } from '../../app/api.service';
4
+ import { EntryReferenceUtil } from '../schema-utils/entry-reference-util';
5
+ import { EntryData } from '@commitspark/git-adapter';
6
+ export declare class MutationUpdateResolverGenerator {
7
+ private readonly persistence;
8
+ private readonly entryReferenceUtil;
9
+ constructor(persistence: PersistenceService, entryReferenceUtil: EntryReferenceUtil);
10
+ createResolver(typeName: string): GraphQLFieldResolver<any, ApolloContext, any, Promise<EntryData>>;
11
+ private mergeData;
12
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MutationUpdateResolverGenerator = void 0;
4
+ const graphql_1 = require("graphql");
5
+ class MutationUpdateResolverGenerator {
6
+ constructor(persistence, entryReferenceUtil) {
7
+ this.persistence = persistence;
8
+ this.entryReferenceUtil = entryReferenceUtil;
9
+ }
10
+ createResolver(typeName) {
11
+ return async (source, args, context, info) => {
12
+ var _a, _b, _c;
13
+ if (!(0, graphql_1.isObjectType)(info.returnType)) {
14
+ throw new Error('Expected to update an ObjectType');
15
+ }
16
+ const existingEntry = await this.persistence.findByTypeId(context.gitAdapter, context.getCurrentRef(), typeName, args.id);
17
+ const existingReferencedEntryIds = await this.entryReferenceUtil.getReferencedEntryIds(info.returnType, context, null, info.returnType, existingEntry.data);
18
+ const mergedData = this.mergeData((_a = existingEntry.data) !== null && _a !== void 0 ? _a : null, args.data);
19
+ const updatedReferencedEntryIds = await this.entryReferenceUtil.getReferencedEntryIds(info.returnType, context, null, info.returnType, mergedData);
20
+ const noLongerReferencedIds = existingReferencedEntryIds.filter((entryId) => !updatedReferencedEntryIds.includes(entryId));
21
+ const newlyReferencedIds = updatedReferencedEntryIds.filter((entryId) => !existingReferencedEntryIds.includes(entryId));
22
+ const referencedEntryUpdates = [];
23
+ for (const noLongerReferencedEntryId of noLongerReferencedIds) {
24
+ const noLongerReferencedEntry = await this.persistence.findById(context.gitAdapter, context.getCurrentRef(), noLongerReferencedEntryId);
25
+ referencedEntryUpdates.push(Object.assign(Object.assign({}, noLongerReferencedEntry), { metadata: Object.assign(Object.assign({}, noLongerReferencedEntry.metadata), { referencedBy: (_b = noLongerReferencedEntry.metadata.referencedBy) === null || _b === void 0 ? void 0 : _b.filter((entryId) => entryId !== args.id) }), deletion: false }));
26
+ }
27
+ for (const newlyReferencedEntryId of newlyReferencedIds) {
28
+ const newlyReferencedEntry = await this.persistence.findById(context.gitAdapter, context.getCurrentRef(), newlyReferencedEntryId);
29
+ const updatedReferenceList = (_c = newlyReferencedEntry.metadata.referencedBy) !== null && _c !== void 0 ? _c : [];
30
+ updatedReferenceList.push(args.id);
31
+ updatedReferenceList.sort();
32
+ referencedEntryUpdates.push(Object.assign(Object.assign({}, newlyReferencedEntry), { metadata: Object.assign(Object.assign({}, newlyReferencedEntry.metadata), { referencedBy: updatedReferenceList }), deletion: false }));
33
+ }
34
+ const commit = await context.gitAdapter.createCommit({
35
+ ref: context.branch,
36
+ parentSha: context.getCurrentRef(),
37
+ entries: [
38
+ Object.assign(Object.assign({}, existingEntry), { data: mergedData, deletion: false }),
39
+ ...referencedEntryUpdates,
40
+ ],
41
+ message: args.message,
42
+ });
43
+ context.setCurrentRef(commit.ref);
44
+ const updatedEntry = await this.persistence.findByTypeId(context.gitAdapter, context.getCurrentRef(), typeName, args.id);
45
+ return Object.assign(Object.assign({}, updatedEntry.data), { id: updatedEntry.id });
46
+ };
47
+ }
48
+ mergeData(existingEntryData, updateData) {
49
+ return Object.assign(Object.assign({}, existingEntryData), updateData);
50
+ }
51
+ }
52
+ exports.MutationUpdateResolverGenerator = MutationUpdateResolverGenerator;
53
+ //# sourceMappingURL=mutation-update-resolver-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation-update-resolver-generator.js","sourceRoot":"","sources":["../../../src/graphql/resolver-generators/mutation-update-resolver-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { GraphQLFieldResolver } from 'graphql/type/definition';
2
+ import { ApolloContext } from '../../app/api.service';
3
+ import { EntryData } from '@commitspark/git-adapter';
4
+ import { GraphQLSchema } from 'graphql';
5
+ import { ResolvedEntryData } from '../field-resolver/fieldResolver';
6
+ import { FieldDefaultValueResolver } from '../field-resolver/field-default-value-resolver';
7
+ export declare class ObjectTypeFieldDefaultValueResolverGenerator {
8
+ private readonly fieldDefaultValueResolver;
9
+ constructor(fieldDefaultValueResolver: FieldDefaultValueResolver);
10
+ createResolver(schema: GraphQLSchema): Record<string, Record<string, GraphQLFieldResolver<any, ApolloContext, any, Promise<ResolvedEntryData<EntryData | EntryData[] | null>>>>>;
11
+ private getFieldsForCustomDefaultValueResolver;
12
+ private requiresCustomDefaultValueResolver;
13
+ }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ObjectTypeFieldDefaultValueResolverGenerator = void 0;
4
+ const graphql_1 = require("graphql");
5
+ class ObjectTypeFieldDefaultValueResolverGenerator {
6
+ constructor(fieldDefaultValueResolver) {
7
+ this.fieldDefaultValueResolver = fieldDefaultValueResolver;
8
+ }
9
+ createResolver(schema) {
10
+ const resolvers = {};
11
+ for (const typeName of Object.keys(schema.getTypeMap())) {
12
+ const type = schema.getType(typeName);
13
+ if (!(0, graphql_1.isObjectType)(type) || type.name.startsWith('__')) {
14
+ continue;
15
+ }
16
+ const objectType = type;
17
+ const fieldsForCustomDefaultValueResolver = this.getFieldsForCustomDefaultValueResolver(objectType);
18
+ const fieldResolvers = {};
19
+ for (const field of fieldsForCustomDefaultValueResolver) {
20
+ fieldResolvers[field.name] = (obj, args, context, info) => this.fieldDefaultValueResolver.resolve(field.name in obj ? obj[field.name] : undefined, args, {
21
+ gitAdapter: context.gitAdapter,
22
+ getCurrentRef: context.getCurrentRef,
23
+ }, info);
24
+ }
25
+ if (Object.keys(fieldResolvers).length > 0) {
26
+ resolvers[typeName] = fieldResolvers;
27
+ }
28
+ }
29
+ return resolvers;
30
+ }
31
+ getFieldsForCustomDefaultValueResolver(objectType) {
32
+ const fields = [];
33
+ for (const fieldsKey in objectType.getFields()) {
34
+ const field = objectType.getFields()[fieldsKey];
35
+ if (this.requiresCustomDefaultValueResolver(field.type)) {
36
+ fields.push(field);
37
+ }
38
+ }
39
+ return fields;
40
+ }
41
+ requiresCustomDefaultValueResolver(type) {
42
+ if ((0, graphql_1.isNonNullType)(type)) {
43
+ return this.requiresCustomDefaultValueResolver(type.ofType);
44
+ }
45
+ else if ((0, graphql_1.isListType)(type)) {
46
+ return true;
47
+ }
48
+ else if ((0, graphql_1.isUnionType)(type)) {
49
+ return true;
50
+ }
51
+ else if ((0, graphql_1.isObjectType)(type)) {
52
+ return true;
53
+ }
54
+ return false;
55
+ }
56
+ }
57
+ exports.ObjectTypeFieldDefaultValueResolverGenerator = ObjectTypeFieldDefaultValueResolverGenerator;
58
+ //# sourceMappingURL=object-type-field-default-value-resolver-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-type-field-default-value-resolver-generator.js","sourceRoot":"","sources":["../../../src/graphql/resolver-generators/object-type-field-default-value-resolver-generator.ts"],"names":[],"mappings":";;;AAMA,qCAQgB;AAIhB,MAAa,4CAA4C;IACvD,YACmB,yBAAoD;QAApD,8BAAyB,GAAzB,yBAAyB,CAA2B;IACpE,CAAC;IAEG,cAAc,CACnB,MAAqB;QAarB,MAAM,SAAS,GAWX,EAAE,CAAA;QACN,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE;YACvD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YACrC,IAAI,CAAC,IAAA,sBAAY,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACrD,SAAQ;aACT;YACD,MAAM,UAAU,GAAG,IAAyB,CAAA;YAC5C,MAAM,mCAAmC,GACvC,IAAI,CAAC,sCAAsC,CAAC,UAAU,CAAC,CAAA;YAEzD,MAAM,cAAc,GAQhB,EAAE,CAAA;YACN,KAAK,MAAM,KAAK,IAAI,mCAAmC,EAAE;gBACvD,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAC3B,GAAG,EACH,IAAI,EACJ,OAAO,EACP,IAAI,EACwD,EAAE,CAC9D,IAAI,CAAC,yBAAyB,CAAC,OAAO,CACpC,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAC/C,IAAI,EACJ;oBACE,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,aAAa,EAAE,OAAO,CAAC,aAAa;iBACrC,EACD,IAAI,CACL,CAAA;aACJ;YAED,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1C,SAAS,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAA;aACrC;SACF;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAEO,sCAAsC,CAC5C,UAA6B;QAE7B,MAAM,MAAM,GAAG,EAAE,CAAA;QACjB,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,SAAS,EAAE,EAAE;YAC9C,MAAM,KAAK,GAA2B,UAAU,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAA;YACvE,IAAI,IAAI,CAAC,kCAAkC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBACvD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;aACnB;SACF;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAEO,kCAAkC,CAAC,IAAuB;QAChE,IAAI,IAAA,uBAAa,EAAC,IAAI,CAAC,EAAE;YACvB,OAAO,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;SAC5D;aAAM,IAAI,IAAA,oBAAU,EAAC,IAAI,CAAC,EAAE;YAC3B,OAAO,IAAI,CAAA;SACZ;aAAM,IAAI,IAAA,qBAAW,EAAC,IAAI,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAA;SACZ;aAAM,IAAI,IAAA,sBAAY,EAAC,IAAI,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAA;SACZ;QACD,OAAO,KAAK,CAAA;IACd,CAAC;CACF;AApGD,oGAoGC"}
@@ -1,8 +1,9 @@
1
1
  import { ApolloContext } from '../../app/api.service';
2
- import { Entry, PersistenceService } from '../../persistence/persistence.service';
2
+ import { EntryData } from '@commitspark/git-adapter';
3
+ import { PersistenceService } from '../../persistence/persistence.service';
3
4
  import { GraphQLFieldResolver } from 'graphql/type/definition';
4
5
  export declare class QueryAllResolverGenerator {
5
6
  private readonly persistence;
6
7
  constructor(persistence: PersistenceService);
7
- createResolver(typeName: string): GraphQLFieldResolver<any, ApolloContext, any, Promise<Entry[]>>;
8
+ createResolver(typeName: string): GraphQLFieldResolver<any, ApolloContext, any, Promise<EntryData[]>>;
8
9
  }
@@ -7,7 +7,10 @@ class QueryAllResolverGenerator {
7
7
  }
8
8
  createResolver(typeName) {
9
9
  return async (obj, args, context, info) => {
10
- return this.persistence.findByType(context.gitAdapter, context.getCurrentRef(), typeName);
10
+ const entries = await this.persistence.findByType(context.gitAdapter, context.getCurrentRef(), typeName);
11
+ return entries.map((entry) => {
12
+ return Object.assign(Object.assign({}, entry.data), { id: entry.id });
13
+ });
11
14
  };
12
15
  }
13
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"query-all-resolver-generator.js","sourceRoot":"","sources":["../../../src/graphql/resolver-generators/query-all-resolver-generator.ts"],"names":[],"mappings":";;;AAOA,MAAa,yBAAyB;IACpC,YAA6B,WAA+B;QAA/B,gBAAW,GAAX,WAAW,CAAoB;IAAG,CAAC;IAEzD,cAAc,CACnB,QAAgB;QAEhB,OAAO,KAAK,EACV,GAAG,EACH,IAAI,EACJ,OAAsB,EACtB,IAAI,EACc,EAAE;YACpB,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAChC,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,QAAQ,CACT,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF;AAnBD,8DAmBC"}
1
+ {"version":3,"file":"query-all-resolver-generator.js","sourceRoot":"","sources":["../../../src/graphql/resolver-generators/query-all-resolver-generator.ts"],"names":[],"mappings":";;;AAKA,MAAa,yBAAyB;IACpC,YAA6B,WAA+B;QAA/B,gBAAW,GAAX,WAAW,CAAoB;IAAG,CAAC;IAEzD,cAAc,CACnB,QAAgB;QAEhB,OAAO,KAAK,EACV,GAAG,EACH,IAAI,EACJ,OAAsB,EACtB,IAAI,EACkB,EAAE;YACxB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAC/C,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,QAAQ,CACT,CAAA;YAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC3B,uCAAY,KAAK,CAAC,IAAI,KAAE,EAAE,EAAE,KAAK,CAAC,EAAE,IAAE;YACxC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAA;IACH,CAAC;CACF;AAvBD,8DAuBC"}
@@ -1,8 +1,9 @@
1
- import { Entry, PersistenceService } from '../../persistence/persistence.service';
1
+ import { EntryData } from '@commitspark/git-adapter';
2
+ import { PersistenceService } from '../../persistence/persistence.service';
2
3
  import { GraphQLFieldResolver } from 'graphql/type/definition';
3
4
  import { ApolloContext } from '../../app/api.service';
4
5
  export declare class QueryByIdResolverGenerator {
5
6
  private readonly persistence;
6
7
  constructor(persistence: PersistenceService);
7
- createResolver(typeName: string): GraphQLFieldResolver<any, ApolloContext, any, Promise<Entry>>;
8
+ createResolver(typeName: string): GraphQLFieldResolver<any, ApolloContext, any, Promise<EntryData>>;
8
9
  }
@@ -7,7 +7,8 @@ class QueryByIdResolverGenerator {
7
7
  }
8
8
  createResolver(typeName) {
9
9
  return async (obj, args, context, info) => {
10
- return this.persistence.findByTypeId(context.gitAdapter, context.getCurrentRef(), typeName, args.id);
10
+ const entry = await this.persistence.findByTypeId(context.gitAdapter, context.getCurrentRef(), typeName, args.id);
11
+ return Object.assign(Object.assign({}, entry.data), { id: entry.id });
11
12
  };
12
13
  }
13
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"query-by-id-resolver-generator.js","sourceRoot":"","sources":["../../../src/graphql/resolver-generators/query-by-id-resolver-generator.ts"],"names":[],"mappings":";;;AAOA,MAAa,0BAA0B;IACrC,YAA6B,WAA+B;QAA/B,gBAAW,GAAX,WAAW,CAAoB;IAAG,CAAC;IAEzD,cAAc,CACnB,QAAgB;QAEhB,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAkB,EAAE;YACxD,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAClC,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,QAAQ,EACR,IAAI,CAAC,EAAE,CACR,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF;AAfD,gEAeC"}
1
+ {"version":3,"file":"query-by-id-resolver-generator.js","sourceRoot":"","sources":["../../../src/graphql/resolver-generators/query-by-id-resolver-generator.ts"],"names":[],"mappings":";;;AAKA,MAAa,0BAA0B;IACrC,YAA6B,WAA+B;QAA/B,gBAAW,GAAX,WAAW,CAAoB;IAAG,CAAC;IAEzD,cAAc,CACnB,QAAgB;QAEhB,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAsB,EAAE;YAC5D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAC/C,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,QAAQ,EACR,IAAI,CAAC,EAAE,CACR,CAAA;YAED,uCAAY,KAAK,CAAC,IAAI,KAAE,EAAE,EAAE,KAAK,CAAC,EAAE,IAAE;QACxC,CAAC,CAAA;IACH,CAAC;CACF;AAjBD,gEAiBC"}
@@ -1,10 +1,10 @@
1
1
  import { ApolloContext } from '../../app/api.service';
2
2
  import { PersistenceService } from '../../persistence/persistence.service';
3
- import { GraphQLTypeResolver } from 'graphql/type/definition';
4
- import { EntryReferenceUtil } from '../schema-utils/entry-reference-util';
3
+ import { GraphQLTypeResolver } from 'graphql';
4
+ import { EntryTypeUtil } from '../schema-utils/entry-type-util';
5
5
  export declare class UnionTypeResolverGenerator {
6
6
  private readonly persistence;
7
- private readonly entryReferenceUtil;
8
- constructor(persistence: PersistenceService, entryReferenceUtil: EntryReferenceUtil);
7
+ private readonly entryTypeUtil;
8
+ constructor(persistence: PersistenceService, entryTypeUtil: EntryTypeUtil);
9
9
  createResolver(): GraphQLTypeResolver<any, ApolloContext>;
10
10
  }
@@ -2,13 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UnionTypeResolverGenerator = void 0;
4
4
  class UnionTypeResolverGenerator {
5
- constructor(persistence, entryReferenceUtil) {
5
+ constructor(persistence, entryTypeUtil) {
6
6
  this.persistence = persistence;
7
- this.entryReferenceUtil = entryReferenceUtil;
7
+ this.entryTypeUtil = entryTypeUtil;
8
8
  }
9
9
  createResolver() {
10
10
  return async (obj, context, info, abstractType) => {
11
- if (this.entryReferenceUtil.buildsOnTypeWithEntryDirective(abstractType)) {
11
+ if (this.entryTypeUtil.buildsOnTypeWithEntryDirective(abstractType)) {
12
12
  return this.persistence.getTypeById(context.gitAdapter, context.getCurrentRef(), obj.id);
13
13
  }
14
14
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"union-type-resolver-generator.js","sourceRoot":"","sources":["../../../src/graphql/resolver-generators/union-type-resolver-generator.ts"],"names":[],"mappings":";;;AASA,MAAa,0BAA0B;IACrC,YACmB,WAA+B,EAC/B,kBAAsC;QADtC,gBAAW,GAAX,WAAW,CAAoB;QAC/B,uBAAkB,GAAlB,kBAAkB,CAAoB;IACtD,CAAC;IAEG,cAAc;QACnB,OAAO,KAAK,EACV,GAAQ,EACR,OAAsB,EACtB,IAAwB,EACxB,YAAiC,EAChB,EAAE;YACnB,IACE,IAAI,CAAC,kBAAkB,CAAC,8BAA8B,CAAC,YAAY,CAAC,EACpE;gBACA,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CACjC,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,GAAG,CAAC,EAAE,CACP,CAAA;aACF;iBAAM;gBAGL,OAAO,GAAG,CAAC,UAAU,CAAA;aACtB;QAGH,CAAC,CAAA;IACH,CAAC;CACF;AA9BD,gEA8BC"}
1
+ {"version":3,"file":"union-type-resolver-generator.js","sourceRoot":"","sources":["../../../src/graphql/resolver-generators/union-type-resolver-generator.ts"],"names":[],"mappings":";;;AASA,MAAa,0BAA0B;IACrC,YACmB,WAA+B,EAC/B,aAA4B;QAD5B,gBAAW,GAAX,WAAW,CAAoB;QAC/B,kBAAa,GAAb,aAAa,CAAe;IAC5C,CAAC;IAEG,cAAc;QACnB,OAAO,KAAK,EACV,GAAQ,EACR,OAAsB,EACtB,IAAwB,EACxB,YAAiC,EAChB,EAAE;YACnB,IAAI,IAAI,CAAC,aAAa,CAAC,8BAA8B,CAAC,YAAY,CAAC,EAAE;gBACnE,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CACjC,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,GAAG,CAAC,EAAE,CACP,CAAA;aACF;iBAAM;gBAGL,OAAO,GAAG,CAAC,UAAU,CAAA;aACtB;QAGH,CAAC,CAAA;IACH,CAAC;CACF;AA5BD,gEA4BC"}