11import { Err , Ok , type Result } from "common/lib/result" ;
2- import type { Relationship , User , UserID } from "common/types" ;
2+ import type {
3+ Relationship ,
4+ UserID ,
5+ UserWithCoursesAndSubjects ,
6+ } from "common/types" ;
37import { prisma } from "./client" ;
48
59// マッチリクエストの送信
@@ -114,7 +118,7 @@ export async function cancelRequest(
114118//ユーザーへのリクエストを探す 俺をリクエストしているのは誰だ
115119export async function getPendingRequestsToUser (
116120 userId : UserID ,
117- ) : Promise < Result < User [ ] > > {
121+ ) : Promise < Result < UserWithCoursesAndSubjects [ ] > > {
118122 try {
119123 const found = await prisma . user . findMany ( {
120124 where : {
@@ -125,8 +129,37 @@ export async function getPendingRequestsToUser(
125129 } ,
126130 } ,
127131 } ,
132+ include : {
133+ enrollments : {
134+ include : {
135+ course : {
136+ include : {
137+ enrollments : true ,
138+ slots : true ,
139+ } ,
140+ } ,
141+ } ,
142+ } ,
143+ interests : {
144+ include : {
145+ subject : true ,
146+ } ,
147+ } ,
148+ } ,
128149 } ) ;
129- return Ok ( found ) ;
150+ return Ok (
151+ found . map ( ( user ) => {
152+ return {
153+ ...user ,
154+ interestSubjects : user . interests . map ( ( interest ) => {
155+ return interest . subject ;
156+ } ) ,
157+ courses : user . enrollments . map ( ( enrollment ) => {
158+ return enrollment . course ;
159+ } ) ,
160+ } ;
161+ } ) ,
162+ ) ;
130163 } catch ( e ) {
131164 return Err ( e ) ;
132165 }
@@ -135,7 +168,7 @@ export async function getPendingRequestsToUser(
135168//ユーザーがリクエストしている人を探す 俺がリクエストしているのは誰だ
136169export async function getPendingRequestsFromUser (
137170 userId : UserID ,
138- ) : Promise < Result < User [ ] > > {
171+ ) : Promise < Result < UserWithCoursesAndSubjects [ ] > > {
139172 try {
140173 const found = await prisma . user . findMany ( {
141174 where : {
@@ -146,15 +179,46 @@ export async function getPendingRequestsFromUser(
146179 } ,
147180 } ,
148181 } ,
182+ include : {
183+ enrollments : {
184+ include : {
185+ course : {
186+ include : {
187+ enrollments : true ,
188+ slots : true ,
189+ } ,
190+ } ,
191+ } ,
192+ } ,
193+ interests : {
194+ include : {
195+ subject : true ,
196+ } ,
197+ } ,
198+ } ,
149199 } ) ;
150- return Ok ( found ) ;
200+ return Ok (
201+ found . map ( ( user ) => {
202+ return {
203+ ...user ,
204+ interestSubjects : user . interests . map ( ( interest ) => {
205+ return interest . subject ;
206+ } ) ,
207+ courses : user . enrollments . map ( ( enrollment ) => {
208+ return enrollment . course ;
209+ } ) ,
210+ } ;
211+ } ) ,
212+ ) ;
151213 } catch ( e ) {
152214 return Err ( e ) ;
153215 }
154216}
155217
156218//マッチした人の取得
157- export async function getMatchedUser ( userId : UserID ) : Promise < Result < User [ ] > > {
219+ export async function getMatchedUser (
220+ userId : UserID ,
221+ ) : Promise < Result < UserWithCoursesAndSubjects [ ] > > {
158222 try {
159223 const found = await prisma . user . findMany ( {
160224 where : {
@@ -177,8 +241,37 @@ export async function getMatchedUser(userId: UserID): Promise<Result<User[]>> {
177241 } ,
178242 ] ,
179243 } ,
244+ include : {
245+ enrollments : {
246+ include : {
247+ course : {
248+ include : {
249+ enrollments : true ,
250+ slots : true ,
251+ } ,
252+ } ,
253+ } ,
254+ } ,
255+ interests : {
256+ include : {
257+ subject : true ,
258+ } ,
259+ } ,
260+ } ,
180261 } ) ;
181- return Ok ( found ) ;
262+ return Ok (
263+ found . map ( ( user ) => {
264+ return {
265+ ...user ,
266+ interestSubjects : user . interests . map ( ( interest ) => {
267+ return interest . subject ;
268+ } ) ,
269+ courses : user . enrollments . map ( ( enrollment ) => {
270+ return enrollment . course ;
271+ } ) ,
272+ } ;
273+ } ) ,
274+ ) ;
182275 } catch ( e ) {
183276 return Err ( e ) ;
184277 }
0 commit comments