DP
Size: a a a
DP
DP
DP
DP
с
E
UserRepository
с функциями вроде StoreUser(user)
, GetUser(id)
. RedisPool
инициализируется при старте сервиса. Задача - дать доступ репозиторию к самой базе.UserRepository
тоже инициализируется при старте и доступна внутри хендлетов запросов, внутрь кладётся RedisPool
. теперь любая функция репозитория может сделать redisPool.Get()
, получить конекшн и сделать нужные запросы. Недостаток, который я вижу - каждое обращение к базе в теле хендлера будет доставать новый коннект из пула, а запросов может быть много и из разных репозиториев, чтобы сделать полезное действие.E
*sql.DB
, который является пулом по своей сути, если я правильно понимаю.с
UserRepository
с функциями вроде StoreUser(user)
, GetUser(id)
. RedisPool
инициализируется при старте сервиса. Задача - дать доступ репозиторию к самой базе.UserRepository
тоже инициализируется при старте и доступна внутри хендлетов запросов, внутрь кладётся RedisPool
. теперь любая функция репозитория может сделать redisPool.Get()
, получить конекшн и сделать нужные запросы. Недостаток, который я вижу - каждое обращение к базе в теле хендлера будет доставать новый коннект из пула, а запросов может быть много и из разных репозиториев, чтобы сделать полезное действие.с
с
AS
ctx
, например GetUser(ctx, id)
, а также есть middleware, который для каждого запроса берет из пула конекшен и проставляет в контекст.с
⛪
func (m MemStorer) Save(_ context.Context, user authboss.User) error {
u := user.(*User)
m.Users[u.Email] = *u
debugln("Saved user:", u.Name)
return nil
}
АП
⛪
АП