Предпосылка: я новичок и пытаюсь понять.
Я из Rails и использую Postgresql.
Я переписываю все приложение в Golang (без магов c из Rails ActiveRecord
, я использую go-pg
(https://github.com/go-pg/pg) в качестве ORM).
Так что я не могу используйте пакеты типа https://github.com/ErwinM/acts_as_tenant или https://github.com/influitive/apartment.
Поскольку go-pg
изначально не предлагает то, что я ищу (https://github.com/go-pg/pg/issues/1179) Я хотел бы понять, могу ли я сделать это непосредственно в БД.
Я хотел бы понять, могу ли я автоматически вставить предложение where
в некоторые SELECT
, используя значение tenant_id
столбец таблицы tenants
на основе user
, который я использую для этого запроса.
Пример кода:
Что мне нужно, чтобы избежать этого:
var players []*models.Player
db.Model(&players).Order("id desc").Select()
return players, nil
на это:
var players []*models.Player
user := ctx.Value(auth.CTXKeyUser).(*models.User)
db.Model(&players).Order("id desc").Where("tenant_id = ?", user.TenantID).Select()
return players, nil