Browse Source

fix(core): Add missing OrderLine.order field resolver (#1478)

Co-authored-by: Camille TOCHE <ctoche@monkeyfactory.fr>
Toche Camille 3 years ago
parent
commit
c6cf4d4e21

+ 12 - 3
packages/core/src/api/resolvers/entity/order-line-entity.resolver.ts

@@ -1,13 +1,17 @@
 import { Parent, ResolveField, Resolver } from '@nestjs/graphql';
 
-import { Asset, OrderLine, ProductVariant } from '../../../entity';
-import { AssetService, ProductVariantService } from '../../../service';
+import { Asset, Order, OrderLine, ProductVariant } from '../../../entity';
+import { AssetService, OrderService, ProductVariantService } from '../../../service';
 import { RequestContext } from '../../common/request-context';
 import { Ctx } from '../../decorators/request-context.decorator';
 
 @Resolver('OrderLine')
 export class OrderLineEntityResolver {
-    constructor(private productVariantService: ProductVariantService, private assetService: AssetService) {}
+    constructor(
+        private productVariantService: ProductVariantService,
+        private assetService: AssetService,
+        private orderService: OrderService,
+    ) {}
 
     @ResolveField()
     async productVariant(
@@ -31,4 +35,9 @@ export class OrderLineEntityResolver {
             return this.assetService.getFeaturedAsset(ctx, orderLine);
         }
     }
+
+    @ResolveField()
+    async order(@Ctx() ctx: RequestContext, @Parent() orderLine: OrderLine): Promise<Order | undefined> {
+        return this.orderService.findOneByOrderLineId(ctx, orderLine.id);
+    }
 }

+ 10 - 0
packages/core/src/service/services/order.service.ts

@@ -249,6 +249,16 @@ export class OrderService {
         return order ? this.findOne(ctx, order.id) : undefined;
     }
 
+    async findOneByOrderLineId(ctx: RequestContext, orderLineId: ID): Promise<Order | undefined> {
+        const order = await this.connection
+            .getRepository(ctx, Order)
+            .createQueryBuilder('order')
+            .innerJoin('order.lines', 'line', 'line.id = :orderLineId', { orderLineId })
+            .getOne();
+
+        return order ? this.findOne(ctx, order.id) : undefined;
+    }
+
     async findByCustomerId(
         ctx: RequestContext,
         customerId: ID,