From f9396450a50002cc0778830712faebf29be2d709 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Fri, 17 Mar 2023 11:23:10 +0800 Subject: [PATCH] Get saving request by url --- packages/api/src/generated/graphql.ts | 6 +++-- packages/api/src/generated/schema.graphql | 3 ++- .../resolvers/article_saving_request/index.ts | 25 ++++++++----------- packages/api/src/schema.ts | 3 ++- 4 files changed, 18 insertions(+), 19 deletions(-) diff --git a/packages/api/src/generated/graphql.ts b/packages/api/src/generated/graphql.ts index e1b744946..ae279e18a 100644 --- a/packages/api/src/generated/graphql.ts +++ b/packages/api/src/generated/graphql.ts @@ -168,6 +168,7 @@ export type ArticleSavingRequest = { slug: Scalars['String']; status: ArticleSavingRequestStatus; updatedAt: Scalars['Date']; + url: Scalars['String']; user: User; /** @deprecated userId has been replaced with user */ userId: Scalars['ID']; @@ -1751,7 +1752,7 @@ export type QueryArticleArgs = { export type QueryArticleSavingRequestArgs = { - id: Scalars['ID']; + url: Scalars['String']; }; @@ -4194,6 +4195,7 @@ export type ArticleSavingRequestResolvers; status?: Resolver; updatedAt?: Resolver; + url?: Resolver; user?: Resolver; userId?: Resolver; __isTypeOf?: IsTypeOfResolverFn; @@ -5077,7 +5079,7 @@ export type ProfileResolvers = { apiKeys?: Resolver; article?: Resolver>; - articleSavingRequest?: Resolver>; + articleSavingRequest?: Resolver>; articles?: Resolver>; deviceTokens?: Resolver; feedArticles?: Resolver>; diff --git a/packages/api/src/generated/schema.graphql b/packages/api/src/generated/schema.graphql index 76ba99cc7..895e67713 100644 --- a/packages/api/src/generated/schema.graphql +++ b/packages/api/src/generated/schema.graphql @@ -135,6 +135,7 @@ type ArticleSavingRequest { slug: String! status: ArticleSavingRequestStatus! updatedAt: Date! + url: String! user: User! userId: ID! @deprecated(reason: "userId has been replaced with user") } @@ -1245,7 +1246,7 @@ type Profile { type Query { apiKeys: ApiKeysResult! article(format: String, slug: String!, username: String!): ArticleResult! - articleSavingRequest(id: ID!): ArticleSavingRequestResult! + articleSavingRequest(url: String!): ArticleSavingRequestResult! articles(after: String, first: Int, includePending: Boolean, query: String, sharedOnly: Boolean, sort: SortParams): ArticlesResult! deviceTokens: DeviceTokensResult! feedArticles(after: String, first: Int, sharedByUser: ID, sort: SortParams): FeedArticlesResult! diff --git a/packages/api/src/resolvers/article_saving_request/index.ts b/packages/api/src/resolvers/article_saving_request/index.ts index 6a44d2b1a..38049bf91 100644 --- a/packages/api/src/resolvers/article_saving_request/index.ts +++ b/packages/api/src/resolvers/article_saving_request/index.ts @@ -1,4 +1,6 @@ /* eslint-disable prefer-const */ +import { getPageByParam } from '../../elastic/pages' +import { env } from '../../env' import { ArticleSavingRequestError, ArticleSavingRequestErrorCode, @@ -10,16 +12,14 @@ import { MutationCreateArticleSavingRequestArgs, QueryArticleSavingRequestArgs, } from '../../generated/graphql' +import { createPageSaveRequest } from '../../services/create_page_save_request' +import { analytics } from '../../utils/analytics' import { authorized, isParsingTimeout, pageToArticleSavingRequest, } from '../../utils/helpers' -import { createPageSaveRequest } from '../../services/create_page_save_request' -import { getPageById } from '../../elastic/pages' import { isErrorWithCode } from '../user' -import { analytics } from '../../utils/analytics' -import { env } from '../../env' export const createArticleSavingRequestResolver = authorized< CreateArticleSavingRequestSuccess, @@ -56,17 +56,12 @@ export const articleSavingRequestResolver = authorized< ArticleSavingRequestSuccess, ArticleSavingRequestError, QueryArticleSavingRequestArgs ->(async (_, { id }, { models }) => { - let page - let user - try { - page = await getPageById(id) - if (!page) { - return { errorCodes: [ArticleSavingRequestErrorCode.NotFound] } - } - user = await models.user.get(page.userId) - // eslint-disable-next-line no-empty - } catch (error) {} +>(async (_, { url }, { models, claims }) => { + const page = await getPageByParam({ url, userId: claims.uid }) + if (!page) { + return { errorCodes: [ArticleSavingRequestErrorCode.NotFound] } + } + const user = await models.user.get(page.userId) if (user && page) { if (isParsingTimeout(page)) { page.state = ArticleSavingRequestStatus.Succeeded diff --git a/packages/api/src/schema.ts b/packages/api/src/schema.ts index 48e9dff27..1b6b493a4 100755 --- a/packages/api/src/schema.ts +++ b/packages/api/src/schema.ts @@ -1074,6 +1074,7 @@ const schema = gql` errorCode: CreateArticleErrorCode createdAt: Date! updatedAt: Date! + url: String! } # Query: ArticleSavingRequest @@ -2525,7 +2526,7 @@ const schema = gql` getFollowers(userId: ID): GetFollowersResult! getFollowing(userId: ID): GetFollowingResult! getUserPersonalization: GetUserPersonalizationResult! - articleSavingRequest(id: ID!): ArticleSavingRequestResult! + articleSavingRequest(url: String!): ArticleSavingRequestResult! newsletterEmails: NewsletterEmailsResult! reminder(linkId: ID!): ReminderResult! labels: LabelsResult!