From 804ceb58e435193914ad81e9fc7c483b9a9036cd Mon Sep 17 00:00:00 2001 From: WRadoslaw Date: Wed, 24 May 2023 06:08:02 +0200 Subject: [PATCH 1/2] Make types generic --- .../resolvers/AdminResolver/types.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/server-extension/resolvers/AdminResolver/types.ts b/src/server-extension/resolvers/AdminResolver/types.ts index d9d8ad84e..1844faa4c 100644 --- a/src/server-extension/resolvers/AdminResolver/types.ts +++ b/src/server-extension/resolvers/AdminResolver/types.ts @@ -216,18 +216,18 @@ export class GeneratedSignature { registerEnumType(AppAction.ActionType, { name: 'AppActionActionType' }) @ArgsType() -export class SetFeaturedNftsInput { +export class FeaturedNftsActionInput { @Field(() => [String], { - description: 'IDs of the NFTs that should be featured by the Gateway', + description: 'IDs of the NFTs that should be included in gateway featuring action', }) - featuredNftsIds: string[] + nftsIds: string[] } @ObjectType() -export class SetFeaturedNftsResult { +export class FeaturedNftsActionResult { @Field(() => Int, { nullable: true, - description: 'The updated number of nft that are now explicitly featured by the Gateway', + description: 'The number of nfts that were affected by the action', }) - newNumberOfNftsFeatured?: number + nftsAffected?: number } From fe6c8c7bac9ccb93257ba9a85e22bf5f7f19d217 Mon Sep 17 00:00:00 2001 From: WRadoslaw Date: Wed, 24 May 2023 06:08:39 +0200 Subject: [PATCH 2/2] Add two extra mutations for nft feature flow --- .../resolvers/AdminResolver/index.ts | 66 ++++++++++++++++--- 1 file changed, 56 insertions(+), 10 deletions(-) diff --git a/src/server-extension/resolvers/AdminResolver/index.ts b/src/server-extension/resolvers/AdminResolver/index.ts index 67590dac4..73ebceb6b 100644 --- a/src/server-extension/resolvers/AdminResolver/index.ts +++ b/src/server-extension/resolvers/AdminResolver/index.ts @@ -6,14 +6,14 @@ import { ExcludableContentType, ExcludeContentArgs, ExcludeContentResult, + FeaturedNftsActionInput, + FeaturedNftsActionResult, GeneratedSignature, KillSwitch, RestoreContentArgs, RestoreContentResult, SetCategoryFeaturedVideosArgs, SetCategoryFeaturedVideosResult, - SetFeaturedNftsInput, - SetFeaturedNftsResult, SetKillSwitchInput, SetSupportedCategoriesInput, SetSupportedCategoriesResult, @@ -236,12 +236,12 @@ export class AdminResolver { } @UseMiddleware(OperatorOnly) - @Mutation(() => SetFeaturedNftsResult) + @Mutation(() => FeaturedNftsActionResult) async setFeaturedNfts( - @Args() { featuredNftsIds }: SetFeaturedNftsInput - ): Promise { + @Args() { nftsIds }: FeaturedNftsActionInput + ): Promise { const em = await this.em() - let newNumberOfNftsFeatured = 0 + let nftsAffected = 0 await em .createQueryBuilder() @@ -250,18 +250,64 @@ export class AdminResolver { .where({ is_featured: true }) .execute() - if (featuredNftsIds.length) { + if (nftsIds.length) { const result = await em .createQueryBuilder() .update(`processor.owned_nft`) .set({ is_featured: true }) - .where({ id: In(featuredNftsIds) }) + .where({ id: In(nftsIds) }) .execute() - newNumberOfNftsFeatured = result.affected || 0 + nftsAffected = result.affected || 0 } return { - newNumberOfNftsFeatured, + nftsAffected, + } + } + + @UseMiddleware(OperatorOnly) + @Mutation(() => FeaturedNftsActionResult) + async addFeaturedNfs( + @Args() { nftsIds }: FeaturedNftsActionInput + ): Promise { + const em = await this.em() + let nftsAffected = 0 + + if (nftsIds.length) { + const result = await em + .createQueryBuilder() + .update(`processor.owned_nft`) + .set({ is_featured: true }) + .where({ id: In(nftsIds) }) + .execute() + nftsAffected = result.affected || 0 + } + + return { + nftsAffected, + } + } + + @UseMiddleware(OperatorOnly) + @Mutation(() => FeaturedNftsActionResult) + async removeFeaturedNfs( + @Args() { nftsIds }: FeaturedNftsActionInput + ): Promise { + const em = await this.em() + let nftsAffected = 0 + + if (nftsIds.length) { + const result = await em + .createQueryBuilder() + .update(`processor.owned_nft`) + .set({ is_featured: false }) + .where({ id: In(nftsIds) }) + .execute() + nftsAffected = result.affected || 0 + } + + return { + nftsAffected, } }