//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 }