[resumes][refactor] Revert routers to User model

pull/322/head
Wu Peirong 3 years ago
parent e6f397416e
commit d629b74a35

@ -29,10 +29,7 @@ export default function ResumeReviewPage() {
const utils = trpc.useContext(); const utils = trpc.useContext();
// Safe to assert resumeId type as string because query is only sent if so // Safe to assert resumeId type as string because query is only sent if so
const detailsQuery = trpc.useQuery( const detailsQuery = trpc.useQuery(
[ ['resumes.details.find', { resumeId: resumeId as string }],
'resumes.details.find',
{ resumeId: resumeId as string, userId: session?.user?.id },
],
{ {
enabled: typeof resumeId === 'string' && session?.user?.id !== undefined, enabled: typeof resumeId === 'string' && session?.user?.id !== undefined,
}, },
@ -56,7 +53,6 @@ export default function ResumeReviewPage() {
// Star button only clickable if user exists // Star button only clickable if user exists
starMutation.mutate({ starMutation.mutate({
resumeId: resumeId as string, resumeId: resumeId as string,
userId: session!.user!.id!,
}); });
}; };

@ -6,10 +6,10 @@ export const resumesDetailsRouter = createRouter()
.query('find', { .query('find', {
input: z.object({ input: z.object({
resumeId: z.string(), resumeId: z.string(),
userId: z.string().optional(),
}), }),
async resolve({ ctx, input }) { async resolve({ ctx, input }) {
const { resumeId, userId } = input; const { resumeId } = input;
const userId = ctx.session?.user?.id;
// Use the resumeId to query all related information of a single resume // Use the resumeId to query all related information of a single resume
// from Resumesresume: // from Resumesresume:
@ -40,10 +40,11 @@ export const resumesDetailsRouter = createRouter()
.mutation('update_star', { .mutation('update_star', {
input: z.object({ input: z.object({
resumeId: z.string(), resumeId: z.string(),
userId: z.string(),
}), }),
async resolve({ ctx, input }) { async resolve({ ctx, input }) {
const { resumeId, userId } = input; const { resumeId } = input;
// Update_star will only be called if user is logged in
const userId = ctx.session!.user!.id;
// Use the resumeId and resumeProfileId to check if star exists // Use the resumeId and resumeProfileId to check if star exists
const resumesStar = await ctx.prisma.resumesStar.findUnique({ const resumesStar = await ctx.prisma.resumesStar.findUnique({

@ -15,23 +15,12 @@ export const resumesResumeUserRouter = createProtectedRouter().mutation(
}), }),
async resolve({ ctx, input }) { async resolve({ ctx, input }) {
const userId = ctx.session?.user.id; const userId = ctx.session?.user.id;
const resumeProfile = await ctx.prisma.resumesProfile.upsert({
create: {
userId,
},
update: {},
where: {
userId,
},
});
// TODO: Store file in file storage and retrieve URL // TODO: Store file in file storage and retrieve URL
return await ctx.prisma.resumesResume.create({ return await ctx.prisma.resumesResume.create({
data: { data: {
...input, ...input,
resumesProfileId: resumeProfile.id,
url: '', url: '',
userId,
}, },
}); });
}, },

@ -7,18 +7,9 @@ export const resumeReviewsRouter = createRouter().query('list', {
resumeId: z.string(), resumeId: z.string(),
}), }),
async resolve({ ctx, input }) { async resolve({ ctx, input }) {
const userId = ctx.session?.user?.id;
const { resumeId } = input; const { resumeId } = input;
const { resumesProfileId } =
await ctx.prisma.resumesResume.findUniqueOrThrow({
select: {
resumesProfileId: true,
},
where: {
id: resumeId,
},
});
// For this resume, we retrieve every comment's information, along with: // For this resume, we retrieve every comment's information, along with:
// The user's name and image to render // The user's name and image to render
// Number of votes, and whether the user (if-any) has voted // Number of votes, and whether the user (if-any) has voted
@ -29,20 +20,16 @@ export const resumeReviewsRouter = createRouter().query('list', {
votes: true, votes: true,
}, },
}, },
resumesProfile: { user: {
include: { select: {
user: { image: true,
select: { name: true,
image: true,
name: true,
},
},
}, },
}, },
votes: { votes: {
take: 1, take: 1,
where: { where: {
resumesProfileId, userId,
}, },
}, },
}, },

@ -6,8 +6,8 @@ import { createProtectedRouter } from './context';
type IResumeCommentInput = Readonly<{ type IResumeCommentInput = Readonly<{
description: string; description: string;
resumeId: string; resumeId: string;
resumesProfileId: string;
section: ResumesSection; section: ResumesSection;
userId: string;
}>; }>;
export const resumesReviewsUserRouter = createProtectedRouter().mutation( export const resumesReviewsUserRouter = createProtectedRouter().mutation(
@ -22,19 +22,10 @@ export const resumesReviewsUserRouter = createProtectedRouter().mutation(
skills: z.string(), skills: z.string(),
}), }),
async resolve({ ctx, input }) { async resolve({ ctx, input }) {
const userId = ctx.session?.user?.id;
const { resumeId, education, experience, general, projects, skills } = const { resumeId, education, experience, general, projects, skills } =
input; input;
const { resumesProfileId } =
await ctx.prisma.resumesResume.findUniqueOrThrow({
select: {
resumesProfileId: true,
},
where: {
id: resumeId,
},
});
// For each section, convert them into ResumesComment model if provided // For each section, convert them into ResumesComment model if provided
const comments: Array<IResumeCommentInput> = [ const comments: Array<IResumeCommentInput> = [
{ description: education, section: ResumesSection.EDUCATION }, { description: education, section: ResumesSection.EDUCATION },
@ -50,8 +41,8 @@ export const resumesReviewsUserRouter = createProtectedRouter().mutation(
return { return {
description, description,
resumeId, resumeId,
resumesProfileId,
section, section,
userId,
}; };
}); });

Loading…
Cancel
Save