Browse Source

feat(server): Add activeCustomer query

Michael Bromley 7 years ago
parent
commit
be69ddda00

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


+ 11 - 0
server/src/api/resolvers/customer.resolver.ts

@@ -13,8 +13,10 @@ import { PaginatedList } from 'shared/shared-types';
 import { Address } from '../../entity/address/address.entity';
 import { Address } from '../../entity/address/address.entity';
 import { Customer } from '../../entity/customer/customer.entity';
 import { Customer } from '../../entity/customer/customer.entity';
 import { CustomerService } from '../../service/services/customer.service';
 import { CustomerService } from '../../service/services/customer.service';
+import { RequestContext } from '../common/request-context';
 import { Allow } from '../decorators/allow.decorator';
 import { Allow } from '../decorators/allow.decorator';
 import { Decode } from '../decorators/decode.decorator';
 import { Decode } from '../decorators/decode.decorator';
+import { Ctx } from '../decorators/request-context.decorator';
 
 
 @Resolver('Customer')
 @Resolver('Customer')
 export class CustomerResolver {
 export class CustomerResolver {
@@ -32,6 +34,15 @@ export class CustomerResolver {
         return this.customerService.findOne(args.id);
         return this.customerService.findOne(args.id);
     }
     }
 
 
+    @Query()
+    @Allow(Permission.Owner)
+    async activeCustomer(@Ctx() ctx: RequestContext): Promise<Customer | undefined> {
+        const userId = ctx.activeUserId;
+        if (userId) {
+            return this.customerService.findOneByUserId(userId);
+        }
+    }
+
     @ResolveProperty()
     @ResolveProperty()
     @Allow(Permission.ReadCustomer)
     @Allow(Permission.ReadCustomer)
     async addresses(customer: Customer): Promise<Address[]> {
     async addresses(customer: Customer): Promise<Address[]> {

+ 1 - 0
server/src/api/types/customer.api.graphql

@@ -1,6 +1,7 @@
 type Query {
 type Query {
     customers(options: CustomerListOptions): CustomerList!
     customers(options: CustomerListOptions): CustomerList!
     customer(id: ID!): Customer
     customer(id: ID!): Customer
+    activeCustomer: Customer
 }
 }
 
 
 type Mutation {
 type Mutation {

+ 10 - 2
server/src/service/services/customer.service.ts

@@ -38,8 +38,16 @@ export class CustomerService {
             .then(([items, totalItems]) => ({ items, totalItems }));
             .then(([items, totalItems]) => ({ items, totalItems }));
     }
     }
 
 
-    findOne(userId: ID): Promise<Customer | undefined> {
-        return this.connection.manager.findOne(Customer, userId);
+    findOne(id: ID): Promise<Customer | undefined> {
+        return this.connection.getRepository(Customer).findOne(id);
+    }
+
+    findOneByUserId(userId: ID): Promise<Customer | undefined> {
+        return this.connection.getRepository(Customer).findOne({
+            where: {
+                user: { id: userId },
+            },
+        });
     }
     }
 
 
     findAddressesByCustomerId(customerId: ID): Promise<Address[]> {
     findAddressesByCustomerId(customerId: ID): Promise<Address[]> {

+ 7 - 0
shared/generated-types.ts

@@ -54,6 +54,7 @@ export interface Query {
     customerGroup?: CustomerGroup | null;
     customerGroup?: CustomerGroup | null;
     customers: CustomerList;
     customers: CustomerList;
     customer?: Customer | null;
     customer?: Customer | null;
+    activeCustomer?: Customer | null;
     facets: FacetList;
     facets: FacetList;
     facet?: Facet | null;
     facet?: Facet | null;
     order?: Order | null;
     order?: Order | null;
@@ -1684,6 +1685,7 @@ export namespace QueryResolvers {
         customerGroup?: CustomerGroupResolver<CustomerGroup | null, any, Context>;
         customerGroup?: CustomerGroupResolver<CustomerGroup | null, any, Context>;
         customers?: CustomersResolver<CustomerList, any, Context>;
         customers?: CustomersResolver<CustomerList, any, Context>;
         customer?: CustomerResolver<Customer | null, any, Context>;
         customer?: CustomerResolver<Customer | null, any, Context>;
+        activeCustomer?: ActiveCustomerResolver<Customer | null, any, Context>;
         facets?: FacetsResolver<FacetList, any, Context>;
         facets?: FacetsResolver<FacetList, any, Context>;
         facet?: FacetResolver<Facet | null, any, Context>;
         facet?: FacetResolver<Facet | null, any, Context>;
         order?: OrderResolver<Order | null, any, Context>;
         order?: OrderResolver<Order | null, any, Context>;
@@ -1827,6 +1829,11 @@ export namespace QueryResolvers {
         id: string;
         id: string;
     }
     }
 
 
+    export type ActiveCustomerResolver<R = Customer | null, Parent = any, Context = any> = Resolver<
+        R,
+        Parent,
+        Context
+    >;
     export type FacetsResolver<R = FacetList, Parent = any, Context = any> = Resolver<
     export type FacetsResolver<R = FacetList, Parent = any, Context = any> = Resolver<
         R,
         R,
         Parent,
         Parent,

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