56 lines
1.3 KiB
Go
56 lines
1.3 KiB
Go
//go:build mysql
|
||
// +build mysql
|
||
|
||
package mysql
|
||
|
||
import (
|
||
"database/sql"
|
||
"errors"
|
||
|
||
t "github.com/tinode/chat/server/store/types"
|
||
)
|
||
|
||
func (a *adapter) RealNamePolicy(tenantID t.TenantID) (*t.RealNamePolicy, error) {
|
||
if !tenantID.IsValid() {
|
||
return nil, t.ErrMalformed
|
||
}
|
||
db := a.registryDB
|
||
if db == nil {
|
||
db = a.db
|
||
}
|
||
if db == nil {
|
||
return nil, t.ErrInternal
|
||
}
|
||
ctx, cancel := a.getContext()
|
||
if cancel != nil {
|
||
defer cancel()
|
||
}
|
||
var policy t.RealNamePolicy
|
||
// 商户配置已并入 im_tenant(manager 仓库 im_tenant_merge_config.sql),实名政策兜底直查切到 im_tenant;
|
||
// id AS tenant_id 保持扫描列名不变,ErrNoRows/未知列仍回退默认值,兼容阶段一迁移未执行的滚动发布窗口
|
||
err := db.GetContext(ctx, &policy, `SELECT id AS tenant_id, realname_review_policy
|
||
FROM im_tenant WHERE id=? LIMIT 1`, tenantID)
|
||
if errors.Is(err, sql.ErrNoRows) {
|
||
policy = *defaultRealNamePolicy(tenantID)
|
||
return &policy, nil
|
||
}
|
||
if isUnknownColumn(err) {
|
||
policy = *defaultRealNamePolicy(tenantID)
|
||
return &policy, nil
|
||
}
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
policy.Normalize()
|
||
return &policy, nil
|
||
}
|
||
|
||
func defaultRealNamePolicy(tenantID t.TenantID) *t.RealNamePolicy {
|
||
policy := &t.RealNamePolicy{
|
||
TenantID: tenantID,
|
||
ReviewPolicy: t.RealNameReviewPolicyNone,
|
||
}
|
||
policy.Normalize()
|
||
return policy
|
||
}
|