Sfoglia il codice sorgente

feat(server): Create Facet resolver

Michael Bromley 7 anni fa
parent
commit
1b805a97e5

File diff suppressed because it is too large
+ 0 - 0
schema.json


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

@@ -1,5 +1,6 @@
 type Query {
 type Query {
     facets(languageCode: LanguageCode, options: FacetListOptions): FacetList!
     facets(languageCode: LanguageCode, options: FacetListOptions): FacetList!
+    facet(id: ID!, languageCode: LanguageCode): Facet
 }
 }
 
 
 type FacetList implements PaginatedList {
 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 { PaginatedList } from '../../../../shared/shared-types';
 import { Facet } from '../../entity/facet/facet.entity';
 import { Facet } from '../../entity/facet/facet.entity';
+import { Product } from '../../entity/product/product.entity';
 import { Translated } from '../../locale/locale-types';
 import { Translated } from '../../locale/locale-types';
 import { ConfigService } from '../../service/config.service';
 import { ConfigService } from '../../service/config.service';
 import { FacetService } from '../../service/facet.service';
 import { FacetService } from '../../service/facet.service';
+import { ApplyIdCodec } from '../common/apply-id-codec-decorator';
 
 
 @Resolver('Facet')
 @Resolver('Facet')
 export class FacetResolver {
 export class FacetResolver {
     constructor(private facetService: FacetService) {}
     constructor(private facetService: FacetService) {}
 
 
-    /**
-     * Exposes a subset of the VendureConfig which may be of use to clients.
-     */
     @Query()
     @Query()
+    @ApplyIdCodec()
     facets(obj, args): Promise<PaginatedList<Translated<Facet>>> {
     facets(obj, args): Promise<PaginatedList<Translated<Facet>>> {
         return this.facetService.findAll(args.languageCode, args.options);
         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 { InjectConnection } from '@nestjs/typeorm';
 import { Connection } from '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 { buildListQuery } from '../common/build-list-query';
 import { ListQueryOptions } from '../common/common-types';
 import { ListQueryOptions } from '../common/common-types';
 import { Facet } from '../entity/facet/facet.entity';
 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']));
+    }
 }
 }

Some files were not shown because too many files changed in this diff