Explorar el Código

feat(core): Add bulk product update mutation

Relates to #853
Michael Bromley hace 3 años
padre
commit
fe007e2d16

+ 7 - 0
packages/asset-server-plugin/e2e/graphql/generated-e2e-asset-server-plugin-types.ts

@@ -2404,6 +2404,8 @@ export type Mutation = {
   createProduct: Product;
   /** Update an existing Product */
   updateProduct: Product;
+  /** Update multiple existing Products */
+  updateProducts: Array<Product>;
   /** Delete a Product */
   deleteProduct: DeletionResponse;
   /** Delete multiple Products */
@@ -2873,6 +2875,11 @@ export type MutationUpdateProductArgs = {
 };
 
 
+export type MutationUpdateProductsArgs = {
+  input: Array<UpdateProductInput>;
+};
+
+
 export type MutationDeleteProductArgs = {
   id: Scalars['ID'];
 };

+ 7 - 0
packages/common/src/generated-types.ts

@@ -2481,6 +2481,8 @@ export type Mutation = {
   createProduct: Product;
   /** Update an existing Product */
   updateProduct: Product;
+  /** Update multiple existing Products */
+  updateProducts: Array<Product>;
   /** Delete a Product */
   deleteProduct: DeletionResponse;
   /** Delete multiple Products */
@@ -2950,6 +2952,11 @@ export type MutationUpdateProductArgs = {
 };
 
 
+export type MutationUpdateProductsArgs = {
+  input: Array<UpdateProductInput>;
+};
+
+
 export type MutationDeleteProductArgs = {
   id: Scalars['ID'];
 };

+ 7 - 0
packages/core/e2e/graphql/generated-e2e-admin-types.ts

@@ -2404,6 +2404,8 @@ export type Mutation = {
   createProduct: Product;
   /** Update an existing Product */
   updateProduct: Product;
+  /** Update multiple existing Products */
+  updateProducts: Array<Product>;
   /** Delete a Product */
   deleteProduct: DeletionResponse;
   /** Delete multiple Products */
@@ -2873,6 +2875,11 @@ export type MutationUpdateProductArgs = {
 };
 
 
+export type MutationUpdateProductsArgs = {
+  input: Array<UpdateProductInput>;
+};
+
+
 export type MutationDeleteProductArgs = {
   id: Scalars['ID'];
 };

+ 12 - 0
packages/core/src/api/resolvers/admin/product.resolver.ts

@@ -14,6 +14,7 @@ import {
     MutationRemoveProductsFromChannelArgs,
     MutationRemoveProductVariantsFromChannelArgs,
     MutationUpdateProductArgs,
+    MutationUpdateProductsArgs,
     MutationUpdateProductVariantsArgs,
     Permission,
     QueryProductArgs,
@@ -126,6 +127,17 @@ export class ProductResolver {
         return await this.productService.update(ctx, input);
     }
 
+    @Transaction()
+    @Mutation()
+    @Allow(Permission.UpdateCatalog, Permission.UpdateProduct)
+    async updateProducts(
+        @Ctx() ctx: RequestContext,
+        @Args() args: MutationUpdateProductsArgs,
+    ): Promise<Array<Translated<Product>>> {
+        const { input } = args;
+        return await Promise.all(args.input.map(i => this.productService.update(ctx, i)));
+    }
+
     @Transaction()
     @Mutation()
     @Allow(Permission.DeleteCatalog, Permission.DeleteProduct)

+ 3 - 0
packages/core/src/api/schema/admin-api/product.api.graphql

@@ -16,6 +16,9 @@ type Mutation {
     "Update an existing Product"
     updateProduct(input: UpdateProductInput!): Product!
 
+    "Update multiple existing Products"
+    updateProducts(input: [UpdateProductInput!]!): [Product!]!
+
     "Delete a Product"
     deleteProduct(id: ID!): DeletionResponse!
 

+ 7 - 0
packages/elasticsearch-plugin/e2e/graphql/generated-e2e-elasticsearch-plugin-types.ts

@@ -2404,6 +2404,8 @@ export type Mutation = {
   createProduct: Product;
   /** Update an existing Product */
   updateProduct: Product;
+  /** Update multiple existing Products */
+  updateProducts: Array<Product>;
   /** Delete a Product */
   deleteProduct: DeletionResponse;
   /** Delete multiple Products */
@@ -2873,6 +2875,11 @@ export type MutationUpdateProductArgs = {
 };
 
 
+export type MutationUpdateProductsArgs = {
+  input: Array<UpdateProductInput>;
+};
+
+
 export type MutationDeleteProductArgs = {
   id: Scalars['ID'];
 };

+ 7 - 0
packages/payments-plugin/e2e/graphql/generated-admin-types.ts

@@ -2404,6 +2404,8 @@ export type Mutation = {
   createProduct: Product;
   /** Update an existing Product */
   updateProduct: Product;
+  /** Update multiple existing Products */
+  updateProducts: Array<Product>;
   /** Delete a Product */
   deleteProduct: DeletionResponse;
   /** Delete multiple Products */
@@ -2873,6 +2875,11 @@ export type MutationUpdateProductArgs = {
 };
 
 
+export type MutationUpdateProductsArgs = {
+  input: Array<UpdateProductInput>;
+};
+
+
 export type MutationDeleteProductArgs = {
   id: Scalars['ID'];
 };

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
schema-admin.json


+ 5 - 4
scripts/codegen/generate-graphql-types.ts

@@ -7,10 +7,11 @@ import { ADMIN_API_PATH, SHOP_API_PATH } from '../../packages/common/src/shared-
 
 import { downloadIntrospectionSchema } from './download-introspection-schema';
 
-const CLIENT_QUERY_FILES = path.join(
-    __dirname,
-    '../../packages/admin-ui/src/lib/core/src/data/definitions/**/*.ts',
-);
+const CLIENT_QUERY_FILES = [
+    path.join(__dirname, '../../packages/admin-ui/src/lib/core/src/data/definitions/**/*.ts'),
+    path.join(__dirname, '../../packages/admin-ui/src/lib/**/*.graphql.ts'),
+];
+
 const specFileToIgnore = [
     'import.e2e-spec',
     'plugin.e2e-spec',

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio