Add HTTP /v1 MVC, TCP send path, groups with server-side member-avatar collage, object-storage upload, and friends/favorites around the architecture-v3 layout. Co-authored-by: Cursor <cursoragent@cursor.com>
51 lines
2.8 KiB
SQL
51 lines
2.8 KiB
SQL
-- Bidirectional friends, one pending request per pair, unidirectional block/remark/report.
|
||
|
||
CREATE TABLE IF NOT EXISTS friend_relations (
|
||
user_small BIGINT NOT NULL COMMENT '两人中较小的 user_id,保证同一对用户只有一行',
|
||
user_big BIGINT NOT NULL COMMENT '两人中较大的 user_id',
|
||
created_at DATETIME(3) NOT NULL COMMENT '成为好友时间',
|
||
PRIMARY KEY (user_small, user_big),
|
||
KEY idx_user_big (user_big)
|
||
) COMMENT='双向好友。无单向好友;删除任一方即解除双方关系';
|
||
|
||
CREATE TABLE IF NOT EXISTS friend_requests (
|
||
id BIGINT PRIMARY KEY COMMENT 'Snowflake 申请 id',
|
||
from_user BIGINT NOT NULL COMMENT '申请人 user_id',
|
||
to_user BIGINT NOT NULL COMMENT '被申请人 user_id',
|
||
source TINYINT NOT NULL COMMENT '来源:1=二维码 2=邮箱 3=spark_id',
|
||
reason VARCHAR(128) NOT NULL DEFAULT '' COMMENT '申请理由',
|
||
remark VARCHAR(64) NOT NULL DEFAULT '' COMMENT '申请人对对方的备注,同意后写入 friend_remarks',
|
||
status TINYINT NOT NULL DEFAULT 1 COMMENT '1=待处理 2=已同意 3=已拒绝',
|
||
created_at DATETIME(3) NOT NULL COMMENT '首次申请时间',
|
||
updated_at DATETIME(3) NOT NULL COMMENT '最近一次申请或处理时间',
|
||
UNIQUE KEY uk_from_to (from_user, to_user),
|
||
KEY idx_to_status (to_user, status, updated_at)
|
||
) COMMENT='好友申请。同一对 from→to 只保留一行,重复发起覆盖理由与备注';
|
||
|
||
CREATE TABLE IF NOT EXISTS friend_remarks (
|
||
user_id BIGINT NOT NULL COMMENT '备注所属用户',
|
||
friend_id BIGINT NOT NULL COMMENT '被备注的用户',
|
||
remark VARCHAR(64) NOT NULL DEFAULT '' COMMENT '备注名,仅对备注者可见',
|
||
updated_at DATETIME(3) NOT NULL COMMENT '更新时间',
|
||
PRIMARY KEY (user_id, friend_id)
|
||
) COMMENT='好友备注。单向,解除好友时删除双方备注';
|
||
|
||
CREATE TABLE IF NOT EXISTS user_blocks (
|
||
user_id BIGINT NOT NULL COMMENT '拉黑人 user_id',
|
||
blocked_id BIGINT NOT NULL COMMENT '被拉黑人 user_id',
|
||
created_at DATETIME(3) NOT NULL COMMENT '拉黑时间',
|
||
PRIMARY KEY (user_id, blocked_id),
|
||
KEY idx_blocked (blocked_id)
|
||
) COMMENT='拉黑。单向;拉黑时解除好友关系';
|
||
|
||
CREATE TABLE IF NOT EXISTS friend_reports (
|
||
id BIGINT PRIMARY KEY COMMENT 'Snowflake 投诉 id',
|
||
user_id BIGINT NOT NULL COMMENT '投诉人 user_id',
|
||
target_id BIGINT NOT NULL COMMENT '被投诉人 user_id',
|
||
reason TINYINT NOT NULL COMMENT '投诉类型:1=垃圾 2=骚扰 3=不实身份 4=其他',
|
||
detail VARCHAR(512) NOT NULL DEFAULT '' COMMENT '投诉说明',
|
||
created_at DATETIME(3) NOT NULL COMMENT '投诉时间',
|
||
KEY idx_user_created (user_id, created_at),
|
||
KEY idx_target (target_id)
|
||
) COMMENT='好友投诉。仅记录,不自动拉黑';
|