diff --git a/server/src/functions/engines/recommendation.ts b/server/src/functions/engines/recommendation.ts index adfa93e3..39636532 100644 --- a/server/src/functions/engines/recommendation.ts +++ b/server/src/functions/engines/recommendation.ts @@ -1,7 +1,9 @@ import { recommend as sql } from "@prisma/client/sql"; import { Err, Ok, type Result } from "common/lib/result"; -import type { User, UserID, UserWithCoursesAndSubjects } from "common/types"; +import type { UserID, UserWithCoursesAndSubjects } from "common/types"; import { prisma } from "../../database/client"; +import { getCoursesByUserId } from "../../database/courses"; +import * as interest from "../../database/interest"; export async function recommendedTo( user: UserID, @@ -10,7 +12,7 @@ export async function recommendedTo( ): Promise< Result< Array<{ - u: User; // UserWithCoursesAndSubjects + u: UserWithCoursesAndSubjects; count: number; }> > @@ -22,7 +24,16 @@ export async function recommendedTo( const { overlap: count, ...u } = res; if (count === null) throw new Error("count is null: something is wrong"); - return { count: Number(count), u }; + const courses = getCoursesByUserId(u.id); + const subjects = interest.of(u.id); + return { + count: Number(count), + u: { + ...u, + courses: await courses, + interestSubjects: await subjects, + }, + }; }), ) .then((val) => Ok(val))