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>
83 lines
6.4 KiB
SQL
83 lines
6.4 KiB
SQL
-- Add table/column comments for databases created before 0001/0002 carried COMMENT clauses.
|
||
|
||
ALTER TABLE conversations COMMENT = '会话。单聊/群聊共用一张表;列表与未读在 Redis,不在此表热更新';
|
||
ALTER TABLE conversations
|
||
MODIFY COLUMN id BIGINT NOT NULL COMMENT 'Snowflake 会话 id,时间有序主键',
|
||
MODIFY COLUMN type TINYINT NOT NULL COMMENT '会话类型:1=单聊 2=群聊',
|
||
MODIFY COLUMN last_msg_id BIGINT NOT NULL DEFAULT 0 COMMENT '最新消息 Snowflake id,0 表示尚无消息',
|
||
MODIFY COLUMN last_msg_at DATETIME(3) NOT NULL COMMENT '最新消息时间(毫秒精度)',
|
||
MODIFY COLUMN created_at DATETIME(3) NOT NULL COMMENT '会话创建时间';
|
||
|
||
ALTER TABLE p2p_conversations COMMENT = '单聊唯一索引。按 (较小 uid, 较大 uid) 定位会话,避免 A-B / B-A 两条记录';
|
||
ALTER TABLE p2p_conversations
|
||
MODIFY COLUMN user_small BIGINT NOT NULL COMMENT '两人中较小的 user_id,保证同一对用户只有一行',
|
||
MODIFY COLUMN user_big BIGINT NOT NULL COMMENT '两人中较大的 user_id',
|
||
MODIFY COLUMN conversation_id BIGINT NOT NULL COMMENT '对应 conversations.id';
|
||
|
||
ALTER TABLE conversation_members COMMENT = '会话成员。热路径会话列表不扫此表;last_read_msg_id 是已读持久化';
|
||
ALTER TABLE conversation_members
|
||
MODIFY COLUMN conversation_id BIGINT NOT NULL COMMENT '会话 id',
|
||
MODIFY COLUMN user_id BIGINT NOT NULL COMMENT '成员 user_id',
|
||
MODIFY COLUMN last_read_msg_id BIGINT NOT NULL DEFAULT 0 COMMENT '该成员已读到的最大消息 id,未读真相;Redis 丢了可从此重建',
|
||
MODIFY COLUMN joined_at DATETIME(3) NOT NULL COMMENT '加入会话时间',
|
||
MODIFY COLUMN muted TINYINT NOT NULL DEFAULT 0 COMMENT '0=未静音 1=免打扰';
|
||
|
||
ALTER TABLE messages COMMENT = '消息正文。PK=MsgId;content 为序列化 BLOB,不存媒体二进制';
|
||
ALTER TABLE messages
|
||
MODIFY COLUMN id BIGINT NOT NULL COMMENT 'Snowflake MsgId,主键、排序键、同步游标',
|
||
MODIFY COLUMN conversation_id BIGINT NOT NULL COMMENT '所属会话 id',
|
||
MODIFY COLUMN sender_id BIGINT NOT NULL COMMENT '发送者 user_id',
|
||
MODIFY COLUMN client_msg_id VARCHAR(64) NOT NULL COMMENT '客户端消息 id,与 sender+会话 组成幂等键',
|
||
MODIFY COLUMN message_type SMALLINT NOT NULL COMMENT '消息类型:1文本 2图片 3语音 4视频 5表情 6GIF 7文件 8位置 9系统',
|
||
MODIFY COLUMN content BLOB NOT NULL COMMENT '序列化后的消息体(JSON 字节),禁止存原始 string;媒体只存对象存储 key',
|
||
MODIFY COLUMN status TINYINT NOT NULL DEFAULT 1 COMMENT '1=正常 2=已撤回 3=审核隐藏',
|
||
MODIFY COLUMN created_at DATETIME(3) NOT NULL COMMENT '服务端入库时间';
|
||
|
||
ALTER TABLE mailbox_events COMMENT = '失败邮箱与控制事件。成功在线推送的新消息不写此表';
|
||
ALTER TABLE mailbox_events
|
||
MODIFY COLUMN id BIGINT NOT NULL COMMENT 'Snowflake 事件 id',
|
||
MODIFY COLUMN user_id BIGINT NOT NULL COMMENT '接收用户',
|
||
MODIFY COLUMN device_id BIGINT NOT NULL COMMENT '目标设备;0 表示该用户全部设备',
|
||
MODIFY COLUMN seq BIGINT NOT NULL COMMENT '该 user+device 上单调递增的邮箱序号',
|
||
MODIFY COLUMN event_type SMALLINT NOT NULL COMMENT '事件类型:撤回/踢人/成员变更/好友/漏推消息等,不含成功在线推送的新消息',
|
||
MODIFY COLUMN conversation_id BIGINT NULL COMMENT '相关会话,可空',
|
||
MODIFY COLUMN payload VARBINARY(4096) COMMENT '控制事件载荷(会话 id+消息 id 等),不含消息正文',
|
||
MODIFY COLUMN created_at DATETIME(3) NOT NULL COMMENT '写入时间';
|
||
|
||
ALTER TABLE device_sync_cursors COMMENT = '每设备同步游标。mailbox_seq 对邮箱,dialog_score 对会话列表';
|
||
ALTER TABLE device_sync_cursors
|
||
MODIFY COLUMN user_id BIGINT NOT NULL COMMENT '用户 id',
|
||
MODIFY COLUMN device_id BIGINT NOT NULL COMMENT '设备 id',
|
||
MODIFY COLUMN mailbox_seq BIGINT NOT NULL DEFAULT 0 COMMENT '该设备已同步到的 mailbox_events.seq',
|
||
MODIFY COLUMN dialog_score BIGINT NOT NULL DEFAULT 0 COMMENT '会话列表 Redis ZSET 游标',
|
||
MODIFY COLUMN updated_at DATETIME(3) NOT NULL COMMENT '游标更新时间';
|
||
|
||
ALTER TABLE users COMMENT = '用户账号。主键 Snowflake;登录身份在 user_emails,设备在 user_devices';
|
||
ALTER TABLE users
|
||
MODIFY COLUMN id BIGINT NOT NULL COMMENT 'Snowflake 用户 id(uid),时间有序,非自增',
|
||
MODIFY COLUMN spark_id VARCHAR(32) NOT NULL COMMENT '对外展示的账号,用户可改,全局唯一',
|
||
MODIFY COLUMN nickname VARCHAR(64) NOT NULL DEFAULT '' COMMENT '昵称',
|
||
MODIFY COLUMN avatar VARCHAR(512) NOT NULL DEFAULT '' COMMENT '头像对象存储 key 或 URL,不存图片二进制',
|
||
MODIFY COLUMN status TINYINT NOT NULL DEFAULT 1 COMMENT '1=正常 0=禁用',
|
||
MODIFY COLUMN created_at DATETIME(3) NOT NULL COMMENT '注册时间',
|
||
MODIFY COLUMN updated_at DATETIME(3) NOT NULL COMMENT '资料最近更新时间';
|
||
|
||
ALTER TABLE user_emails COMMENT = '邮箱与用户的一对一映射。登录用邮箱查此表再读 users';
|
||
ALTER TABLE user_emails
|
||
MODIFY COLUMN email VARCHAR(255) NOT NULL COMMENT '规范化后的小写邮箱,登录账号',
|
||
MODIFY COLUMN user_id BIGINT NOT NULL COMMENT '绑定的 users.id,一对一',
|
||
MODIFY COLUMN created_at DATETIME(3) NOT NULL COMMENT '绑定时间';
|
||
|
||
ALTER TABLE user_devices COMMENT = '登录过的设备。同 user+device 覆盖更新;踢人按 device_id';
|
||
ALTER TABLE user_devices
|
||
MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT COMMENT '行 id,表内自增,仅内部用;业务唯一键是 (user_id, device_id)',
|
||
MODIFY COLUMN user_id BIGINT NOT NULL COMMENT '所属用户',
|
||
MODIFY COLUMN device_id BIGINT UNSIGNED NOT NULL COMMENT '客户端设备 id,写入 JWT did',
|
||
MODIFY COLUMN platform VARCHAR(32) NOT NULL DEFAULT '' COMMENT 'ios/android/web 等',
|
||
MODIFY COLUMN device_name VARCHAR(128) NOT NULL DEFAULT '' COMMENT '设备展示名',
|
||
MODIFY COLUMN app_version VARCHAR(32) NOT NULL DEFAULT '' COMMENT '最近一次登录的客户端版本',
|
||
MODIFY COLUMN language VARCHAR(16) NOT NULL DEFAULT '' COMMENT '最近一次登录语言,如 zh-CN',
|
||
MODIFY COLUMN last_ip VARCHAR(64) NOT NULL DEFAULT '' COMMENT '最近一次登录的 PROXY RealIP,禁止用环回地址',
|
||
MODIFY COLUMN last_login_at DATETIME(3) NOT NULL COMMENT '最近一次登录时间',
|
||
MODIFY COLUMN created_at DATETIME(3) NOT NULL COMMENT '该设备首次登录时间';
|