4
4
"context"
5
5
"encoding/json"
6
6
"fmt"
7
+ "strings"
7
8
8
9
"github.com/samber/lo"
9
10
"github.com/twin-te/twinte-back/base"
@@ -209,7 +210,7 @@ func fromDBRegisteredCourse(dbRegisteredCourse *model.RegisteredCourse) (*timeta
209
210
}
210
211
211
212
if dbRegisteredCourse .Methods != nil {
212
- methods , err := base . MapWithErr (* dbRegisteredCourse .Methods , timetabledomain . ParseCourseMethod )
213
+ methods , err := fromDBRegisteredCourseMethods (* dbRegisteredCourse .Methods )
213
214
if err != nil {
214
215
return err
215
216
}
@@ -272,7 +273,7 @@ func toDBRegisteredCourse(registeredCourse *timetabledomain.RegisteredCourse, wi
272
273
}
273
274
274
275
if registeredCourse .Methods != nil {
275
- dbRegisteredCourse .Methods = lo .ToPtr (base . MapByString (* registeredCourse .Methods ))
276
+ dbRegisteredCourse .Methods = lo .ToPtr (toDBRegisteredCourseMethods (* registeredCourse .Methods ))
276
277
}
277
278
278
279
if registeredCourse .Schedules != nil {
@@ -297,10 +298,20 @@ type dbRegisteredCourseSchedule struct {
297
298
Room string `json:"room"`
298
299
}
299
300
300
- func fromDBRegisteredCourseSchedules (data []byte ) ([]timetabledomain.Schedule , error ) {
301
+ func fromDBRegisteredCourseMethods (dbMethods string ) ([]timetabledomain.CourseMethod , error ) {
302
+ dbMethods = strings .TrimPrefix (dbMethods , "{" )
303
+ dbMethods = strings .TrimSuffix (dbMethods , "}" )
304
+ return base .MapWithErr (strings .Split (dbMethods , "," ), timetabledomain .ParseCourseMethod )
305
+ }
306
+
307
+ func toDBRegisteredCourseMethods (methods []timetabledomain.CourseMethod ) string {
308
+ return fmt .Sprintf ("{%s}" , strings .Join (base .MapByString (methods ), "," ))
309
+ }
310
+
311
+ func fromDBRegisteredCourseSchedules (data string ) ([]timetabledomain.Schedule , error ) {
301
312
var dbRegisteredCourseSchedules []dbRegisteredCourseSchedule
302
313
303
- if err := json .Unmarshal (data , & dbRegisteredCourseSchedules ); err != nil {
314
+ if err := json .Unmarshal ([] byte ( data ) , & dbRegisteredCourseSchedules ); err != nil {
304
315
return nil , err
305
316
}
306
317
@@ -314,7 +325,7 @@ func fromDBRegisteredCourseSchedules(data []byte) ([]timetabledomain.Schedule, e
314
325
})
315
326
}
316
327
317
- func toDBRegisteredCourseSchedulesJSON (schedules []timetabledomain.Schedule ) ([] byte , error ) {
328
+ func toDBRegisteredCourseSchedulesJSON (schedules []timetabledomain.Schedule ) (string , error ) {
318
329
dbRegisteredCourseSchedules := base .Map (schedules , func (schedule timetabledomain.Schedule ) * dbRegisteredCourseSchedule {
319
330
return & dbRegisteredCourseSchedule {
320
331
Module : schedule .Module .String (),
@@ -323,5 +334,11 @@ func toDBRegisteredCourseSchedulesJSON(schedules []timetabledomain.Schedule) ([]
323
334
Room : schedule .Rooms ,
324
335
}
325
336
})
326
- return json .Marshal (dbRegisteredCourseSchedules )
337
+
338
+ data , err := json .Marshal (dbRegisteredCourseSchedules )
339
+ if err != nil {
340
+ return "" , err
341
+ }
342
+
343
+ return string (data ), nil
327
344
}
0 commit comments