@@ -13,6 +13,7 @@ import {
1313 UpvoteProduct ,
1414 GetCompany ,
1515 RegisterProductCompany ,
16+ GenerateProductDescription ,
1617} from '@darun/backend' ;
1718import { AuthRole } from '@darun/utils-apollo-server' ;
1819import { Arg , Authorized , Mutation , Resolver } from 'type-graphql' ;
@@ -21,6 +22,10 @@ import { AddProductLinkInput, AddProductLinkPayload } from './graphs/AddProductL
2122import { AddProductScreenshotInput , AddProductScreenshotPayload } from './graphs/AddProductScreenshot' ;
2223import { CreateProductInput , CreateProductPayload } from './graphs/CreateProduct' ;
2324import { EditProductInput , EditProductPayload } from './graphs/EditProduct' ;
25+ import {
26+ GenerateProductDescriptionInput ,
27+ GenerateProductDescriptionPayload ,
28+ } from './graphs/GenerateProductDescription' ;
2429import { IndexProductInput , IndexProductPayload } from './graphs/IndexProduct' ;
2530import { Product } from './graphs/Product' ;
2631import { PublishProductInput , PublishProductPayload } from './graphs/PublishProduct' ;
@@ -47,7 +52,8 @@ export class ProductMutationResolver {
4752 private readonly updateProductLinkUseCase : UpdateProductLink ,
4853 private readonly updateAlternativeProductUseCase : UpdateAlternativeProduct ,
4954 private readonly upvoteProductUseCase : UpvoteProduct ,
50- private readonly registerProductCompanyUseCase : RegisterProductCompany
55+ private readonly registerProductCompanyUseCase : RegisterProductCompany ,
56+ private readonly generateProductDescriptionUseCase : GenerateProductDescription
5157 ) { }
5258
5359 @Authorized ( [ AuthRole . Admin ] )
@@ -270,4 +276,24 @@ export class ProductMutationResolver {
270276 product : await this . getProductUseCase . execute ( { slug } ) ,
271277 } ;
272278 }
279+
280+ @Authorized ( [ AuthRole . Admin ] )
281+ @Mutation ( ( ) => GenerateProductDescriptionPayload )
282+ async generateProductDescription (
283+ @Arg ( 'input' ) input : GenerateProductDescriptionInput
284+ ) : Promise < GenerateProductDescriptionPayload > {
285+ const product = await this . getProductUseCase . execute ( { slug : input . slug } ) ;
286+
287+ if ( ! product ) {
288+ throw new Error ( 'Product not found' ) ;
289+ }
290+
291+ const updatedProduct = await this . generateProductDescriptionUseCase . execute ( {
292+ productId : product . id ,
293+ } ) ;
294+
295+ return {
296+ product : updatedProduct ,
297+ } ;
298+ }
273299}
0 commit comments