github.com/oinume/lekcije@v0.0.0-20231017100347-5b4c5eb6ab24/backend/registry/usecase.go (about) 1 package registry 2 3 import ( 4 "database/sql" 5 6 "github.com/rollbar/rollbar-go" 7 "go.uber.org/zap" 8 9 "github.com/oinume/lekcije/backend/infrastructure/dmm_eikaiwa" 10 iga_measurement "github.com/oinume/lekcije/backend/infrastructure/ga_measurement" 11 "github.com/oinume/lekcije/backend/infrastructure/mysql" 12 irollbar "github.com/oinume/lekcije/backend/infrastructure/rollbar" 13 "github.com/oinume/lekcije/backend/model2" 14 "github.com/oinume/lekcije/backend/usecase" 15 ) 16 17 func NewErrorRecorderUsecase(appLogger *zap.Logger, rollbarClient *rollbar.Client) *usecase.ErrorRecorder { 18 return usecase.NewErrorRecorder( 19 appLogger, 20 irollbar.NewErrorRecorderRepository(rollbarClient), 21 ) 22 } 23 24 func NewFollowingTeacherUsecase(appLogger *zap.Logger, db *sql.DB, mCountryList *model2.MCountryList) *usecase.FollowingTeacher { 25 return usecase.NewFollowingTeacher( 26 appLogger, 27 mysql.NewDBRepository(db), 28 mysql.NewFollowingTeacherRepository(db), 29 mysql.NewUserRepository(db), 30 mysql.NewTeacherRepository(db), 31 dmm_eikaiwa.NewLessonFetcher(nil, 1, false, mCountryList, appLogger), 32 ) 33 } 34 35 func NewGAMeasurementUsecase(client iga_measurement.Client) *usecase.GAMeasurement { 36 return usecase.NewGAMeasurement(iga_measurement.NewGAMeasurementRepository(client)) 37 } 38 39 func NewLessonUsecase(db *sql.DB) *usecase.Lesson { 40 return usecase.NewLesson( 41 mysql.NewLessonRepository(db), 42 mysql.NewLessonStatusLogRepository(db), 43 ) 44 } 45 46 func NewNotificationTimeSpanUsecase(db *sql.DB) *usecase.NotificationTimeSpan { 47 return usecase.NewNotificationTimeSpan(mysql.NewNotificationTimeSpanRepository(db)) 48 } 49 50 func NewStatNotifierUsecase(db *sql.DB) *usecase.StatNotifier { 51 return usecase.NewStatNotifier(mysql.NewStatNotifierRepository(db)) 52 } 53 54 func NewTeacherUsecase(db *sql.DB) *usecase.Teacher { 55 return usecase.NewTeacher(mysql.NewTeacherRepository(db)) 56 } 57 58 func NewUserUsecase(db *sql.DB) *usecase.User { 59 return usecase.NewUser( 60 mysql.NewDBRepository(db), 61 mysql.NewUserRepository(db), 62 mysql.NewUserGoogleRepository(db), 63 ) 64 } 65 66 func NewUserAPITokenUsecase(db *sql.DB) *usecase.UserAPIToken { 67 return usecase.NewUserAPIToken( 68 mysql.NewUserAPITokenRepository(db), 69 ) 70 }