package testutils import ( "log/slog" entdb "github.com/openmeterio/openmeter/openmeter/ent/db" ledgeraccount "github.com/openmeterio/openmeter/openmeter/ledger/account" accountadapter "github.com/openmeterio/openmeter/openmeter/ledger/account/adapter" accountservice "github.com/openmeterio/openmeter/openmeter/ledger/account/service" "github.com/openmeterio/openmeter/openmeter/ledger/historical" historicaladapter "github.com/openmeterio/openmeter/openmeter/ledger/historical/adapter" "github.com/openmeterio/openmeter/openmeter/ledger/resolvers" resolversadapter "github.com/openmeterio/openmeter/openmeter/ledger/resolvers/adapter" "github.com/openmeterio/openmeter/openmeter/ledger/routingrules" "github.com/openmeterio/openmeter/pkg/framework/lockr" ) type Deps struct { AccountService ledgeraccount.Service ResolversService *resolvers.AccountResolver HistoricalLedger *historical.Ledger } func InitDeps(db *entdb.Client, logger *slog.Logger) (Deps, error) { repo := accountadapter.NewRepo(db) locker, err := lockr.NewLocker(&lockr.LockerConfig{ Logger: logger, }) if err != nil { return Deps{}, err } historicalRepo := historicaladapter.NewRepo(db) accountService := accountservice.New(repo, locker) historicalLedger := historical.NewLedger(historicalRepo, accountService, accountService, routingrules.DefaultValidator) customerAccountRepo := resolversadapter.NewRepo(db) accountResolver := resolvers.NewAccountResolver(resolvers.AccountResolverConfig{ AccountService: accountService, Repo: customerAccountRepo, Locker: locker, }) return Deps{ AccountService: accountService, ResolversService: accountResolver, HistoricalLedger: historicalLedger, }, nil }