From 9059bc5d8d9a61c9ee4b60d8c15fcf905c8d1945 Mon Sep 17 00:00:00 2001 From: Niklas Fondberg Date: Thu, 16 Sep 2021 15:58:33 +0200 Subject: [PATCH] Add mutation to copy new s3 image as product image (#45) --- src/datasources/product-api.ts | 2 +- src/resolvers/products-resolver.ts | 32 +++++++++++++++++++++++++++++- src/schema.graphql | 6 ++++++ 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/datasources/product-api.ts b/src/datasources/product-api.ts index 4ddb378..07b1afb 100644 --- a/src/datasources/product-api.ts +++ b/src/datasources/product-api.ts @@ -199,7 +199,7 @@ export class ProductAPI extends BaseSQLDataSource { } // mutations below - private async updateProductField( + async updateProductField( productId: number, field: string, value: string, diff --git a/src/resolvers/products-resolver.ts b/src/resolvers/products-resolver.ts index ff22a96..d9935f2 100644 --- a/src/resolvers/products-resolver.ts +++ b/src/resolvers/products-resolver.ts @@ -13,6 +13,7 @@ import { MarketLocaleAPI } from '../datasources/market-locale-api'; import { InteriorAPI } from '../datasources/interior-api'; import { InteriorsLambdaAPI } from '../datasources/interiors-lambda-api'; import { IdNumberResult } from '../types/types'; +import { moveS3File } from '../s3'; const ProductBlacklist = { async market(parent, _args, { dataSources }) { @@ -173,6 +174,36 @@ export const productMutationTypeDefs = { ); return (dataSources.productApi).getProduct(productId); }, + async updateProductImage( + _, + { productId, uploadedS3Key, width, height }, + { dataSources }, + ) { + await moveS3File( + CONFIG.uploadBucket, + uploadedS3Key, + CONFIG.imageBucket, + `products/${productId}.jpg`, + ); + await (dataSources.productApi).updateProductField( + productId, + 'width', + width.toString(), + ); + await (dataSources.productApi).updateProductField( + productId, + 'height', + height.toString(), + ); + + const product = await (dataSources.productApi).getProduct( + productId, + ); + await (( + dataSources.interiorsLambdaApi + )).generateNewInteriors(product); + return 'success'; + }, async addRelatedProducts(_, { productId, articleNumbers }, { dataSources }) { await (dataSources.productApi).addRelatedProducts( productId, @@ -180,7 +211,6 @@ export const productMutationTypeDefs = { ); return (dataSources.productApi).getProduct(productId); }, - async removeRelatedProducts( _, { productId, relatedProductIds }, diff --git a/src/schema.graphql b/src/schema.graphql index f7b47fb..7bd2b0c 100644 --- a/src/schema.graphql +++ b/src/schema.graphql @@ -455,6 +455,12 @@ type Mutation { productId: Int! wallpaperTypes: [ProductWallpaperType]! ): Product + updateProductImage( + productId: Int! + uploadedS3Key: String! + width: Int! + height: Int! + ): String addRelatedProducts(productId: Int!, articleNumbers: [String]!): Product removeRelatedProducts(productId: Int!, relatedProductIds: [Int]!): Product