diff --git a/apps/portal/src/server/router/index.ts b/apps/portal/src/server/router/index.ts index 9c2b451b..d0247ceb 100644 --- a/apps/portal/src/server/router/index.ts +++ b/apps/portal/src/server/router/index.ts @@ -2,6 +2,7 @@ import superjson from 'superjson'; import { createRouter } from './context'; import { protectedExampleRouter } from './protected-example-router'; +import { resumesRouter } from './resumes'; import { resumesResumeUserRouter } from './resumes-resume-user-router'; import { resumeReviewsRouter } from './resumes-reviews-router'; import { resumesReviewsUserRouter } from './resumes-reviews-user-router'; @@ -16,6 +17,7 @@ export const appRouter = createRouter() .merge('auth.', protectedExampleRouter) .merge('todos.', todosRouter) .merge('todos.user.', todosUserRouter) + .merge('resumes.resume.', resumesRouter) .merge('resumes.resume.user.', resumesResumeUserRouter) .merge('resumes.reviews.', resumeReviewsRouter) .merge('resumes.reviews.user.', resumesReviewsUserRouter); diff --git a/apps/portal/src/server/router/resumes.ts b/apps/portal/src/server/router/resumes.ts new file mode 100644 index 00000000..12a5120d --- /dev/null +++ b/apps/portal/src/server/router/resumes.ts @@ -0,0 +1,47 @@ +import { createRouter } from './context'; + +import type { Resume } from '~/types/resume'; + +export const resumesRouter = createRouter().query('list', { + async resolve({ ctx }) { + const resumesData = await ctx.prisma.resumesResume.findMany({ + include: { + _count: { + select: { + comments: true, + stars: true, + }, + }, + resumesProfile: { + select: { + user: { + select: { + name: true, + }, + }, + }, + }, + }, + orderBy: { + createdAt: 'desc', + }, + }); + return resumesData.map((r) => { + const resume: Resume = { + additionalInfo: r.additionalInfo, + createdAt: r.createdAt, + experience: r.experience, + id: r.id, + location: r.location, + numComments: r._count.comments, + numStars: r._count.stars, + role: r.role, + title: r.title, + updatedAt: r.updatedAt, + url: r.url, + user: r.resumesProfile.user.name!, + }; + return resume; + }); + }, +}); diff --git a/apps/portal/src/types/resume.d.ts b/apps/portal/src/types/resume.d.ts new file mode 100644 index 00000000..f712d39d --- /dev/null +++ b/apps/portal/src/types/resume.d.ts @@ -0,0 +1,14 @@ +export type Resume = { + additionalInfo: string?; + createdAt: Date; + experience: string; + id: string; + location: string; + numComments: number; + numStars: number; + role: string; + title: string; + updatedAt: Date; + url: string; + user: string; +};