123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- package sp
- import (
- "git.dmitriygnatenko.ru/dima/homethings/internal/repositories"
- authService "git.dmitriygnatenko.ru/dima/homethings/internal/services/auth"
- dbService "git.dmitriygnatenko.ru/dima/homethings/internal/services/db"
- envService "git.dmitriygnatenko.ru/dima/homethings/internal/services/env"
- mailerService "git.dmitriygnatenko.ru/dima/homethings/internal/services/mailer"
- )
- type ServiceProvider struct {
- env *envService.Service
- auth *authService.Service
- mailer *mailerService.Service
- placeRepository *repositories.PlaceRepository
- thingRepository *repositories.ThingRepository
- tagRepository *repositories.TagRepository
- placeThingRepository *repositories.PlaceThingRepository
- placeImageRepository *repositories.PlaceImageRepository
- thingImageRepository *repositories.ThingImageRepository
- thingTagRepository *repositories.ThingTagRepository
- userRepository *repositories.UserRepository
- thingNotificationRepository *repositories.ThingNotificationRepository
- fileRepository *repositories.FileRepository
- }
- func Init() (*ServiceProvider, error) {
- sp := &ServiceProvider{}
- env, err := envService.Init()
- if err != nil {
- return nil, err
- }
- sp.env = env
- auth, err := authService.Init(env)
- if err != nil {
- return nil, err
- }
- sp.auth = auth
- mailer, err := mailerService.Init(env)
- if err != nil {
- return nil, err
- }
- sp.mailer = mailer
- db, err := dbService.Init(env)
- if err != nil {
- return nil, err
- }
- // Init repositories
- sp.placeRepository = repositories.InitPlaceRepository(db)
- sp.thingRepository = repositories.InitThingRepository(db)
- sp.placeThingRepository = repositories.InitPlaceThingRepository(db)
- sp.placeImageRepository = repositories.InitPlaceImageRepository(db)
- sp.thingImageRepository = repositories.InitThingImageRepository(db)
- sp.tagRepository = repositories.InitTagRepository(db)
- sp.thingTagRepository = repositories.InitThingTagRepository(db)
- sp.userRepository = repositories.InitUserRepository(db)
- sp.thingNotificationRepository = repositories.InitThingNotificationRepository(db)
- sp.fileRepository = repositories.InitFileRepository()
- return sp, nil
- }
- func (sp *ServiceProvider) EnvService() *envService.Service {
- return sp.env
- }
- func (sp *ServiceProvider) AuthService() *authService.Service {
- return sp.auth
- }
- func (sp *ServiceProvider) MailerService() *mailerService.Service {
- return sp.mailer
- }
- func (sp *ServiceProvider) PlaceRepository() *repositories.PlaceRepository {
- return sp.placeRepository
- }
- func (sp *ServiceProvider) ThingRepository() *repositories.ThingRepository {
- return sp.thingRepository
- }
- func (sp *ServiceProvider) TagRepository() *repositories.TagRepository {
- return sp.tagRepository
- }
- func (sp *ServiceProvider) PlaceThingRepository() *repositories.PlaceThingRepository {
- return sp.placeThingRepository
- }
- func (sp *ServiceProvider) PlaceImageRepository() *repositories.PlaceImageRepository {
- return sp.placeImageRepository
- }
- func (sp *ServiceProvider) ThingImageRepository() *repositories.ThingImageRepository {
- return sp.thingImageRepository
- }
- func (sp *ServiceProvider) ThingTagRepository() *repositories.ThingTagRepository {
- return sp.thingTagRepository
- }
- func (sp *ServiceProvider) ThingNotificationRepository() *repositories.ThingNotificationRepository {
- return sp.thingNotificationRepository
- }
- func (sp *ServiceProvider) UserRepository() *repositories.UserRepository {
- return sp.userRepository
- }
- func (sp *ServiceProvider) FileRepository() *repositories.FileRepository {
- return sp.fileRepository
- }
|