// 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 main

import (
	"github.com/go-kratos/kratos/v2"
	"github.com/go-kratos/kratos/v2/log"
	"micro/internal/biz"
	"micro/internal/conf"
	"micro/internal/data"
	"micro/internal/server"
	"micro/internal/service"
)

import (
	_ "go.uber.org/automaxprocs"
)

// Injectors from wire.go:

// wireApp init kratos application.
func wireApp(confServer *conf.Server, confData *conf.Data, logger log.Logger) (*kratos.App, func(), error) {
	db := data.NewDB(confData)
	client := data.NewRedis(confData)
	dataData, cleanup, err := data.NewData(confData, logger, db, client)
	if err != nil {
		return nil, nil, err
	}
	sysUserRepo := data.NewSysUserRepo(dataData, logger)
	sysRoleRepo := data.NewSysRoleRepo(dataData, logger)
	sysUserUsecase := biz.NewSysUserUsecase(sysUserRepo, sysRoleRepo, logger)
	sysMenuRepo := data.NewSysMenuRepo(dataData, logger)
	sysDeptRepo := data.NewSysDeptRepo(dataData, logger)
	sysRoleUsecase := biz.NewSysRoleUsecase(sysRoleRepo, sysMenuRepo, sysDeptRepo, sysUserRepo, logger)
	sysMenuUsecase := biz.NewSysMenuUsecase(sysMenuRepo, logger)
	coreRepo := data.NewCoreRepo(dataData, logger)
	coreUsecase := biz.NewCoreUsecase(coreRepo, logger)
	authService := service.NewAuthService(sysUserUsecase, sysRoleUsecase, sysMenuUsecase, coreUsecase, logger)
	sysPostRepo := data.NewSysPostRepo(dataData, logger)
	sysPostUsecase := biz.NewSysPostUsecase(sysPostRepo, logger)
	sysUserService := service.NewSysUserService(sysUserUsecase, sysRoleUsecase, sysPostUsecase, logger)
	sysRoleService := service.NewSysRoleService(sysRoleUsecase, logger)
	sysMenuService := service.NewSysMenuService(sysMenuUsecase, logger)
	sysDeptUsecase := biz.NewSysDeptUsecase(sysDeptRepo, logger)
	sysDeptService := service.NewSysDeptService(sysDeptUsecase, logger)
	sysDictRepo := data.NewSysDictRepo(dataData, logger)
	sysDictUsecase := biz.NewSysDictUsecase(sysDictRepo, coreRepo, logger)
	sysDictService := service.NewSysDictService(sysDictUsecase, logger)
	sysConfigRepo := data.NewSysConfigRepo(dataData, logger)
	sysConfigUsecase := biz.NewSysConfigUsecase(sysConfigRepo, logger)
	sysConfigService := service.NewSysConfigService(sysConfigUsecase, logger)
	sysPostService := service.NewSysPostService(sysPostUsecase, logger)
	monitorService := service.NewMonitorService()
	httpServer := server.NewHTTPServer(confServer, logger, authService, sysUserService, sysRoleService, sysMenuService, sysDeptService, sysDictService, sysConfigService, sysPostService, monitorService)
	app := newApp(logger, httpServer)
	return app, func() {
		cleanup()
	}, nil
}
