// Code generated by Wire. DO NOT EDIT.

//go:generate wire
//+build !wireinject

package di

import (
	"authservice/internal/persistance/database"
	"authservice/internal/repository"
	"authservice/internal/service"
)

// Injectors from wire.go:

func WireAppComponent() *service.AuthService {
	dbConfig := database.ProvideConfigProduction()
	databaseDatabase := database.ProvideDatabase(dbConfig)
	authRepository := repository.ProvideAuthRepository(databaseDatabase)
	jwtCrypto := repository.ProvideSigned()
	cryptoRepository := repository.ProvideCryptoRepository(jwtCrypto)
	authService := service.ProvideAuthService(authRepository, cryptoRepository)
	return authService
}

func WireAppComponentDev() *service.AuthService {
	dbConfig := database.ProvideConfigDevelopment()
	databaseDatabase := database.ProvideDatabase(dbConfig)
	authRepository := repository.ProvideAuthRepository(databaseDatabase)
	jwtCrypto := repository.ProvideSigned()
	cryptoRepository := repository.ProvideCryptoRepository(jwtCrypto)
	authService := service.ProvideAuthService(authRepository, cryptoRepository)
	return authService
}

func WireAppComponentTesting() *service.AuthService {
	databaseDatabase := database.ProvideTestDatabase()
	authRepository := repository.ProvideAuthRepository(databaseDatabase)
	jwtCrypto := repository.ProvideSigned()
	cryptoRepository := repository.ProvideCryptoRepository(jwtCrypto)
	authService := service.ProvideAuthService(authRepository, cryptoRepository)
	return authService
}
