@rytass/cms-base-nestjs-graphql-module 0.0.19 → 0.0.21
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/dto/article-version-content.input.d.ts +2 -1
- package/dto/article-version-content.input.js +3 -2
- package/index.cjs.js +185 -86
- package/mutations/article.mutations.d.ts +8 -4
- package/mutations/article.mutations.js +100 -42
- package/package.json +2 -2
- package/resolvers/article.resolver.d.ts +1 -0
- package/resolvers/article.resolver.js +13 -0
- package/resolvers/backstage-article.resolver.d.ts +3 -1
- package/resolvers/backstage-article.resolver.js +29 -3
- package/scalars/quadrats-element.scalar.js +3 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Field, InputType } from '@nestjs/graphql';
|
|
2
|
+
import { QuadratsContentScalar } from '../scalars/quadrats-element.scalar.js';
|
|
2
3
|
|
|
3
4
|
function _ts_decorate(decorators, target, key, desc) {
|
|
4
5
|
var c = arguments.length, r = c < 3 ? target : desc, d;
|
|
@@ -32,8 +33,8 @@ _ts_decorate([
|
|
|
32
33
|
_ts_metadata("design:type", Object)
|
|
33
34
|
], ArticleVersionContentInput.prototype, "description", void 0);
|
|
34
35
|
_ts_decorate([
|
|
35
|
-
Field(()=>
|
|
36
|
-
_ts_metadata("design:type",
|
|
36
|
+
Field(()=>QuadratsContentScalar),
|
|
37
|
+
_ts_metadata("design:type", Array)
|
|
37
38
|
], ArticleVersionContentInput.prototype, "content", void 0);
|
|
38
39
|
ArticleVersionContentInput = _ts_decorate([
|
|
39
40
|
InputType('ArticleVersionContentInput')
|
package/index.cjs.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
var common = require('@nestjs/common');
|
|
4
4
|
var cmsBaseNestjsModule = require('@rytass/cms-base-nestjs-module');
|
|
5
5
|
var graphql = require('@nestjs/graphql');
|
|
6
|
-
var memberBaseNestjsModule = require('@rytass/member-base-nestjs-module');
|
|
7
6
|
var graphql$1 = require('graphql');
|
|
7
|
+
var memberBaseNestjsModule = require('@rytass/member-base-nestjs-module');
|
|
8
8
|
var DataLoader = require('dataloader');
|
|
9
9
|
var lruCache = require('lru-cache');
|
|
10
10
|
var typeorm = require('typeorm');
|
|
@@ -87,6 +87,49 @@ BackstageArticleDto = _ts_decorate$v([
|
|
|
87
87
|
graphql.ObjectType('BackstageArticle')
|
|
88
88
|
], BackstageArticleDto);
|
|
89
89
|
|
|
90
|
+
const QuadratsContentScalar = new graphql$1.GraphQLScalarType({
|
|
91
|
+
name: 'QuadratsContent',
|
|
92
|
+
description: 'QuadratsContent custom scalar type (as JSON string)',
|
|
93
|
+
parseValue: (value)=>{
|
|
94
|
+
if (typeof value === 'string') {
|
|
95
|
+
let parsedValue;
|
|
96
|
+
try {
|
|
97
|
+
parsedValue = JSON.parse(value);
|
|
98
|
+
} catch (error) {
|
|
99
|
+
common.Logger.error(`Error parsing QuadratsContent (parseValue): ${error}`);
|
|
100
|
+
throw new common.InternalServerErrorException('Invalid QuadratsElement value');
|
|
101
|
+
}
|
|
102
|
+
if (!Array.isArray(parsedValue)) {
|
|
103
|
+
throw new common.BadRequestException('Expected a JSON string for QuadratsContent');
|
|
104
|
+
}
|
|
105
|
+
return parsedValue;
|
|
106
|
+
}
|
|
107
|
+
throw new common.BadRequestException('Expected a JSON string for QuadratsContent');
|
|
108
|
+
},
|
|
109
|
+
serialize: (value)=>{
|
|
110
|
+
if (typeof value === 'string') {
|
|
111
|
+
return value;
|
|
112
|
+
}
|
|
113
|
+
try {
|
|
114
|
+
return JSON.stringify(value);
|
|
115
|
+
} catch (error) {
|
|
116
|
+
common.Logger.error(`Error serializing QuadratsContent: ${error}`);
|
|
117
|
+
throw new common.InternalServerErrorException('Error serializing QuadratsElement');
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
parseLiteral: (ast)=>{
|
|
121
|
+
try {
|
|
122
|
+
if (ast.kind === graphql$1.Kind.STRING) {
|
|
123
|
+
return JSON.parse(ast.value);
|
|
124
|
+
}
|
|
125
|
+
} catch (error) {
|
|
126
|
+
common.Logger.error(`Error parsing QuadratsContent (parseLiteral): ${error}`);
|
|
127
|
+
throw new common.InternalServerErrorException('Invalid QuadratsElement value');
|
|
128
|
+
}
|
|
129
|
+
throw new Error('Expected string literal for QuadratsContent');
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
|
|
90
133
|
function _ts_decorate$u(decorators, target, key, desc) {
|
|
91
134
|
var c = arguments.length, r = c < 3 ? target : desc, d;
|
|
92
135
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -119,8 +162,8 @@ _ts_decorate$u([
|
|
|
119
162
|
_ts_metadata$s("design:type", Object)
|
|
120
163
|
], ArticleVersionContentInput.prototype, "description", void 0);
|
|
121
164
|
_ts_decorate$u([
|
|
122
|
-
graphql.Field(()=>
|
|
123
|
-
_ts_metadata$s("design:type",
|
|
165
|
+
graphql.Field(()=>QuadratsContentScalar),
|
|
166
|
+
_ts_metadata$s("design:type", Array)
|
|
124
167
|
], ArticleVersionContentInput.prototype, "content", void 0);
|
|
125
168
|
ArticleVersionContentInput = _ts_decorate$u([
|
|
126
169
|
graphql.InputType('ArticleVersionContentInput')
|
|
@@ -218,70 +261,89 @@ function _ts_param$8(paramIndex, decorator) {
|
|
|
218
261
|
};
|
|
219
262
|
}
|
|
220
263
|
class ArticleMutations {
|
|
264
|
+
multiLanguage;
|
|
221
265
|
articleService;
|
|
222
|
-
constructor(articleService){
|
|
266
|
+
constructor(multiLanguage, articleService){
|
|
267
|
+
this.multiLanguage = multiLanguage;
|
|
223
268
|
this.articleService = articleService;
|
|
224
269
|
}
|
|
225
|
-
|
|
226
|
-
|
|
270
|
+
resolveCreateArticleArgs(args) {
|
|
271
|
+
const basePayload = {
|
|
227
272
|
categoryIds: args.categoryIds,
|
|
228
273
|
tags: args.tags,
|
|
229
|
-
multiLanguageContents: args.multiLanguageContents.reduce((vars, content)=>({
|
|
230
|
-
...vars,
|
|
231
|
-
[content.language ?? cmsBaseNestjsModule.DEFAULT_LANGUAGE]: {
|
|
232
|
-
title: content.title,
|
|
233
|
-
description: content.description,
|
|
234
|
-
content: content.content
|
|
235
|
-
}
|
|
236
|
-
}), {}),
|
|
237
|
-
userId: memberId,
|
|
238
274
|
submitted: args.submitted ?? undefined,
|
|
239
275
|
signatureLevel: args.signatureLevel ?? null,
|
|
240
276
|
releasedAt: args.releasedAt ?? null
|
|
277
|
+
};
|
|
278
|
+
if (!this.multiLanguage) {
|
|
279
|
+
const [content] = args.multiLanguageContents;
|
|
280
|
+
return {
|
|
281
|
+
...basePayload,
|
|
282
|
+
title: content.title,
|
|
283
|
+
content: content.content,
|
|
284
|
+
description: content.description ?? undefined
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
const multiLanguageContents = args.multiLanguageContents.reduce((vars, content)=>({
|
|
288
|
+
...vars,
|
|
289
|
+
[content.language ?? cmsBaseNestjsModule.DEFAULT_LANGUAGE]: {
|
|
290
|
+
title: content.title,
|
|
291
|
+
description: content.description,
|
|
292
|
+
content: content.content
|
|
293
|
+
}
|
|
294
|
+
}), {});
|
|
295
|
+
return {
|
|
296
|
+
...basePayload,
|
|
297
|
+
multiLanguageContents
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
async createArticle(memberId, args) {
|
|
301
|
+
return this.articleService.create({
|
|
302
|
+
...this.resolveCreateArticleArgs(args),
|
|
303
|
+
userId: memberId
|
|
241
304
|
});
|
|
242
305
|
}
|
|
243
306
|
async updateArticle(memberId, args) {
|
|
244
307
|
return this.articleService.addVersion(args.id, {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
multiLanguageContents: args.multiLanguageContents.reduce((vars, content)=>({
|
|
248
|
-
...vars,
|
|
249
|
-
[content.language ?? cmsBaseNestjsModule.DEFAULT_LANGUAGE]: {
|
|
250
|
-
title: content.title,
|
|
251
|
-
description: content.description,
|
|
252
|
-
content: content.content
|
|
253
|
-
}
|
|
254
|
-
}), {}),
|
|
255
|
-
userId: memberId,
|
|
256
|
-
submitted: args.submitted ?? undefined,
|
|
257
|
-
signatureLevel: args.signatureLevel ?? null,
|
|
258
|
-
releasedAt: args.releasedAt ?? null
|
|
308
|
+
...this.resolveCreateArticleArgs(args),
|
|
309
|
+
userId: memberId
|
|
259
310
|
});
|
|
260
311
|
}
|
|
261
312
|
async deleteArticle(id) {
|
|
262
313
|
await this.articleService.archive(id);
|
|
263
314
|
return true;
|
|
264
315
|
}
|
|
265
|
-
async
|
|
316
|
+
async deleteArticleVersion(id, version) {
|
|
317
|
+
await this.articleService.deleteVersion(id, version);
|
|
318
|
+
return true;
|
|
319
|
+
}
|
|
320
|
+
async submitArticle(memberId, id) {
|
|
266
321
|
return this.articleService.submit(id, {
|
|
267
|
-
version,
|
|
268
322
|
userId: memberId
|
|
269
323
|
});
|
|
270
324
|
}
|
|
271
|
-
async
|
|
325
|
+
async putBackArticle(memberId, id) {
|
|
326
|
+
return this.articleService.putBack(id);
|
|
327
|
+
}
|
|
328
|
+
async approveArticle(id, version) {
|
|
272
329
|
const article = await this.articleService.findById(id);
|
|
273
|
-
return this.articleService.approveVersion(
|
|
330
|
+
return this.articleService.approveVersion({
|
|
331
|
+
id,
|
|
332
|
+
version: version ?? article.version
|
|
333
|
+
});
|
|
274
334
|
}
|
|
275
335
|
async rejectArticle(id, reason) {
|
|
276
|
-
|
|
277
|
-
|
|
336
|
+
return this.articleService.rejectVersion({
|
|
337
|
+
id
|
|
338
|
+
}, {
|
|
278
339
|
reason
|
|
279
340
|
});
|
|
280
341
|
}
|
|
281
|
-
releaseArticle(userId, id, releasedAt) {
|
|
342
|
+
releaseArticle(userId, id, releasedAt, version) {
|
|
282
343
|
return this.articleService.release(id, {
|
|
283
344
|
releasedAt,
|
|
284
|
-
userId
|
|
345
|
+
userId,
|
|
346
|
+
version: version ?? undefined
|
|
285
347
|
});
|
|
286
348
|
}
|
|
287
349
|
withdrawArticle(id) {
|
|
@@ -325,34 +387,65 @@ _ts_decorate$r([
|
|
|
325
387
|
_ts_metadata$p("design:returntype", Promise)
|
|
326
388
|
], ArticleMutations.prototype, "deleteArticle", null);
|
|
327
389
|
_ts_decorate$r([
|
|
328
|
-
graphql.Mutation(()=>
|
|
390
|
+
graphql.Mutation(()=>Boolean),
|
|
329
391
|
memberBaseNestjsModule.IsPublic(),
|
|
330
|
-
_ts_param$8(0,
|
|
331
|
-
_ts_param$8(1, graphql.Args('id', {
|
|
392
|
+
_ts_param$8(0, graphql.Args('id', {
|
|
332
393
|
type: ()=>graphql.ID
|
|
333
394
|
})),
|
|
334
|
-
_ts_param$8(
|
|
395
|
+
_ts_param$8(1, graphql.Args('version', {
|
|
335
396
|
type: ()=>graphql.Int
|
|
336
397
|
})),
|
|
337
398
|
_ts_metadata$p("design:type", Function),
|
|
338
399
|
_ts_metadata$p("design:paramtypes", [
|
|
339
|
-
String,
|
|
340
400
|
String,
|
|
341
401
|
Number
|
|
342
402
|
]),
|
|
343
403
|
_ts_metadata$p("design:returntype", Promise)
|
|
404
|
+
], ArticleMutations.prototype, "deleteArticleVersion", null);
|
|
405
|
+
_ts_decorate$r([
|
|
406
|
+
graphql.Mutation(()=>BackstageArticleDto),
|
|
407
|
+
memberBaseNestjsModule.IsPublic(),
|
|
408
|
+
_ts_param$8(0, memberBaseNestjsModule.MemberId()),
|
|
409
|
+
_ts_param$8(1, graphql.Args('id', {
|
|
410
|
+
type: ()=>graphql.ID
|
|
411
|
+
})),
|
|
412
|
+
_ts_metadata$p("design:type", Function),
|
|
413
|
+
_ts_metadata$p("design:paramtypes", [
|
|
414
|
+
String,
|
|
415
|
+
String
|
|
416
|
+
]),
|
|
417
|
+
_ts_metadata$p("design:returntype", Promise)
|
|
344
418
|
], ArticleMutations.prototype, "submitArticle", null);
|
|
345
419
|
_ts_decorate$r([
|
|
346
420
|
graphql.Mutation(()=>BackstageArticleDto),
|
|
347
421
|
memberBaseNestjsModule.IsPublic(),
|
|
348
|
-
_ts_param$8(0,
|
|
422
|
+
_ts_param$8(0, memberBaseNestjsModule.MemberId()),
|
|
423
|
+
_ts_param$8(1, graphql.Args('id', {
|
|
349
424
|
type: ()=>graphql.ID
|
|
350
425
|
})),
|
|
351
426
|
_ts_metadata$p("design:type", Function),
|
|
352
427
|
_ts_metadata$p("design:paramtypes", [
|
|
428
|
+
String,
|
|
353
429
|
String
|
|
354
430
|
]),
|
|
355
431
|
_ts_metadata$p("design:returntype", Promise)
|
|
432
|
+
], ArticleMutations.prototype, "putBackArticle", null);
|
|
433
|
+
_ts_decorate$r([
|
|
434
|
+
graphql.Mutation(()=>BackstageArticleDto),
|
|
435
|
+
memberBaseNestjsModule.IsPublic(),
|
|
436
|
+
_ts_param$8(0, graphql.Args('id', {
|
|
437
|
+
type: ()=>graphql.ID
|
|
438
|
+
})),
|
|
439
|
+
_ts_param$8(1, graphql.Args('version', {
|
|
440
|
+
type: ()=>graphql.Int,
|
|
441
|
+
nullable: true
|
|
442
|
+
})),
|
|
443
|
+
_ts_metadata$p("design:type", Function),
|
|
444
|
+
_ts_metadata$p("design:paramtypes", [
|
|
445
|
+
String,
|
|
446
|
+
Object
|
|
447
|
+
]),
|
|
448
|
+
_ts_metadata$p("design:returntype", Promise)
|
|
356
449
|
], ArticleMutations.prototype, "approveArticle", null);
|
|
357
450
|
_ts_decorate$r([
|
|
358
451
|
graphql.Mutation(()=>BackstageArticleDto),
|
|
@@ -381,11 +474,16 @@ _ts_decorate$r([
|
|
|
381
474
|
_ts_param$8(2, graphql.Args('releasedAt', {
|
|
382
475
|
type: ()=>Date
|
|
383
476
|
})),
|
|
477
|
+
_ts_param$8(3, graphql.Args('version', {
|
|
478
|
+
type: ()=>graphql.Int,
|
|
479
|
+
nullable: true
|
|
480
|
+
})),
|
|
384
481
|
_ts_metadata$p("design:type", Function),
|
|
385
482
|
_ts_metadata$p("design:paramtypes", [
|
|
386
483
|
String,
|
|
387
484
|
String,
|
|
388
|
-
typeof Date === "undefined" ? Object : Date
|
|
485
|
+
typeof Date === "undefined" ? Object : Date,
|
|
486
|
+
Object
|
|
389
487
|
]),
|
|
390
488
|
_ts_metadata$p("design:returntype", typeof Promise === "undefined" ? Object : Promise)
|
|
391
489
|
], ArticleMutations.prototype, "releaseArticle", null);
|
|
@@ -403,8 +501,10 @@ _ts_decorate$r([
|
|
|
403
501
|
], ArticleMutations.prototype, "withdrawArticle", null);
|
|
404
502
|
ArticleMutations = _ts_decorate$r([
|
|
405
503
|
graphql.Resolver(),
|
|
504
|
+
_ts_param$8(0, common.Inject(cmsBaseNestjsModule.MULTIPLE_LANGUAGE_MODE)),
|
|
406
505
|
_ts_metadata$p("design:type", Function),
|
|
407
506
|
_ts_metadata$p("design:paramtypes", [
|
|
507
|
+
Boolean,
|
|
408
508
|
typeof cmsBaseNestjsModule.ArticleBaseService === "undefined" ? Object : cmsBaseNestjsModule.ArticleBaseService
|
|
409
509
|
])
|
|
410
510
|
], ArticleMutations);
|
|
@@ -714,46 +814,6 @@ Collection = _ts_decorate$j([
|
|
|
714
814
|
graphql.ObjectType('Collection')
|
|
715
815
|
], Collection);
|
|
716
816
|
|
|
717
|
-
const QuadratsContentScalar = new graphql$1.GraphQLScalarType({
|
|
718
|
-
name: 'QuadratsContent',
|
|
719
|
-
description: 'QuadratsContent custom scalar type (as JSON string)',
|
|
720
|
-
parseValue: (value)=>{
|
|
721
|
-
if (typeof value === 'string') {
|
|
722
|
-
let parsedValue;
|
|
723
|
-
try {
|
|
724
|
-
parsedValue = JSON.parse(value);
|
|
725
|
-
} catch (error) {
|
|
726
|
-
common.Logger.error(`Error parsing QuadratsContent (parseValue): ${error}`);
|
|
727
|
-
throw new common.InternalServerErrorException('Invalid QuadratsElement value');
|
|
728
|
-
}
|
|
729
|
-
if (!Array.isArray(parsedValue)) {
|
|
730
|
-
throw new common.BadRequestException('Expected a JSON string for QuadratsContent');
|
|
731
|
-
}
|
|
732
|
-
return parsedValue;
|
|
733
|
-
}
|
|
734
|
-
throw new common.BadRequestException('Expected a JSON string for QuadratsContent');
|
|
735
|
-
},
|
|
736
|
-
serialize: (value)=>{
|
|
737
|
-
try {
|
|
738
|
-
return JSON.stringify(value);
|
|
739
|
-
} catch (error) {
|
|
740
|
-
common.Logger.error(`Error serializing QuadratsContent: ${error}`);
|
|
741
|
-
throw new common.InternalServerErrorException('Error serializing QuadratsElement');
|
|
742
|
-
}
|
|
743
|
-
},
|
|
744
|
-
parseLiteral: (ast)=>{
|
|
745
|
-
try {
|
|
746
|
-
if (ast.kind === graphql$1.Kind.STRING) {
|
|
747
|
-
return JSON.parse(ast.value);
|
|
748
|
-
}
|
|
749
|
-
} catch (error) {
|
|
750
|
-
common.Logger.error(`Error parsing QuadratsContent (parseLiteral): ${error}`);
|
|
751
|
-
throw new common.InternalServerErrorException('Invalid QuadratsElement value');
|
|
752
|
-
}
|
|
753
|
-
throw new Error('Expected string literal for QuadratsContent');
|
|
754
|
-
}
|
|
755
|
-
});
|
|
756
|
-
|
|
757
817
|
function _ts_decorate$i(decorators, target, key, desc) {
|
|
758
818
|
var c = arguments.length, r = c < 3 ? target : desc, d;
|
|
759
819
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -1270,6 +1330,9 @@ class ArticleResolver {
|
|
|
1270
1330
|
this.articleDataloader = articleDataloader;
|
|
1271
1331
|
this.multiLanguage = multiLanguage;
|
|
1272
1332
|
}
|
|
1333
|
+
articleId(article) {
|
|
1334
|
+
return article.id.split(':')[0];
|
|
1335
|
+
}
|
|
1273
1336
|
releasedBy(article) {
|
|
1274
1337
|
return article.releasedBy ? this.memberDataloader.loader.load(article.releasedBy) : null;
|
|
1275
1338
|
}
|
|
@@ -1280,6 +1343,16 @@ class ArticleResolver {
|
|
|
1280
1343
|
});
|
|
1281
1344
|
}
|
|
1282
1345
|
}
|
|
1346
|
+
_ts_decorate$7([
|
|
1347
|
+
graphql.ResolveField(()=>String),
|
|
1348
|
+
memberBaseNestjsModule.IsPublic(),
|
|
1349
|
+
_ts_param$2(0, graphql.Root()),
|
|
1350
|
+
_ts_metadata$6("design:type", Function),
|
|
1351
|
+
_ts_metadata$6("design:paramtypes", [
|
|
1352
|
+
typeof ArticleBaseDto === "undefined" ? Object : ArticleBaseDto
|
|
1353
|
+
]),
|
|
1354
|
+
_ts_metadata$6("design:returntype", String)
|
|
1355
|
+
], ArticleResolver.prototype, "articleId", null);
|
|
1283
1356
|
_ts_decorate$7([
|
|
1284
1357
|
graphql.ResolveField(()=>UserDto, {
|
|
1285
1358
|
nullable: true
|
|
@@ -1478,6 +1551,12 @@ class BackstageArticleResolver {
|
|
|
1478
1551
|
this.moduleArticleDataLoader = moduleArticleDataLoader;
|
|
1479
1552
|
this.versionSignaturesLoader = versionSignaturesLoader;
|
|
1480
1553
|
}
|
|
1554
|
+
id(article) {
|
|
1555
|
+
return `${article.id}:${article.version}`;
|
|
1556
|
+
}
|
|
1557
|
+
articleId(article) {
|
|
1558
|
+
return article.id;
|
|
1559
|
+
}
|
|
1481
1560
|
submittedBy(article) {
|
|
1482
1561
|
return article.submittedBy ? this.memberDataloader.loader.load(article.submittedBy) : null;
|
|
1483
1562
|
}
|
|
@@ -1539,7 +1618,7 @@ class BackstageArticleResolver {
|
|
|
1539
1618
|
version: article.version
|
|
1540
1619
|
});
|
|
1541
1620
|
}
|
|
1542
|
-
async
|
|
1621
|
+
async stageVersions(article) {
|
|
1543
1622
|
const versions = await this.articleVersionDataLoader.stageVersionsLoader.load(article.id);
|
|
1544
1623
|
return {
|
|
1545
1624
|
id: article.id,
|
|
@@ -1551,6 +1630,26 @@ class BackstageArticleResolver {
|
|
|
1551
1630
|
};
|
|
1552
1631
|
}
|
|
1553
1632
|
}
|
|
1633
|
+
_ts_decorate$3([
|
|
1634
|
+
graphql.ResolveField(()=>graphql.ID),
|
|
1635
|
+
memberBaseNestjsModule.IsPublic(),
|
|
1636
|
+
_ts_param$1(0, graphql.Root()),
|
|
1637
|
+
_ts_metadata$2("design:type", Function),
|
|
1638
|
+
_ts_metadata$2("design:paramtypes", [
|
|
1639
|
+
typeof ArticleBaseDto === "undefined" ? Object : ArticleBaseDto
|
|
1640
|
+
]),
|
|
1641
|
+
_ts_metadata$2("design:returntype", String)
|
|
1642
|
+
], BackstageArticleResolver.prototype, "id", null);
|
|
1643
|
+
_ts_decorate$3([
|
|
1644
|
+
graphql.ResolveField(()=>String),
|
|
1645
|
+
memberBaseNestjsModule.IsPublic(),
|
|
1646
|
+
_ts_param$1(0, graphql.Root()),
|
|
1647
|
+
_ts_metadata$2("design:type", Function),
|
|
1648
|
+
_ts_metadata$2("design:paramtypes", [
|
|
1649
|
+
typeof ArticleBaseDto === "undefined" ? Object : ArticleBaseDto
|
|
1650
|
+
]),
|
|
1651
|
+
_ts_metadata$2("design:returntype", String)
|
|
1652
|
+
], BackstageArticleResolver.prototype, "articleId", null);
|
|
1554
1653
|
_ts_decorate$3([
|
|
1555
1654
|
graphql.ResolveField(()=>UserDto, {
|
|
1556
1655
|
nullable: true
|
|
@@ -1688,7 +1787,7 @@ _ts_decorate$3([
|
|
|
1688
1787
|
typeof ArticleBaseDto === "undefined" ? Object : ArticleBaseDto
|
|
1689
1788
|
]),
|
|
1690
1789
|
_ts_metadata$2("design:returntype", Promise)
|
|
1691
|
-
], BackstageArticleResolver.prototype, "
|
|
1790
|
+
], BackstageArticleResolver.prototype, "stageVersions", null);
|
|
1692
1791
|
BackstageArticleResolver = _ts_decorate$3([
|
|
1693
1792
|
graphql.Resolver(()=>BackstageArticleDto),
|
|
1694
1793
|
_ts_param$1(2, common.Inject(cmsBaseNestjsModule.MULTIPLE_LANGUAGE_MODE)),
|
|
@@ -3,14 +3,18 @@ import { BackstageArticleDto } from '../dto/backstage-article.dto';
|
|
|
3
3
|
import { CreateArticleArgs } from '../dto/create-article.args';
|
|
4
4
|
import { UpdateArticleArgs } from '../dto/update-article.args';
|
|
5
5
|
export declare class ArticleMutations {
|
|
6
|
+
private readonly multiLanguage;
|
|
6
7
|
private readonly articleService;
|
|
7
|
-
constructor(articleService: ArticleBaseService);
|
|
8
|
+
constructor(multiLanguage: boolean, articleService: ArticleBaseService);
|
|
9
|
+
private resolveCreateArticleArgs;
|
|
8
10
|
createArticle(memberId: string, args: CreateArticleArgs): Promise<BackstageArticleDto>;
|
|
9
11
|
updateArticle(memberId: string, args: UpdateArticleArgs): Promise<BackstageArticleDto>;
|
|
10
12
|
deleteArticle(id: string): Promise<boolean>;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
deleteArticleVersion(id: string, version: number): Promise<boolean>;
|
|
14
|
+
submitArticle(memberId: string, id: string): Promise<BackstageArticleDto>;
|
|
15
|
+
putBackArticle(memberId: string, id: string): Promise<BackstageArticleDto>;
|
|
16
|
+
approveArticle(id: string, version?: number | null): Promise<BackstageArticleDto>;
|
|
13
17
|
rejectArticle(id: string, reason?: string | null): Promise<BackstageArticleDto>;
|
|
14
|
-
releaseArticle(userId: string, id: string, releasedAt: Date): Promise<BackstageArticleDto>;
|
|
18
|
+
releaseArticle(userId: string, id: string, releasedAt: Date, version?: number | null): Promise<BackstageArticleDto>;
|
|
15
19
|
withdrawArticle(id: string): Promise<BackstageArticleDto>;
|
|
16
20
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { ArticleBaseService, DEFAULT_LANGUAGE } from '@rytass/cms-base-nestjs-module';
|
|
1
|
+
import { MULTIPLE_LANGUAGE_MODE, ArticleBaseService, DEFAULT_LANGUAGE } from '@rytass/cms-base-nestjs-module';
|
|
2
2
|
import { Mutation, Args, ID, Int, Resolver } from '@nestjs/graphql';
|
|
3
3
|
import { BackstageArticleDto } from '../dto/backstage-article.dto.js';
|
|
4
4
|
import { CreateArticleArgs } from '../dto/create-article.args.js';
|
|
5
5
|
import { IsPublic, MemberId } from '@rytass/member-base-nestjs-module';
|
|
6
6
|
import { UpdateArticleArgs } from '../dto/update-article.args.js';
|
|
7
|
+
import { Inject } from '@nestjs/common';
|
|
7
8
|
|
|
8
9
|
function _ts_decorate(decorators, target, key, desc) {
|
|
9
10
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -20,70 +21,89 @@ function _ts_param(paramIndex, decorator) {
|
|
|
20
21
|
};
|
|
21
22
|
}
|
|
22
23
|
class ArticleMutations {
|
|
24
|
+
multiLanguage;
|
|
23
25
|
articleService;
|
|
24
|
-
constructor(articleService){
|
|
26
|
+
constructor(multiLanguage, articleService){
|
|
27
|
+
this.multiLanguage = multiLanguage;
|
|
25
28
|
this.articleService = articleService;
|
|
26
29
|
}
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
resolveCreateArticleArgs(args) {
|
|
31
|
+
const basePayload = {
|
|
29
32
|
categoryIds: args.categoryIds,
|
|
30
33
|
tags: args.tags,
|
|
31
|
-
multiLanguageContents: args.multiLanguageContents.reduce((vars, content)=>({
|
|
32
|
-
...vars,
|
|
33
|
-
[content.language ?? DEFAULT_LANGUAGE]: {
|
|
34
|
-
title: content.title,
|
|
35
|
-
description: content.description,
|
|
36
|
-
content: content.content
|
|
37
|
-
}
|
|
38
|
-
}), {}),
|
|
39
|
-
userId: memberId,
|
|
40
34
|
submitted: args.submitted ?? undefined,
|
|
41
35
|
signatureLevel: args.signatureLevel ?? null,
|
|
42
36
|
releasedAt: args.releasedAt ?? null
|
|
37
|
+
};
|
|
38
|
+
if (!this.multiLanguage) {
|
|
39
|
+
const [content] = args.multiLanguageContents;
|
|
40
|
+
return {
|
|
41
|
+
...basePayload,
|
|
42
|
+
title: content.title,
|
|
43
|
+
content: content.content,
|
|
44
|
+
description: content.description ?? undefined
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
const multiLanguageContents = args.multiLanguageContents.reduce((vars, content)=>({
|
|
48
|
+
...vars,
|
|
49
|
+
[content.language ?? DEFAULT_LANGUAGE]: {
|
|
50
|
+
title: content.title,
|
|
51
|
+
description: content.description,
|
|
52
|
+
content: content.content
|
|
53
|
+
}
|
|
54
|
+
}), {});
|
|
55
|
+
return {
|
|
56
|
+
...basePayload,
|
|
57
|
+
multiLanguageContents
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
async createArticle(memberId, args) {
|
|
61
|
+
return this.articleService.create({
|
|
62
|
+
...this.resolveCreateArticleArgs(args),
|
|
63
|
+
userId: memberId
|
|
43
64
|
});
|
|
44
65
|
}
|
|
45
66
|
async updateArticle(memberId, args) {
|
|
46
67
|
return this.articleService.addVersion(args.id, {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
multiLanguageContents: args.multiLanguageContents.reduce((vars, content)=>({
|
|
50
|
-
...vars,
|
|
51
|
-
[content.language ?? DEFAULT_LANGUAGE]: {
|
|
52
|
-
title: content.title,
|
|
53
|
-
description: content.description,
|
|
54
|
-
content: content.content
|
|
55
|
-
}
|
|
56
|
-
}), {}),
|
|
57
|
-
userId: memberId,
|
|
58
|
-
submitted: args.submitted ?? undefined,
|
|
59
|
-
signatureLevel: args.signatureLevel ?? null,
|
|
60
|
-
releasedAt: args.releasedAt ?? null
|
|
68
|
+
...this.resolveCreateArticleArgs(args),
|
|
69
|
+
userId: memberId
|
|
61
70
|
});
|
|
62
71
|
}
|
|
63
72
|
async deleteArticle(id) {
|
|
64
73
|
await this.articleService.archive(id);
|
|
65
74
|
return true;
|
|
66
75
|
}
|
|
67
|
-
async
|
|
76
|
+
async deleteArticleVersion(id, version) {
|
|
77
|
+
await this.articleService.deleteVersion(id, version);
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
async submitArticle(memberId, id) {
|
|
68
81
|
return this.articleService.submit(id, {
|
|
69
|
-
version,
|
|
70
82
|
userId: memberId
|
|
71
83
|
});
|
|
72
84
|
}
|
|
73
|
-
async
|
|
85
|
+
async putBackArticle(memberId, id) {
|
|
86
|
+
return this.articleService.putBack(id);
|
|
87
|
+
}
|
|
88
|
+
async approveArticle(id, version) {
|
|
74
89
|
const article = await this.articleService.findById(id);
|
|
75
|
-
return this.articleService.approveVersion(
|
|
90
|
+
return this.articleService.approveVersion({
|
|
91
|
+
id,
|
|
92
|
+
version: version ?? article.version
|
|
93
|
+
});
|
|
76
94
|
}
|
|
77
95
|
async rejectArticle(id, reason) {
|
|
78
|
-
|
|
79
|
-
|
|
96
|
+
return this.articleService.rejectVersion({
|
|
97
|
+
id
|
|
98
|
+
}, {
|
|
80
99
|
reason
|
|
81
100
|
});
|
|
82
101
|
}
|
|
83
|
-
releaseArticle(userId, id, releasedAt) {
|
|
102
|
+
releaseArticle(userId, id, releasedAt, version) {
|
|
84
103
|
return this.articleService.release(id, {
|
|
85
104
|
releasedAt,
|
|
86
|
-
userId
|
|
105
|
+
userId,
|
|
106
|
+
version: version ?? undefined
|
|
87
107
|
});
|
|
88
108
|
}
|
|
89
109
|
withdrawArticle(id) {
|
|
@@ -127,34 +147,65 @@ _ts_decorate([
|
|
|
127
147
|
_ts_metadata("design:returntype", Promise)
|
|
128
148
|
], ArticleMutations.prototype, "deleteArticle", null);
|
|
129
149
|
_ts_decorate([
|
|
130
|
-
Mutation(()=>
|
|
150
|
+
Mutation(()=>Boolean),
|
|
131
151
|
IsPublic(),
|
|
132
|
-
_ts_param(0,
|
|
133
|
-
_ts_param(1, Args('id', {
|
|
152
|
+
_ts_param(0, Args('id', {
|
|
134
153
|
type: ()=>ID
|
|
135
154
|
})),
|
|
136
|
-
_ts_param(
|
|
155
|
+
_ts_param(1, Args('version', {
|
|
137
156
|
type: ()=>Int
|
|
138
157
|
})),
|
|
139
158
|
_ts_metadata("design:type", Function),
|
|
140
159
|
_ts_metadata("design:paramtypes", [
|
|
141
|
-
String,
|
|
142
160
|
String,
|
|
143
161
|
Number
|
|
144
162
|
]),
|
|
145
163
|
_ts_metadata("design:returntype", Promise)
|
|
164
|
+
], ArticleMutations.prototype, "deleteArticleVersion", null);
|
|
165
|
+
_ts_decorate([
|
|
166
|
+
Mutation(()=>BackstageArticleDto),
|
|
167
|
+
IsPublic(),
|
|
168
|
+
_ts_param(0, MemberId()),
|
|
169
|
+
_ts_param(1, Args('id', {
|
|
170
|
+
type: ()=>ID
|
|
171
|
+
})),
|
|
172
|
+
_ts_metadata("design:type", Function),
|
|
173
|
+
_ts_metadata("design:paramtypes", [
|
|
174
|
+
String,
|
|
175
|
+
String
|
|
176
|
+
]),
|
|
177
|
+
_ts_metadata("design:returntype", Promise)
|
|
146
178
|
], ArticleMutations.prototype, "submitArticle", null);
|
|
147
179
|
_ts_decorate([
|
|
148
180
|
Mutation(()=>BackstageArticleDto),
|
|
149
181
|
IsPublic(),
|
|
150
|
-
_ts_param(0,
|
|
182
|
+
_ts_param(0, MemberId()),
|
|
183
|
+
_ts_param(1, Args('id', {
|
|
151
184
|
type: ()=>ID
|
|
152
185
|
})),
|
|
153
186
|
_ts_metadata("design:type", Function),
|
|
154
187
|
_ts_metadata("design:paramtypes", [
|
|
188
|
+
String,
|
|
155
189
|
String
|
|
156
190
|
]),
|
|
157
191
|
_ts_metadata("design:returntype", Promise)
|
|
192
|
+
], ArticleMutations.prototype, "putBackArticle", null);
|
|
193
|
+
_ts_decorate([
|
|
194
|
+
Mutation(()=>BackstageArticleDto),
|
|
195
|
+
IsPublic(),
|
|
196
|
+
_ts_param(0, Args('id', {
|
|
197
|
+
type: ()=>ID
|
|
198
|
+
})),
|
|
199
|
+
_ts_param(1, Args('version', {
|
|
200
|
+
type: ()=>Int,
|
|
201
|
+
nullable: true
|
|
202
|
+
})),
|
|
203
|
+
_ts_metadata("design:type", Function),
|
|
204
|
+
_ts_metadata("design:paramtypes", [
|
|
205
|
+
String,
|
|
206
|
+
Object
|
|
207
|
+
]),
|
|
208
|
+
_ts_metadata("design:returntype", Promise)
|
|
158
209
|
], ArticleMutations.prototype, "approveArticle", null);
|
|
159
210
|
_ts_decorate([
|
|
160
211
|
Mutation(()=>BackstageArticleDto),
|
|
@@ -183,11 +234,16 @@ _ts_decorate([
|
|
|
183
234
|
_ts_param(2, Args('releasedAt', {
|
|
184
235
|
type: ()=>Date
|
|
185
236
|
})),
|
|
237
|
+
_ts_param(3, Args('version', {
|
|
238
|
+
type: ()=>Int,
|
|
239
|
+
nullable: true
|
|
240
|
+
})),
|
|
186
241
|
_ts_metadata("design:type", Function),
|
|
187
242
|
_ts_metadata("design:paramtypes", [
|
|
188
243
|
String,
|
|
189
244
|
String,
|
|
190
|
-
typeof Date === "undefined" ? Object : Date
|
|
245
|
+
typeof Date === "undefined" ? Object : Date,
|
|
246
|
+
Object
|
|
191
247
|
]),
|
|
192
248
|
_ts_metadata("design:returntype", typeof Promise === "undefined" ? Object : Promise)
|
|
193
249
|
], ArticleMutations.prototype, "releaseArticle", null);
|
|
@@ -205,8 +261,10 @@ _ts_decorate([
|
|
|
205
261
|
], ArticleMutations.prototype, "withdrawArticle", null);
|
|
206
262
|
ArticleMutations = _ts_decorate([
|
|
207
263
|
Resolver(),
|
|
264
|
+
_ts_param(0, Inject(MULTIPLE_LANGUAGE_MODE)),
|
|
208
265
|
_ts_metadata("design:type", Function),
|
|
209
266
|
_ts_metadata("design:paramtypes", [
|
|
267
|
+
Boolean,
|
|
210
268
|
typeof ArticleBaseService === "undefined" ? Object : ArticleBaseService
|
|
211
269
|
])
|
|
212
270
|
], ArticleMutations);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rytass/cms-base-nestjs-graphql-module",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.21",
|
|
4
4
|
"description": "Rytass Content Management System NestJS Base GraphQL Module",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"rytass",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"typeorm": "*"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@rytass/cms-base-nestjs-module": "^0.1.
|
|
29
|
+
"@rytass/cms-base-nestjs-module": "^0.1.92",
|
|
30
30
|
"@rytass/member-base-nestjs-module": "^0.1.65",
|
|
31
31
|
"dataloader": "^2.2.2",
|
|
32
32
|
"lru-cache": "^11.0.2"
|
|
@@ -8,6 +8,7 @@ export declare class ArticleResolver {
|
|
|
8
8
|
private readonly articleDataloader;
|
|
9
9
|
private readonly multiLanguage;
|
|
10
10
|
constructor(memberDataloader: MemberDataLoader, articleDataloader: ArticleDataLoader, multiLanguage: boolean);
|
|
11
|
+
articleId(article: ArticleBaseDto): string;
|
|
11
12
|
releasedBy(article: ArticleBaseDto): Promise<UserDto | null> | null;
|
|
12
13
|
categories(article: ArticleBaseDto, language?: string): Promise<CategoryDto[]>;
|
|
13
14
|
}
|
|
@@ -32,6 +32,9 @@ class ArticleResolver {
|
|
|
32
32
|
this.articleDataloader = articleDataloader;
|
|
33
33
|
this.multiLanguage = multiLanguage;
|
|
34
34
|
}
|
|
35
|
+
articleId(article) {
|
|
36
|
+
return article.id.split(':')[0];
|
|
37
|
+
}
|
|
35
38
|
releasedBy(article) {
|
|
36
39
|
return article.releasedBy ? this.memberDataloader.loader.load(article.releasedBy) : null;
|
|
37
40
|
}
|
|
@@ -42,6 +45,16 @@ class ArticleResolver {
|
|
|
42
45
|
});
|
|
43
46
|
}
|
|
44
47
|
}
|
|
48
|
+
_ts_decorate([
|
|
49
|
+
ResolveField(()=>String),
|
|
50
|
+
IsPublic(),
|
|
51
|
+
_ts_param(0, Root()),
|
|
52
|
+
_ts_metadata("design:type", Function),
|
|
53
|
+
_ts_metadata("design:paramtypes", [
|
|
54
|
+
typeof ArticleBaseDto === "undefined" ? Object : ArticleBaseDto
|
|
55
|
+
]),
|
|
56
|
+
_ts_metadata("design:returntype", String)
|
|
57
|
+
], ArticleResolver.prototype, "articleId", null);
|
|
45
58
|
_ts_decorate([
|
|
46
59
|
ResolveField(()=>UserDto, {
|
|
47
60
|
nullable: true
|
|
@@ -16,6 +16,8 @@ export declare class BackstageArticleResolver {
|
|
|
16
16
|
private readonly moduleArticleDataLoader;
|
|
17
17
|
private readonly versionSignaturesLoader;
|
|
18
18
|
constructor(memberDataloader: MemberDataLoader, articleDataloader: ArticleDataLoader, multiLanguage: boolean, articleVersionDataLoader: ArticleVersionDataLoader, moduleArticleDataLoader: ModuleArticleDataLoader, versionSignaturesLoader: ArticleSignatureDataLoader);
|
|
19
|
+
id(article: ArticleBaseDto): string;
|
|
20
|
+
articleId(article: ArticleBaseDto): string;
|
|
19
21
|
submittedBy(article: ArticleBaseDto): Promise<UserDto | null> | null;
|
|
20
22
|
lastEditor(article: ArticleBaseDto): Promise<UserDto | null> | null;
|
|
21
23
|
releasedBy(article: ArticleBaseDto): Promise<UserDto | null> | null;
|
|
@@ -27,5 +29,5 @@ export declare class BackstageArticleResolver {
|
|
|
27
29
|
versions(article: ArticleBaseDto): Promise<BackstageArticleDto[]>;
|
|
28
30
|
stage(article: ArticleBaseDto): Promise<ArticleStage>;
|
|
29
31
|
signatures(article: ArticleBaseDto): Promise<ArticleSignatureDto[]>;
|
|
30
|
-
|
|
32
|
+
stageVersions(article: ArticleBaseDto): Promise<ArticleStageVersionDto>;
|
|
31
33
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ResolveField, Root, Resolver } from '@nestjs/graphql';
|
|
1
|
+
import { ResolveField, ID, Root, Resolver } from '@nestjs/graphql';
|
|
2
2
|
import { MemberDataLoader } from '../data-loaders/members.dataloader.js';
|
|
3
3
|
import { UserDto } from '../dto/user.dto.js';
|
|
4
4
|
import { IsPublic } from '@rytass/member-base-nestjs-module';
|
|
@@ -42,6 +42,12 @@ class BackstageArticleResolver {
|
|
|
42
42
|
this.moduleArticleDataLoader = moduleArticleDataLoader;
|
|
43
43
|
this.versionSignaturesLoader = versionSignaturesLoader;
|
|
44
44
|
}
|
|
45
|
+
id(article) {
|
|
46
|
+
return `${article.id}:${article.version}`;
|
|
47
|
+
}
|
|
48
|
+
articleId(article) {
|
|
49
|
+
return article.id;
|
|
50
|
+
}
|
|
45
51
|
submittedBy(article) {
|
|
46
52
|
return article.submittedBy ? this.memberDataloader.loader.load(article.submittedBy) : null;
|
|
47
53
|
}
|
|
@@ -103,7 +109,7 @@ class BackstageArticleResolver {
|
|
|
103
109
|
version: article.version
|
|
104
110
|
});
|
|
105
111
|
}
|
|
106
|
-
async
|
|
112
|
+
async stageVersions(article) {
|
|
107
113
|
const versions = await this.articleVersionDataLoader.stageVersionsLoader.load(article.id);
|
|
108
114
|
return {
|
|
109
115
|
id: article.id,
|
|
@@ -115,6 +121,26 @@ class BackstageArticleResolver {
|
|
|
115
121
|
};
|
|
116
122
|
}
|
|
117
123
|
}
|
|
124
|
+
_ts_decorate([
|
|
125
|
+
ResolveField(()=>ID),
|
|
126
|
+
IsPublic(),
|
|
127
|
+
_ts_param(0, Root()),
|
|
128
|
+
_ts_metadata("design:type", Function),
|
|
129
|
+
_ts_metadata("design:paramtypes", [
|
|
130
|
+
typeof ArticleBaseDto === "undefined" ? Object : ArticleBaseDto
|
|
131
|
+
]),
|
|
132
|
+
_ts_metadata("design:returntype", String)
|
|
133
|
+
], BackstageArticleResolver.prototype, "id", null);
|
|
134
|
+
_ts_decorate([
|
|
135
|
+
ResolveField(()=>String),
|
|
136
|
+
IsPublic(),
|
|
137
|
+
_ts_param(0, Root()),
|
|
138
|
+
_ts_metadata("design:type", Function),
|
|
139
|
+
_ts_metadata("design:paramtypes", [
|
|
140
|
+
typeof ArticleBaseDto === "undefined" ? Object : ArticleBaseDto
|
|
141
|
+
]),
|
|
142
|
+
_ts_metadata("design:returntype", String)
|
|
143
|
+
], BackstageArticleResolver.prototype, "articleId", null);
|
|
118
144
|
_ts_decorate([
|
|
119
145
|
ResolveField(()=>UserDto, {
|
|
120
146
|
nullable: true
|
|
@@ -252,7 +278,7 @@ _ts_decorate([
|
|
|
252
278
|
typeof ArticleBaseDto === "undefined" ? Object : ArticleBaseDto
|
|
253
279
|
]),
|
|
254
280
|
_ts_metadata("design:returntype", Promise)
|
|
255
|
-
], BackstageArticleResolver.prototype, "
|
|
281
|
+
], BackstageArticleResolver.prototype, "stageVersions", null);
|
|
256
282
|
BackstageArticleResolver = _ts_decorate([
|
|
257
283
|
Resolver(()=>BackstageArticleDto),
|
|
258
284
|
_ts_param(2, Inject(MULTIPLE_LANGUAGE_MODE)),
|
|
@@ -21,6 +21,9 @@ const QuadratsContentScalar = new GraphQLScalarType({
|
|
|
21
21
|
throw new BadRequestException('Expected a JSON string for QuadratsContent');
|
|
22
22
|
},
|
|
23
23
|
serialize: (value)=>{
|
|
24
|
+
if (typeof value === 'string') {
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
24
27
|
try {
|
|
25
28
|
return JSON.stringify(value);
|
|
26
29
|
} catch (error) {
|