mirror of
https://github.com/emo2007/block-accounting.git
synced 2024-11-10 04:36:26 +00:00
51 lines
1.4 KiB
Go
51 lines
1.4 KiB
Go
package factory
|
|
|
|
import (
|
|
"database/sql"
|
|
"log/slog"
|
|
|
|
"github.com/emochka2007/block-accounting/internal/pkg/config"
|
|
"github.com/emochka2007/block-accounting/internal/usecase/repository/auth"
|
|
"github.com/emochka2007/block-accounting/internal/usecase/repository/cache"
|
|
"github.com/emochka2007/block-accounting/internal/usecase/repository/organizations"
|
|
"github.com/emochka2007/block-accounting/internal/usecase/repository/transactions"
|
|
"github.com/emochka2007/block-accounting/internal/usecase/repository/users"
|
|
"github.com/redis/go-redis/v9"
|
|
)
|
|
|
|
func provideUsersRepository(db *sql.DB) users.Repository {
|
|
return users.NewRepository(db)
|
|
}
|
|
|
|
func provideOrganizationsRepository(
|
|
db *sql.DB,
|
|
uRepo users.Repository,
|
|
) organizations.Repository {
|
|
return organizations.NewRepository(db, uRepo)
|
|
}
|
|
|
|
func provideTxRepository(db *sql.DB, or organizations.Repository) transactions.Repository {
|
|
return transactions.NewRepository(db, or)
|
|
}
|
|
|
|
func provideAuthRepository(db *sql.DB) auth.Repository {
|
|
return auth.NewRepository(db)
|
|
}
|
|
|
|
func provideRedisConnection(c config.Config) (*redis.Client, func()) {
|
|
r := redis.NewClient(&redis.Options{
|
|
Addr: c.DB.CacheHost,
|
|
Username: c.DB.CacheUser,
|
|
Password: c.DB.CacheSecret,
|
|
})
|
|
|
|
return r, func() { r.Close() }
|
|
}
|
|
|
|
func provideRedisCache(c *redis.Client, log *slog.Logger) cache.Cache {
|
|
return cache.NewRedisCache(
|
|
log.WithGroup("redis-cache"),
|
|
c,
|
|
)
|
|
}
|