@things-factory/product-base 7.1.25 → 7.1.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -313,7 +313,7 @@ async function updateProduct(id, patch, context) {
313
313
  relations: ['domain']
314
314
  });
315
315
  if (patch.productRef && patch.productRef.id) {
316
- patch.productRef = await productRepo.findOne(patch.productRef.id);
316
+ patch.productRef = await productRepo.findOne({ where: { id: patch.productRef.id } });
317
317
  }
318
318
  let bizplace;
319
319
  if ((_a = product.bizplace) === null || _a === void 0 ? void 0 : _a.id) {
@@ -1 +1 @@
1
- {"version":3,"file":"product-mutation.js","sourceRoot":"","sources":["../../../server/service/product/product-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import promisesAll from 'promises-all'\nimport { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { In, Repository } from 'typeorm'\n\nimport { createAttachment, deleteAttachmentsByRef } from '@things-factory/attachment-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { logger } from '@things-factory/env'\nimport { getRepository } from '@things-factory/shell'\n\nimport { PRODUCT_STATUS } from '../../constants'\nimport { ProductDetail } from '../product-detail/product-detail'\nimport {\n createProductDetail,\n updateMultipleProductDetail,\n updateProductDetail\n} from '../product-detail/product-detail-mutation'\nimport { ProductSet } from '../product-set/product-set'\nimport { Product } from './product'\nimport { NewProduct, ProductPatch } from './product-types'\nimport { validateProduct } from './validate-product'\n\n@Resolver(Product)\nexport class ProductMutation {\n @Directive('@transaction')\n @Mutation(returns => Product)\n async createProduct(@Arg('product') product: NewProduct, @Ctx() context: ResolverContext): Promise<Product> {\n return await createProduct(product, context)\n }\n\n @Directive('@transaction')\n @Mutation(returns => [Product])\n async createProducts(\n @Arg('products', type => [NewProduct]) products: NewProduct[],\n @Ctx() context: ResolverContext\n ): Promise<Product[]> {\n return await createProducts(products, context)\n }\n\n @Directive('@transaction')\n @Mutation(returns => Product)\n async updateProduct(\n @Arg('id') id: string,\n @Arg('patch') patch: ProductPatch,\n @Ctx() context: ResolverContext\n ): Promise<Product> {\n return await updateProduct(id, patch, context)\n }\n\n @Directive('@transaction')\n @Mutation(returns => [Product])\n async importMultipleProduct(\n @Arg('patches', type => [ProductPatch]) patches: ProductPatch[],\n @Ctx() context: ResolverContext\n ): Promise<Product[]> {\n try {\n let results = []\n\n //// 1. Group and massage data based on sku for Product and Product Details.\n let massagedPatch = patches.reduce(function (acc, currentObj) {\n let existingParent = acc.find(itm => itm.sku == currentObj.sku)\n if (existingParent) {\n existingParent.productDetails = [\n ...existingParent.productDetails,\n new ProductDetail({ ...currentObj, childProductDetail: currentObj.childGtin })\n ]\n return acc\n } else {\n let newProduct = {\n ...currentObj,\n productDetails: [\n new ProductDetail({ ...currentObj, childProductDetail: currentObj.childGtin, isDefault: true })\n ]\n }\n return [...acc, newProduct]\n }\n }, [])\n\n //// 2. Update all Grouped Product data and Product Details Data\n for (let i = 0; i < massagedPatch.length; i++) {\n const patch: Product = massagedPatch[i]\n const result = await createProduct(patch, context)\n results.push({ ...result, cuFlag: '+' })\n }\n\n return results\n } catch (error) {\n throw error\n }\n }\n\n @Directive('@transaction')\n @Mutation(returns => [Product])\n async updateMultipleProduct(\n @Arg('patches', type => [ProductPatch]) patches: ProductPatch[],\n @Ctx() context: ResolverContext\n ): Promise<Product[]> {\n try {\n let results = []\n const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')\n const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')\n\n if (_createRecords.length > 0) {\n for (let i = 0; i < _createRecords.length; i++) {\n const patch: NewProduct = _createRecords[i]\n const result = await createProduct(patch, context)\n results.push({ ...result, cuFlag: '+' })\n }\n }\n\n if (_updateRecords.length > 0) {\n for (let i = 0; i < _updateRecords.length; i++) {\n const patch: ProductPatch = _updateRecords[i]\n const result = await updateProduct(patch.id, patch, context)\n results.push({ ...result, cuFlag: 'M' })\n }\n }\n\n return results\n } catch (error) {\n throw error\n }\n }\n\n @Directive('@privilege(category: \"order\", privilege: \"mutation\") ')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async linkProduct(\n @Arg('productSetId') productSetId: string,\n @Arg('patches', type => [ProductPatch]) patches: ProductPatch[],\n @Ctx() context: ResolverContext\n ): Promise<Boolean> {\n const { tx } = context.state\n\n let productSet = await tx.getRepository(ProductSet).findOne({\n where: { id: productSetId },\n relations: ['domain', 'creator', 'updater', 'product']\n })\n\n let existingProductLink: any = productSet.product\n\n let newProductLink: Product[] = patches.reduce((acc, curr) => {\n if (!existingProductLink.find(itm => itm.id == curr.id)) {\n acc.push({ id: curr.id })\n }\n return acc\n }, [])\n\n let removeProductLink: Product[] = existingProductLink.reduce((acc, curr) => {\n if (!patches.find(itm => itm.id == curr.id)) {\n acc.push({ id: curr.id })\n }\n return acc\n }, [])\n\n if (newProductLink.length > 0) {\n for (let i = 0; i < newProductLink.length; i++) {\n const patch: Product = { ...newProductLink[i], productSet }\n await updateProduct(newProductLink[i].id, patch, context)\n }\n }\n\n if (removeProductLink.length > 0) {\n for (let i = 0; i < removeProductLink.length; i++) {\n const patch: Product = { ...removeProductLink[i], productSet: null }\n await updateProduct(removeProductLink[i].id, patch, context)\n }\n }\n\n return true\n }\n\n @Directive('@privilege(category: \"order\", privilege: \"mutation\") ')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async deleteProduct(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Boolean> {\n const { tx, user, domain } = context.state\n const productSetRepo: Repository<Product> = tx.getRepository(Product)\n const productSet = await productSetRepo.findOneBy({ domain: { id: domain.id }, id })\n\n await productSetRepo.save({\n ...productSet,\n status: PRODUCT_STATUS.DELETED,\n updater: user\n })\n\n return true\n }\n\n @Directive('@privilege(category: \"order\", privilege: \"mutation\") ')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async deleteProducts(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<Boolean> {\n const { tx, user } = context.state\n const productRepo = tx.getRepository(Product)\n\n await productRepo.update(\n {\n id: In(ids)\n },\n {\n deletedAt: new Date()\n }\n )\n\n return true\n }\n\n @Directive('@privilege(category: \"order\", privilege: \"mutation\") ')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async undeleteProducts(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<Boolean> {\n const { tx, user } = context.state\n const productRepo = tx.getRepository(Product)\n\n await productRepo.update(\n {\n id: In(ids)\n },\n {\n deletedAt: null\n }\n )\n\n return true\n }\n}\n\nexport async function createProduct(product: any, context: ResolverContext) {\n try {\n const { domain, user, tx } = context.state\n\n const productRepo: Repository<Product> = tx.getRepository(Product) || getRepository(Product)\n const bizplaceRepo: Repository<Bizplace> = tx.getRepository(Bizplace) || getRepository(Bizplace)\n\n let bizplace: Bizplace\n if (product.bizplace?.id) {\n bizplace = await bizplaceRepo.findOneBy({ id: product.bizplace.id })\n } else if (context.state?.bizplace) {\n bizplace = context.state.bizplace\n } else {\n bizplace = await bizplaceRepo.findOne({ where: { domain: { id: domain.id } } })\n }\n\n if (product?.productRef?.id) {\n product.productRef = await productRepo.findOneBy({ id: product.productRef.id })\n }\n\n if (!product?.id) delete product.id\n\n await validateProduct(\n {\n ...product,\n bizplace,\n domain\n },\n context\n )\n\n if (product.uom) {\n product.primaryUnit = product.uom\n }\n\n if (product.uomValue) {\n product.primaryValue = product.uomValue\n }\n\n const result = await productRepo.save({\n ...product,\n bizplace,\n domain,\n creator: user,\n updater: user\n })\n\n let productDetails = product.productDetails\n if (!productDetails) {\n productDetails = [new ProductDetail({ ...product, product: result, isDefault: true })]\n if (productDetails[0].gtin == null || productDetails[0] == undefined) {\n productDetails[0].gtin = product.sku\n }\n }\n\n await updateMultipleProductDetail(result.id, productDetails, context)\n\n if (product.thumbnail) {\n await createAttachment(\n null,\n {\n attachment: {\n file: product.thumbnail,\n refType: Product.name,\n refBy: result.id\n }\n },\n context\n )\n }\n\n return result\n } catch (error) {\n throw error\n }\n}\n\nexport async function createProducts(products, context: ResolverContext) {\n const { resolve, reject } = await promisesAll.all(products.map(product => createProduct(product, context)))\n\n if (reject.length) {\n reject.forEach(({ name, message }) => logger.error(`${name}: ${message}`))\n\n return reject\n }\n\n return resolve\n}\n\nexport async function updateProduct(id: string, patch, context) {\n try {\n const { user, tx, domain } = context.state\n\n const bizplaceRepo: Repository<Bizplace> = tx.getRepository(Bizplace)\n const productRepo: Repository<Product> = tx.getRepository(Product)\n const productDetailRepo: Repository<ProductDetail> = tx.getRepository(ProductDetail)\n\n let product = await productRepo.findOne({ where: { id }, relations: ['domain'] })\n\n let productDetail = await productDetailRepo.findOne({\n where: { product: { id }, isDefault: true },\n relations: ['domain']\n })\n\n if (patch.productRef && patch.productRef.id) {\n patch.productRef = await productRepo.findOne(patch.productRef.id)\n }\n\n let bizplace: Bizplace\n if (product.bizplace?.id) {\n bizplace = await bizplaceRepo.findOneBy({ id: product.bizplace.id })\n } else {\n bizplace = await bizplaceRepo.findOne({ where: { name: domain.name } })\n }\n\n await validateProduct(\n {\n ...product,\n ...patch,\n bizplace,\n domain\n },\n context\n )\n\n if (patch.uom) {\n product.primaryUnit = patch.uom\n }\n\n if (patch.uomValue) {\n product.primaryValue = patch.uomValue\n }\n\n product = await productRepo.save({\n ...product,\n ...patch,\n domain,\n updater: user\n })\n\n if (productDetail) {\n if (product.gtin) {\n delete product.gtin\n }\n productDetail = await updateProductDetail(\n productDetail.id,\n new ProductDetail({ ...product, ...patch, product }),\n context\n )\n } else {\n productDetail = await createProductDetail(\n new ProductDetail({ ...product, ...patch, product, isDefault: true }),\n context\n )\n }\n\n const productId = id\n if (patch.thumbnail) {\n await deleteAttachmentsByRef(null, { refBys: [productId] }, context)\n await createAttachment(\n null,\n {\n attachment: {\n file: patch.thumbnail,\n refType: Product.name,\n refBy: product.id\n }\n },\n context\n )\n }\n\n return product\n } catch (error) {\n throw error\n }\n}\n"]}
1
+ {"version":3,"file":"product-mutation.js","sourceRoot":"","sources":["../../../server/service/product/product-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import promisesAll from 'promises-all'\nimport { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { In, Repository } from 'typeorm'\n\nimport { createAttachment, deleteAttachmentsByRef } from '@things-factory/attachment-base'\nimport { Bizplace } from '@things-factory/biz-base'\nimport { logger } from '@things-factory/env'\nimport { getRepository } from '@things-factory/shell'\n\nimport { PRODUCT_STATUS } from '../../constants'\nimport { ProductDetail } from '../product-detail/product-detail'\nimport {\n createProductDetail,\n updateMultipleProductDetail,\n updateProductDetail\n} from '../product-detail/product-detail-mutation'\nimport { ProductSet } from '../product-set/product-set'\nimport { Product } from './product'\nimport { NewProduct, ProductPatch } from './product-types'\nimport { validateProduct } from './validate-product'\n\n@Resolver(Product)\nexport class ProductMutation {\n @Directive('@transaction')\n @Mutation(returns => Product)\n async createProduct(@Arg('product') product: NewProduct, @Ctx() context: ResolverContext): Promise<Product> {\n return await createProduct(product, context)\n }\n\n @Directive('@transaction')\n @Mutation(returns => [Product])\n async createProducts(\n @Arg('products', type => [NewProduct]) products: NewProduct[],\n @Ctx() context: ResolverContext\n ): Promise<Product[]> {\n return await createProducts(products, context)\n }\n\n @Directive('@transaction')\n @Mutation(returns => Product)\n async updateProduct(\n @Arg('id') id: string,\n @Arg('patch') patch: ProductPatch,\n @Ctx() context: ResolverContext\n ): Promise<Product> {\n return await updateProduct(id, patch, context)\n }\n\n @Directive('@transaction')\n @Mutation(returns => [Product])\n async importMultipleProduct(\n @Arg('patches', type => [ProductPatch]) patches: ProductPatch[],\n @Ctx() context: ResolverContext\n ): Promise<Product[]> {\n try {\n let results = []\n\n //// 1. Group and massage data based on sku for Product and Product Details.\n let massagedPatch = patches.reduce(function (acc, currentObj) {\n let existingParent = acc.find(itm => itm.sku == currentObj.sku)\n if (existingParent) {\n existingParent.productDetails = [\n ...existingParent.productDetails,\n new ProductDetail({ ...currentObj, childProductDetail: currentObj.childGtin })\n ]\n return acc\n } else {\n let newProduct = {\n ...currentObj,\n productDetails: [\n new ProductDetail({ ...currentObj, childProductDetail: currentObj.childGtin, isDefault: true })\n ]\n }\n return [...acc, newProduct]\n }\n }, [])\n\n //// 2. Update all Grouped Product data and Product Details Data\n for (let i = 0; i < massagedPatch.length; i++) {\n const patch: Product = massagedPatch[i]\n const result = await createProduct(patch, context)\n results.push({ ...result, cuFlag: '+' })\n }\n\n return results\n } catch (error) {\n throw error\n }\n }\n\n @Directive('@transaction')\n @Mutation(returns => [Product])\n async updateMultipleProduct(\n @Arg('patches', type => [ProductPatch]) patches: ProductPatch[],\n @Ctx() context: ResolverContext\n ): Promise<Product[]> {\n try {\n let results = []\n const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')\n const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')\n\n if (_createRecords.length > 0) {\n for (let i = 0; i < _createRecords.length; i++) {\n const patch: NewProduct = _createRecords[i]\n const result = await createProduct(patch, context)\n results.push({ ...result, cuFlag: '+' })\n }\n }\n\n if (_updateRecords.length > 0) {\n for (let i = 0; i < _updateRecords.length; i++) {\n const patch: ProductPatch = _updateRecords[i]\n const result = await updateProduct(patch.id, patch, context)\n results.push({ ...result, cuFlag: 'M' })\n }\n }\n\n return results\n } catch (error) {\n throw error\n }\n }\n\n @Directive('@privilege(category: \"order\", privilege: \"mutation\") ')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async linkProduct(\n @Arg('productSetId') productSetId: string,\n @Arg('patches', type => [ProductPatch]) patches: ProductPatch[],\n @Ctx() context: ResolverContext\n ): Promise<Boolean> {\n const { tx } = context.state\n\n let productSet = await tx.getRepository(ProductSet).findOne({\n where: { id: productSetId },\n relations: ['domain', 'creator', 'updater', 'product']\n })\n\n let existingProductLink: any = productSet.product\n\n let newProductLink: Product[] = patches.reduce((acc, curr) => {\n if (!existingProductLink.find(itm => itm.id == curr.id)) {\n acc.push({ id: curr.id })\n }\n return acc\n }, [])\n\n let removeProductLink: Product[] = existingProductLink.reduce((acc, curr) => {\n if (!patches.find(itm => itm.id == curr.id)) {\n acc.push({ id: curr.id })\n }\n return acc\n }, [])\n\n if (newProductLink.length > 0) {\n for (let i = 0; i < newProductLink.length; i++) {\n const patch: Product = { ...newProductLink[i], productSet }\n await updateProduct(newProductLink[i].id, patch, context)\n }\n }\n\n if (removeProductLink.length > 0) {\n for (let i = 0; i < removeProductLink.length; i++) {\n const patch: Product = { ...removeProductLink[i], productSet: null }\n await updateProduct(removeProductLink[i].id, patch, context)\n }\n }\n\n return true\n }\n\n @Directive('@privilege(category: \"order\", privilege: \"mutation\") ')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async deleteProduct(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Boolean> {\n const { tx, user, domain } = context.state\n const productSetRepo: Repository<Product> = tx.getRepository(Product)\n const productSet = await productSetRepo.findOneBy({ domain: { id: domain.id }, id })\n\n await productSetRepo.save({\n ...productSet,\n status: PRODUCT_STATUS.DELETED,\n updater: user\n })\n\n return true\n }\n\n @Directive('@privilege(category: \"order\", privilege: \"mutation\") ')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async deleteProducts(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<Boolean> {\n const { tx, user } = context.state\n const productRepo = tx.getRepository(Product)\n\n await productRepo.update(\n {\n id: In(ids)\n },\n {\n deletedAt: new Date()\n }\n )\n\n return true\n }\n\n @Directive('@privilege(category: \"order\", privilege: \"mutation\") ')\n @Directive('@transaction')\n @Mutation(returns => Boolean)\n async undeleteProducts(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<Boolean> {\n const { tx, user } = context.state\n const productRepo = tx.getRepository(Product)\n\n await productRepo.update(\n {\n id: In(ids)\n },\n {\n deletedAt: null\n }\n )\n\n return true\n }\n}\n\nexport async function createProduct(product: any, context: ResolverContext) {\n try {\n const { domain, user, tx } = context.state\n\n const productRepo: Repository<Product> = tx.getRepository(Product) || getRepository(Product)\n const bizplaceRepo: Repository<Bizplace> = tx.getRepository(Bizplace) || getRepository(Bizplace)\n\n let bizplace: Bizplace\n if (product.bizplace?.id) {\n bizplace = await bizplaceRepo.findOneBy({ id: product.bizplace.id })\n } else if (context.state?.bizplace) {\n bizplace = context.state.bizplace\n } else {\n bizplace = await bizplaceRepo.findOne({ where: { domain: { id: domain.id } } })\n }\n\n if (product?.productRef?.id) {\n product.productRef = await productRepo.findOneBy({ id: product.productRef.id })\n }\n\n if (!product?.id) delete product.id\n\n await validateProduct(\n {\n ...product,\n bizplace,\n domain\n },\n context\n )\n\n if (product.uom) {\n product.primaryUnit = product.uom\n }\n\n if (product.uomValue) {\n product.primaryValue = product.uomValue\n }\n\n const result = await productRepo.save({\n ...product,\n bizplace,\n domain,\n creator: user,\n updater: user\n })\n\n let productDetails = product.productDetails\n if (!productDetails) {\n productDetails = [new ProductDetail({ ...product, product: result, isDefault: true })]\n if (productDetails[0].gtin == null || productDetails[0] == undefined) {\n productDetails[0].gtin = product.sku\n }\n }\n\n await updateMultipleProductDetail(result.id, productDetails, context)\n\n if (product.thumbnail) {\n await createAttachment(\n null,\n {\n attachment: {\n file: product.thumbnail,\n refType: Product.name,\n refBy: result.id\n }\n },\n context\n )\n }\n\n return result\n } catch (error) {\n throw error\n }\n}\n\nexport async function createProducts(products, context: ResolverContext) {\n const { resolve, reject } = await promisesAll.all(products.map(product => createProduct(product, context)))\n\n if (reject.length) {\n reject.forEach(({ name, message }) => logger.error(`${name}: ${message}`))\n\n return reject\n }\n\n return resolve\n}\n\nexport async function updateProduct(id: string, patch, context) {\n try {\n const { user, tx, domain } = context.state\n\n const bizplaceRepo: Repository<Bizplace> = tx.getRepository(Bizplace)\n const productRepo: Repository<Product> = tx.getRepository(Product)\n const productDetailRepo: Repository<ProductDetail> = tx.getRepository(ProductDetail)\n\n let product = await productRepo.findOne({ where: { id }, relations: ['domain'] })\n\n let productDetail = await productDetailRepo.findOne({\n where: { product: { id }, isDefault: true },\n relations: ['domain']\n })\n\n if (patch.productRef && patch.productRef.id) {\n patch.productRef = await productRepo.findOne({ where: { id: patch.productRef.id } })\n }\n\n let bizplace: Bizplace\n if (product.bizplace?.id) {\n bizplace = await bizplaceRepo.findOneBy({ id: product.bizplace.id })\n } else {\n bizplace = await bizplaceRepo.findOne({ where: { name: domain.name } })\n }\n\n await validateProduct(\n {\n ...product,\n ...patch,\n bizplace,\n domain\n },\n context\n )\n\n if (patch.uom) {\n product.primaryUnit = patch.uom\n }\n\n if (patch.uomValue) {\n product.primaryValue = patch.uomValue\n }\n\n product = await productRepo.save({\n ...product,\n ...patch,\n domain,\n updater: user\n })\n\n if (productDetail) {\n if (product.gtin) {\n delete product.gtin\n }\n productDetail = await updateProductDetail(\n productDetail.id,\n new ProductDetail({ ...product, ...patch, product }),\n context\n )\n } else {\n productDetail = await createProductDetail(\n new ProductDetail({ ...product, ...patch, product, isDefault: true }),\n context\n )\n }\n\n const productId = id\n if (patch.thumbnail) {\n await deleteAttachmentsByRef(null, { refBys: [productId] }, context)\n await createAttachment(\n null,\n {\n attachment: {\n file: patch.thumbnail,\n refType: Product.name,\n refBy: product.id\n }\n },\n context\n )\n }\n\n return product\n } catch (error) {\n throw error\n }\n}\n"]}