From cc2fe045686ff6b67549bc3a615c11e3e704b147 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Thu, 28 Mar 2024 14:42:08 +0800 Subject: [PATCH] add featureList to the User type which contains a list of feature type --- packages/api/src/generated/graphql.ts | 2 ++ packages/api/src/generated/schema.graphql | 1 + packages/api/src/resolvers/function_resolvers.ts | 13 ++++++++++++- packages/api/src/schema.ts | 1 + packages/api/src/services/features.ts | 14 ++++++-------- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/packages/api/src/generated/graphql.ts b/packages/api/src/generated/graphql.ts index c1758f65f..82b4cef2c 100644 --- a/packages/api/src/generated/graphql.ts +++ b/packages/api/src/generated/graphql.ts @@ -3696,6 +3696,7 @@ export enum UploadImportFileType { export type User = { __typename?: 'User'; email?: Maybe; + featureList?: Maybe>>; features?: Maybe>>; followersCount?: Maybe; friendsCount?: Maybe; @@ -7139,6 +7140,7 @@ export type UploadImportFileSuccessResolvers = { email?: Resolver, ParentType, ContextType>; + featureList?: Resolver>>, ParentType, ContextType>; features?: Resolver>>, ParentType, ContextType>; followersCount?: Resolver, ParentType, ContextType>; friendsCount?: Resolver, ParentType, ContextType>; diff --git a/packages/api/src/generated/schema.graphql b/packages/api/src/generated/schema.graphql index 104a34987..11bca2d29 100644 --- a/packages/api/src/generated/schema.graphql +++ b/packages/api/src/generated/schema.graphql @@ -2984,6 +2984,7 @@ enum UploadImportFileType { type User { email: String + featureList: [Feature] features: [String] followersCount: Int friendsCount: Int diff --git a/packages/api/src/resolvers/function_resolvers.ts b/packages/api/src/resolvers/function_resolvers.ts index 8757c10a1..cf391b6db 100644 --- a/packages/api/src/resolvers/function_resolvers.ts +++ b/packages/api/src/resolvers/function_resolvers.ts @@ -376,7 +376,18 @@ export const functionResolvers = { if (!ctx.claims?.uid) { return undefined } - return findUserFeatures(ctx.claims.uid) + const userFeatures = await findUserFeatures(ctx.claims.uid) + return userFeatures.map((feature) => feature.name) + }, + async featureList( + _: User, + __: Record, + ctx: WithDataSourcesContext + ) { + if (!ctx.uid) { + return undefined + } + return findUserFeatures(ctx.uid) }, }, Article: { diff --git a/packages/api/src/schema.ts b/packages/api/src/schema.ts index 42d234a7d..2e75d0ee6 100755 --- a/packages/api/src/schema.ts +++ b/packages/api/src/schema.ts @@ -89,6 +89,7 @@ const schema = gql` source: String intercomHash: String features: [String] + featureList: [Feature] } type Profile { diff --git a/packages/api/src/services/features.ts b/packages/api/src/services/features.ts index cb5ca67b2..5c1172d27 100644 --- a/packages/api/src/services/features.ts +++ b/packages/api/src/services/features.ts @@ -122,14 +122,12 @@ export const signFeatureToken = ( ) } -export const findUserFeatures = async (userId: string): Promise => { - return ( - await getRepository(Feature).find({ - where: { - user: { id: userId }, - }, - }) - ).map((feature) => feature.name) +export const findUserFeatures = async (userId: string) => { + return getRepository(Feature).find({ + where: { + user: { id: userId }, + }, + }) } export const findGrantedFeatureByName = async (