block-accounting/backend/internal/factory/repositories.go

51 lines
1.4 KiB
Go
Raw Normal View History

2024-05-24 17:44:24 +00:00
package factory
import (
"database/sql"
"log/slog"
2024-06-03 21:54:17 +00:00
"github.com/emochka2007/block-accounting/internal/infrastructure/repository/auth"
"github.com/emochka2007/block-accounting/internal/infrastructure/repository/cache"
"github.com/emochka2007/block-accounting/internal/infrastructure/repository/organizations"
"github.com/emochka2007/block-accounting/internal/infrastructure/repository/transactions"
"github.com/emochka2007/block-accounting/internal/infrastructure/repository/users"
2024-05-24 17:44:24 +00:00
"github.com/emochka2007/block-accounting/internal/pkg/config"
"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)
}
2024-05-26 18:20:14 +00:00
func provideTxRepository(db *sql.DB, or organizations.Repository) transactions.Repository {
return transactions.NewRepository(db, or)
2024-05-24 17:44:24 +00:00
}
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,
)
}