[resumes][feat] add isStarredByUser field to Resumes (#381)

This commit is contained in:
Keane Chan
2022-10-15 12:41:38 +08:00
committed by GitHub
parent 495cc8360c
commit 0666c99151
7 changed files with 26 additions and 38 deletions

View File

@ -22,7 +22,7 @@ export const resumesCommentsUserRouter = createProtectedRouter().mutation(
skills: z.string(),
}),
async resolve({ ctx, input }) {
const userId = ctx.session?.user?.id;
const userId = ctx.session.user.id;
const { resumeId, education, experience, general, projects, skills } =
input;

View File

@ -7,6 +7,7 @@ import type { Resume } from '~/types/resume';
export const resumesRouter = createRouter()
.query('findAll', {
async resolve({ ctx }) {
const userId = ctx.session?.user?.id;
const resumesData = await ctx.prisma.resumesResume.findMany({
include: {
_count: {
@ -15,6 +16,13 @@ export const resumesRouter = createRouter()
stars: true,
},
},
stars: {
where: {
OR: {
userId,
},
},
},
user: {
select: {
name: true,
@ -31,6 +39,7 @@ export const resumesRouter = createRouter()
createdAt: r.createdAt,
experience: r.experience,
id: r.id,
isStarredByUser: r.stars.length > 0,
location: r.location,
numComments: r._count.comments,
numStars: r._count.stars,

View File

@ -17,7 +17,7 @@ export const resumesResumeUserRouter = createProtectedRouter()
url: z.string(),
}),
async resolve({ ctx, input }) {
const userId = ctx.session?.user.id;
const userId = ctx.session.user.id;
return await ctx.prisma.resumesResume.upsert({
create: {
@ -46,7 +46,7 @@ export const resumesResumeUserRouter = createProtectedRouter()
})
.query('findUserStarred', {
async resolve({ ctx }) {
const userId = ctx.session?.user?.id;
const userId = ctx.session.user.id;
const resumeStarsData = await ctx.prisma.resumesStar.findMany({
include: {
resume: {
@ -78,6 +78,7 @@ export const resumesResumeUserRouter = createProtectedRouter()
createdAt: rs.resume.createdAt,
experience: rs.resume.experience,
id: rs.resume.id,
isStarredByUser: true,
location: rs.resume.location,
numComments: rs.resume._count.comments,
numStars: rs.resume._count.stars,
@ -92,7 +93,7 @@ export const resumesResumeUserRouter = createProtectedRouter()
})
.query('findUserCreated', {
async resolve({ ctx }) {
const userId = ctx.session?.user?.id;
const userId = ctx.session.user.id;
const resumesData = await ctx.prisma.resumesResume.findMany({
include: {
_count: {
@ -101,6 +102,11 @@ export const resumesResumeUserRouter = createProtectedRouter()
stars: true,
},
},
stars: {
where: {
userId,
},
},
user: {
select: {
name: true,
@ -120,6 +126,7 @@ export const resumesResumeUserRouter = createProtectedRouter()
createdAt: r.createdAt,
experience: r.experience,
id: r.id,
isStarredByUser: r.stars.length > 0,
location: r.location,
numComments: r._count.comments,
numStars: r._count.stars,
@ -131,18 +138,4 @@ export const resumesResumeUserRouter = createProtectedRouter()
return resume;
});
},
})
.query('isResumeStarred', {
input: z.object({
resumeId: z.string(),
}),
async resolve({ ctx, input }) {
const userId = ctx.session?.user?.id;
const { resumeId } = input;
return await ctx.prisma.resumesStar.findUnique({
where: {
userId_resumeId: { resumeId, userId },
},
});
},
});