【发布时间】:2021-08-06 08:38:31
【问题描述】:
我知道这个问题已经被问过很多次了,但我没有为我的案例找到一个好的答案。我正在使用 SQLC 生成查询数据库的方法。使用在开始时初始化的一个连接时一切正常。现在我需要在一个多租户环境中设置它,每个租户都有一个单独的数据库。现在,我想从连接租户与数据库连接的连接图 (map[string]*sql.DB) 开始。我的问题是关于在运行时覆盖/选择连接。通过一个连接,存储库的初始化如下:
type Repository interface {
GetCustomerById(ctx context.Context, id int64) (Customer, error)
ListCustomers(ctx context.Context) ([]Customer, error)
}
type repoSvc struct {
*Queries
db *sql.DB
}
func NewRepository(dbconn *sql.DB) Repository {
return &repoSvc{
Queries: New(dbconn),
db: dbconn,
}
}
customerRepo := customerRepo.NewRepository(conn)
GetCustomerById 是 SQLC 生成的方法 conn 是数据库连接
如何根据参数(来自cookie或上下文)建立连接?
【问题讨论】:
标签: database go multi-tenant