mirror of
https://github.com/yangshun/tech-interview-handbook.git
synced 2025-08-02 19:46:40 +08:00
[resumes][feat] add isStarredByUser field to Resumes (#381)
This commit is contained in:
@ -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;
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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 },
|
||||
},
|
||||
});
|
||||
},
|
||||
});
|
||||
|
Reference in New Issue
Block a user