From bce7afde50d3742d4a49255295215382adbfb6da Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Mon, 24 Apr 2023 12:53:40 +0800 Subject: [PATCH] Eagerly load profile of the user --- packages/api/src/entity/user.ts | 2 +- packages/api/src/resolvers/save/index.ts | 13 ++++++++----- .../src/services/create_page_save_request.ts | 19 +++++++++++-------- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/packages/api/src/entity/user.ts b/packages/api/src/entity/user.ts index b03c36e11..60859dc91 100644 --- a/packages/api/src/entity/user.ts +++ b/packages/api/src/entity/user.ts @@ -40,7 +40,7 @@ export class User { @OneToMany(() => NewsletterEmail, (newsletterEmail) => newsletterEmail.user) newsletterEmails?: NewsletterEmail[] - @OneToOne(() => Profile, (profile) => profile.user) + @OneToOne(() => Profile, (profile) => profile.user, { eager: true }) profile!: Profile @Column('varchar', { length: 255, nullable: true }) diff --git a/packages/api/src/resolvers/save/index.ts b/packages/api/src/resolvers/save/index.ts index ea6960049..d5c2abb29 100644 --- a/packages/api/src/resolvers/save/index.ts +++ b/packages/api/src/resolvers/save/index.ts @@ -1,3 +1,6 @@ +import { User } from '../../entity/user' +import { getRepository } from '../../entity/utils' +import { env } from '../../env' import { MutationSaveFileArgs, MutationSavePageArgs, @@ -6,12 +9,11 @@ import { SaveErrorCode, SaveSuccess, } from '../../generated/graphql' +import { saveFile } from '../../services/save_file' import { savePage } from '../../services/save_page' import { saveUrl } from '../../services/save_url' -import { saveFile } from '../../services/save_file' -import { authorized, userDataToUser } from '../../utils/helpers' import { analytics } from '../../utils/analytics' -import { env } from '../../env' +import { authorized, userDataToUser } from '../../utils/helpers' export const savePageResolver = authorized< SaveSuccess, @@ -51,7 +53,6 @@ export const saveUrlResolver = authorized< MutationSaveUrlArgs >(async (_, { input }, ctx) => { const { - models, claims: { uid }, } = ctx @@ -66,7 +67,9 @@ export const saveUrlResolver = authorized< }, }) - const user = userDataToUser(await models.user.get(uid)) + const user = await getRepository(User).findOneBy({ + id: uid, + }) if (!user) { return { errorCodes: [SaveErrorCode.Unauthorized] } } diff --git a/packages/api/src/services/create_page_save_request.ts b/packages/api/src/services/create_page_save_request.ts index 6285c1d81..4aec90219 100644 --- a/packages/api/src/services/create_page_save_request.ts +++ b/packages/api/src/services/create_page_save_request.ts @@ -26,6 +26,7 @@ interface PageSaveRequest { archivedAt?: Date | null labels?: Label[] priority?: 'low' | 'high' + user?: User | null } const SAVING_CONTENT = 'Your link is being saved...' @@ -76,6 +77,7 @@ export const createPageSaveRequest = async ({ archivedAt, priority, labels, + user, }: PageSaveRequest): Promise => { try { validateUrl(url) @@ -85,16 +87,17 @@ export const createPageSaveRequest = async ({ errorCode: CreateArticleSavingRequestErrorCode.BadData, }) } - - const user = await getRepository(User).findOne({ - where: { id: userId }, - relations: ['profile'], - }) + // if user is not specified, get it from the database if (!user) { - console.log('User not found', userId) - return Promise.reject({ - errorCode: CreateArticleSavingRequestErrorCode.BadData, + user = await getRepository(User).findOneBy({ + id: userId, }) + if (!user) { + console.log('User not found', userId) + return Promise.reject({ + errorCode: CreateArticleSavingRequestErrorCode.BadData, + }) + } } // get priority by checking rate limit if not specified