0904
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
// Copyright 2022 E99p1ant. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package db
|
||||
|
||||
import "time"
|
||||
|
||||
// UserBlock 记录用户拉黑关系(UserID 拉黑了 BlockedID)。
|
||||
// 使用独立关联表而非在 users 上存 JSON,以获得:
|
||||
// - (user_id, blocked_id) 唯一索引保证幂等,并发拉黑不会互相覆盖;
|
||||
// - 判断是否拉黑走索引查询,无需反序列化整串 JSON。
|
||||
//
|
||||
// 注意:本表采用物理删除(取消拉黑即删行),不使用 gorm.DeletedAt 软删除,
|
||||
// 否则「拉黑 → 取消 → 再拉黑」会因软删记录仍占用唯一索引而插入冲突。
|
||||
type UserBlock struct {
|
||||
ID uint `gorm:"primarykey"`
|
||||
UserID uint `gorm:"not null;uniqueIndex:idx_user_block_unique"`
|
||||
BlockedID uint `gorm:"not null;uniqueIndex:idx_user_block_unique"`
|
||||
CreatedAt time.Time `json:"-"`
|
||||
}
|
||||
Reference in New Issue
Block a user