// Code generated by Wire. DO NOT EDIT.

//go:generate go run -mod=mod github.com/google/wire/cmd/wire
//go:build !wireinject
// +build !wireinject

package server

import (
	"github.com/cloudzenith/DouTok/backend/baseService/internal/applications/accountapp"
	"github.com/cloudzenith/DouTok/backend/baseService/internal/applications/authapp"
	"github.com/cloudzenith/DouTok/backend/baseService/internal/applications/fileapp"
	"github.com/cloudzenith/DouTok/backend/baseService/internal/applications/postapp"
	"github.com/cloudzenith/DouTok/backend/baseService/internal/domain/innerservice/filerepohelper"
	"github.com/cloudzenith/DouTok/backend/baseService/internal/domain/service/accountservice"
	"github.com/cloudzenith/DouTok/backend/baseService/internal/domain/service/authservice"
	"github.com/cloudzenith/DouTok/backend/baseService/internal/domain/service/fileservice"
	"github.com/cloudzenith/DouTok/backend/baseService/internal/domain/service/postservice"
	"github.com/cloudzenith/DouTok/backend/baseService/internal/infrastructure/adapters/thirdmsgadapter"
	"github.com/cloudzenith/DouTok/backend/baseService/internal/infrastructure/redis/verificationcoderedis"
	"github.com/cloudzenith/DouTok/backend/baseService/internal/infrastructure/repositories/accountrepo"
	"github.com/cloudzenith/DouTok/backend/baseService/internal/infrastructure/repositories/filerepo"
	"github.com/cloudzenith/DouTok/backend/baseService/internal/infrastructure/repositories/miniorepo"
	"github.com/cloudzenith/DouTok/backend/baseService/internal/infrastructure/repositories/templaterepo"
)

// Injectors from wire.go:

func initAccountApplication() *accountapp.AccountApplication {
	persistRepository := accountrepo.New()
	service := accountservice.New(persistRepository)
	accountApplication := accountapp.New(service)
	return accountApplication
}

func initAuthApplication() *authapp.AuthApplication {
	redisRepository := verificationcoderedis.New()
	authService := authservice.New(redisRepository)
	authApplication := authapp.New(authService)
	return authApplication
}

func initPostApplication() *postapp.PostApplication {
	persistRepository := templaterepo.New()
	thirdMsgAdapter := thirdmsgadapter.New()
	postService := postservice.New(persistRepository, thirdMsgAdapter)
	postApplication := postapp.New(postService)
	return postApplication
}

func initFileApplication(fileTableShardingConfig filerepohelper.FileTableShardingConfig) *fileapp.FileApplication {
	persistRepository := filerepo.New()
	miniorepoPersistRepository := miniorepo.New()
	fileService := fileservice.New(persistRepository, miniorepoPersistRepository, fileTableShardingConfig)
	fileApplication := fileapp.New(fileService)
	return fileApplication
}
