@rytass/cms-base-nestjs-graphql-module 0.1.22 → 0.1.23

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.
@@ -5,8 +5,13 @@ import { CategoryDto } from '../dto/category.dto';
5
5
  export declare class ArticleDataLoader {
6
6
  private readonly articleRepo;
7
7
  constructor(articleRepo: Repository<BaseArticleEntity>);
8
+ private readonly batchLoadCategories;
8
9
  readonly categoriesLoader: DataLoader<{
9
10
  articleId: string;
10
11
  language?: string;
11
12
  }, CategoryDto[], string>;
13
+ readonly categoriesLoaderNoCache: DataLoader<{
14
+ articleId: string;
15
+ language?: string;
16
+ }, CategoryDto[], string>;
12
17
  }
@@ -23,7 +23,7 @@ class ArticleDataLoader {
23
23
  constructor(articleRepo){
24
24
  this.articleRepo = articleRepo;
25
25
  }
26
- categoriesLoader = new DataLoader(async (queryArgs)=>{
26
+ batchLoadCategories = async (queryArgs)=>{
27
27
  const qb = this.articleRepo.createQueryBuilder('articles');
28
28
  qb.leftJoinAndSelect('articles.categories', 'categories');
29
29
  qb.leftJoinAndSelect('categories.multiLanguageNames', 'multiLanguageNames');
@@ -42,7 +42,8 @@ class ArticleDataLoader {
42
42
  ]
43
43
  }), cVars), vars), {});
44
44
  return queryArgs.map((arg)=>categoryMap[`${arg.articleId}:${arg.language ?? DEFAULT_LANGUAGE}`] ?? []);
45
- }, {
45
+ };
46
+ categoriesLoader = new DataLoader(this.batchLoadCategories, {
46
47
  cache: true,
47
48
  cacheMap: new LRUCache({
48
49
  ttl: 1000 * 60,
@@ -51,6 +52,9 @@ class ArticleDataLoader {
51
52
  }),
52
53
  cacheKeyFn: (queryArgs)=>`${queryArgs.articleId}:${queryArgs.language ?? DEFAULT_LANGUAGE}`
53
54
  });
55
+ categoriesLoaderNoCache = new DataLoader(this.batchLoadCategories, {
56
+ cache: false
57
+ });
54
58
  }
55
59
  ArticleDataLoader = _ts_decorate([
56
60
  Injectable(),
package/index.cjs.js CHANGED
@@ -1126,7 +1126,8 @@ class ArticleQueries {
1126
1126
  return this.articleService.findCollection({
1127
1127
  ...args,
1128
1128
  stage: cmsBaseNestjsModule.ArticleStage.RELEASED,
1129
- language: this.multiLanguage ? language ?? cmsBaseNestjsModule.DEFAULT_LANGUAGE : undefined
1129
+ language: this.multiLanguage ? language ?? cmsBaseNestjsModule.DEFAULT_LANGUAGE : undefined,
1130
+ sorter: cmsBaseNestjsModule.ArticleSorter.RELEASED_AT_DESC
1130
1131
  });
1131
1132
  }
1132
1133
  async backstageArticle(id, version) {
@@ -1469,7 +1470,7 @@ class ArticleDataLoader {
1469
1470
  constructor(articleRepo){
1470
1471
  this.articleRepo = articleRepo;
1471
1472
  }
1472
- categoriesLoader = new DataLoader(async (queryArgs)=>{
1473
+ batchLoadCategories = async (queryArgs)=>{
1473
1474
  const qb = this.articleRepo.createQueryBuilder('articles');
1474
1475
  qb.leftJoinAndSelect('articles.categories', 'categories');
1475
1476
  qb.leftJoinAndSelect('categories.multiLanguageNames', 'multiLanguageNames');
@@ -1488,7 +1489,8 @@ class ArticleDataLoader {
1488
1489
  ]
1489
1490
  }), cVars), vars), {});
1490
1491
  return queryArgs.map((arg)=>categoryMap[`${arg.articleId}:${arg.language ?? cmsBaseNestjsModule.DEFAULT_LANGUAGE}`] ?? []);
1491
- }, {
1492
+ };
1493
+ categoriesLoader = new DataLoader(this.batchLoadCategories, {
1492
1494
  cache: true,
1493
1495
  cacheMap: new lruCache.LRUCache({
1494
1496
  ttl: 1000 * 60,
@@ -1497,6 +1499,9 @@ class ArticleDataLoader {
1497
1499
  }),
1498
1500
  cacheKeyFn: (queryArgs)=>`${queryArgs.articleId}:${queryArgs.language ?? cmsBaseNestjsModule.DEFAULT_LANGUAGE}`
1499
1501
  });
1502
+ categoriesLoaderNoCache = new DataLoader(this.batchLoadCategories, {
1503
+ cache: false
1504
+ });
1500
1505
  }
1501
1506
  ArticleDataLoader = _ts_decorate$b([
1502
1507
  common.Injectable(),
@@ -1792,7 +1797,7 @@ class BackstageArticleResolver {
1792
1797
  return article.releasedBy ? this.memberDataloader.loader.load(article.releasedBy) : null;
1793
1798
  }
1794
1799
  categories(article, language = cmsBaseNestjsModule.DEFAULT_LANGUAGE) {
1795
- return this.articleDataloader.categoriesLoader.load({
1800
+ return this.articleDataloader.categoriesLoaderNoCache.load({
1796
1801
  articleId: article.id,
1797
1802
  language: this.multiLanguage ? language : cmsBaseNestjsModule.DEFAULT_LANGUAGE
1798
1803
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rytass/cms-base-nestjs-graphql-module",
3
- "version": "0.1.22",
3
+ "version": "0.1.23",
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.2.10",
29
+ "@rytass/cms-base-nestjs-module": "^0.2.11",
30
30
  "@rytass/member-base-nestjs-module": "^0.2.18",
31
31
  "dataloader": "^2.2.3",
32
32
  "lru-cache": "^11.2.4"
@@ -1,5 +1,5 @@
1
1
  import { Query, Args, ID, Int, Resolver } from '@nestjs/graphql';
2
- import { MULTIPLE_LANGUAGE_MODE, DEFAULT_LANGUAGE, ArticleStage, ArticleBaseService } from '@rytass/cms-base-nestjs-module';
2
+ import { MULTIPLE_LANGUAGE_MODE, DEFAULT_LANGUAGE, ArticleStage, ArticleSorter, ArticleBaseService } from '@rytass/cms-base-nestjs-module';
3
3
  import { ArticlesArgs } from '../dto/articles.args.js';
4
4
  import { IsPublic, AllowActions } from '@rytass/member-base-nestjs-module';
5
5
  import { Language } from '../decorators/language.decorator.js';
@@ -43,7 +43,8 @@ class ArticleQueries {
43
43
  return this.articleService.findCollection({
44
44
  ...args,
45
45
  stage: ArticleStage.RELEASED,
46
- language: this.multiLanguage ? language ?? DEFAULT_LANGUAGE : undefined
46
+ language: this.multiLanguage ? language ?? DEFAULT_LANGUAGE : undefined,
47
+ sorter: ArticleSorter.RELEASED_AT_DESC
47
48
  });
48
49
  }
49
50
  async backstageArticle(id, version) {
@@ -58,7 +58,7 @@ class BackstageArticleResolver {
58
58
  return article.releasedBy ? this.memberDataloader.loader.load(article.releasedBy) : null;
59
59
  }
60
60
  categories(article, language = DEFAULT_LANGUAGE) {
61
- return this.articleDataloader.categoriesLoader.load({
61
+ return this.articleDataloader.categoriesLoaderNoCache.load({
62
62
  articleId: article.id,
63
63
  language: this.multiLanguage ? language : DEFAULT_LANGUAGE
64
64
  });