From f3994a8a06d7b77ebe33f400de86da2dd90a1b9a Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Wed, 2 Aug 2023 22:00:09 +0800 Subject: [PATCH] fix test --- .../api/src/resolvers/subscriptions/index.ts | 89 ++++++++++--------- 1 file changed, 49 insertions(+), 40 deletions(-) diff --git a/packages/api/src/resolvers/subscriptions/index.ts b/packages/api/src/resolvers/subscriptions/index.ts index de2d62c5a..fe4b494ea 100644 --- a/packages/api/src/resolvers/subscriptions/index.ts +++ b/packages/api/src/resolvers/subscriptions/index.ts @@ -44,52 +44,61 @@ export const subscriptionsResolver = authorized< SubscriptionsSuccessPartial, SubscriptionsError, QuerySubscriptionsArgs ->(async (_obj, { sort, type: subscriptionType }, { claims: { uid }, log }) => { - log.info('subscriptionsResolver') +>( + async ( + _obj, + { sort, type = SubscriptionType.Newsletter }, // default to newsletter + { claims: { uid }, log } + ) => { + log.info('subscriptionsResolver') - analytics.track({ - userId: uid, - event: 'subscriptions', - properties: { - env: env.server.apiEnv, - }, - }) + analytics.track({ + userId: uid, + event: 'subscriptions', + properties: { + env: env.server.apiEnv, + }, + }) + + try { + const sortBy = + sort?.by === SortBy.UpdatedTime ? 'lastFetchedAt' : 'createdAt' + const sortOrder = sort?.order === SortOrder.Ascending ? 'ASC' : 'DESC' + const user = await getRepository(User).findOneBy({ id: uid }) + if (!user) { + return { + errorCodes: [SubscriptionsErrorCode.Unauthorized], + } + } + + const queryBuilder = getRepository(Subscription) + .createQueryBuilder('subscription') + .leftJoinAndSelect('subscription.newsletterEmail', 'newsletterEmail') + .where({ + user: { id: uid }, + type, + }) + + // only return active subscriptions for newsletter + if (type === SubscriptionType.Newsletter) { + queryBuilder.andWhere({ status: SubscriptionStatus.Active }) + } + + const subscriptions = await queryBuilder + .orderBy('subscription.' + sortBy, sortOrder) + .getMany() - try { - const sortBy = - sort?.by === SortBy.UpdatedTime ? 'lastFetchedAt' : 'createdAt' - const sortOrder = sort?.order === SortOrder.Ascending ? 'ASC' : 'DESC' - const user = await getRepository(User).findOneBy({ id: uid }) - if (!user) { return { - errorCodes: [SubscriptionsErrorCode.Unauthorized], + subscriptions, + } + } catch (error) { + log.error(error) + return { + errorCodes: [SubscriptionsErrorCode.BadRequest], } } - - const subscriptions = await getRepository(Subscription) - .createQueryBuilder('subscription') - .leftJoinAndSelect('subscription.newsletterEmail', 'newsletterEmail') - .where({ - user: { id: uid }, - status: - subscriptionType == SubscriptionType.Newsletter - ? SubscriptionStatus.Active - : undefined, // only return active subscriptions for newsletter - type: subscriptionType || SubscriptionType.Newsletter, // default to newsletter - }) - .orderBy('subscription.' + sortBy, sortOrder) - .getMany() - - return { - subscriptions, - } - } catch (error) { - log.error(error) - return { - errorCodes: [SubscriptionsErrorCode.BadRequest], - } } -}) +) export type UnsubscribeSuccessPartial = Merge< UnsubscribeSuccess,