【发布时间】:2021-04-05 18:18:56
【问题描述】:
我在玩 gin-gonic+sqlx。现在我想知道将数据库记录动态绑定到结构的最佳方法是什么?
说我有这样的结构和查询。
type Project struct {
ID string `db:"id"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
DeletedAt NullTime `db:"deleted_at"`
Name string
Status string
OpenDate NullTime `db:"open_date"`
Number uint
}
func (p Project) List() ([]Project, error) {
var pp []Project
err := db.Select(&pp, "SELECT * FROM Project")
return pp, err
}
现在我想为这个结构添加字段级权限。例如,管理员可以查看和编辑所有字段;用户A可以查看CreatedAt和Name;用户B可以查看和编辑NameStatus和查看Number。
我正在为每个用例编写乘法结构,但显然,我确实选择了最愚蠢的方式。 我能想到的另一种方法是实现 Struct Tag。我是在正确的轨道上还是有更好的方法来做到这一点?
【问题讨论】:
-
您希望这些权限反映在数据库中吗?还是只是在应用程序级别?
-
@Flimzy 仅限应用程序级别。所有字段都在一个表中
-
好的。这要简单得多。它还使问题的 SQL 部分变得无关紧要(这就是它更简单的原因!)