فهرست منبع

feat(server): Create Facet resolver

Michael Bromley 7 سال پیش
والد
کامیت
1b805a97e5
4فایلهای تغییر یافته به همراه19 افزوده شده و 4 حذف شده
  1. 0 0
      schema.json
  2. 1 0
      server/src/api/facet/facet.api.graphql
  3. 9 3
      server/src/api/facet/facet.resolver.ts
  4. 9 1
      server/src/service/facet.service.ts

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
schema.json


+ 1 - 0
server/src/api/facet/facet.api.graphql

@@ -1,5 +1,6 @@
 type Query {
     facets(languageCode: LanguageCode, options: FacetListOptions): FacetList!
+    facet(id: ID!, languageCode: LanguageCode): Facet
 }
 
 type FacetList implements PaginatedList {

+ 9 - 3
server/src/api/facet/facet.resolver.ts

@@ -2,19 +2,25 @@ import { Query, Resolver } from '@nestjs/graphql';
 
 import { PaginatedList } from '../../../../shared/shared-types';
 import { Facet } from '../../entity/facet/facet.entity';
+import { Product } from '../../entity/product/product.entity';
 import { Translated } from '../../locale/locale-types';
 import { ConfigService } from '../../service/config.service';
 import { FacetService } from '../../service/facet.service';
+import { ApplyIdCodec } from '../common/apply-id-codec-decorator';
 
 @Resolver('Facet')
 export class FacetResolver {
     constructor(private facetService: FacetService) {}
 
-    /**
-     * Exposes a subset of the VendureConfig which may be of use to clients.
-     */
     @Query()
+    @ApplyIdCodec()
     facets(obj, args): Promise<PaginatedList<Translated<Facet>>> {
         return this.facetService.findAll(args.languageCode, args.options);
     }
+
+    @Query()
+    @ApplyIdCodec()
+    async facet(obj, args): Promise<Translated<Facet> | undefined> {
+        return this.facetService.findOne(args.id, args.languageCode);
+    }
 }

+ 9 - 1
server/src/service/facet.service.ts

@@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common';
 import { InjectConnection } from '@nestjs/typeorm';
 import { Connection } from 'typeorm';
 
-import { PaginatedList } from '../../../shared/shared-types';
+import { ID, PaginatedList } from '../../../shared/shared-types';
 import { buildListQuery } from '../common/build-list-query';
 import { ListQueryOptions } from '../common/common-types';
 import { Facet } from '../entity/facet/facet.entity';
@@ -31,4 +31,12 @@ export class FacetService {
                 };
             });
     }
+
+    findOne(facetId: ID, lang: LanguageCode): Promise<Translated<Facet> | undefined> {
+        const relations = ['values'];
+
+        return this.connection.manager
+            .findOne(Facet, facetId, { relations })
+            .then(product => product && translateDeep(product, lang, ['values']));
+    }
 }

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است