73 lines
4.3 KiB
SQL
73 lines
4.3 KiB
SQL
-- 朋友圈。独立于 messages;Snowflake post_id 是主键、排序和游标。媒体在 perm/moment/,不过期,删帖时删对象。
|
||
|
||
CREATE TABLE IF NOT EXISTS moment_posts (
|
||
id BIGINT PRIMARY KEY COMMENT 'Snowflake 帖 id,Feed/相册游标',
|
||
user_id BIGINT NOT NULL COMMENT '作者 users.id',
|
||
kind SMALLINT NOT NULL COMMENT '1纯文 2图 3视频',
|
||
text VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '正文,可空;与媒体至少有一项',
|
||
content BLOB NOT NULL COMMENT '图/视频 JSON 字节,不存媒体二进制',
|
||
poi_lat DOUBLE NOT NULL DEFAULT 0 COMMENT '地点纬度,无地点为 0',
|
||
poi_lng DOUBLE NOT NULL DEFAULT 0 COMMENT '地点经度,无地点为 0',
|
||
poi_name VARCHAR(128) NOT NULL DEFAULT '' COMMENT '地点名称',
|
||
poi_address VARCHAR(256) NOT NULL DEFAULT '' COMMENT '地点地址',
|
||
visibility SMALLINT NOT NULL DEFAULT 0 COMMENT '0好友公开 1私密 2白名单 3黑名单',
|
||
status SMALLINT NOT NULL DEFAULT 0 COMMENT '0正常 1已删',
|
||
like_count INT NOT NULL DEFAULT 0 COMMENT '点赞数,与 moment_likes 同事务维护',
|
||
comment_count INT NOT NULL DEFAULT 0 COMMENT '未删评论数,与 moment_comments 同事务维护',
|
||
created_at DATETIME(3) NOT NULL COMMENT '发帖时间,visible_days 按此裁剪',
|
||
KEY idx_user_id (user_id, id)
|
||
) COMMENT='朋友圈帖。读时按好友+可见性过滤,不写每好友 inbox';
|
||
|
||
CREATE TABLE IF NOT EXISTS moment_audience (
|
||
post_id BIGINT NOT NULL COMMENT '帖 id',
|
||
peer_id BIGINT NOT NULL COMMENT '白名单能看 / 黑名单不能看 的好友 uid',
|
||
PRIMARY KEY (post_id, peer_id)
|
||
) COMMENT='部分可见名单。仅 visibility=2/3 有行';
|
||
|
||
CREATE TABLE IF NOT EXISTS moment_likes (
|
||
post_id BIGINT NOT NULL COMMENT '帖 id',
|
||
user_id BIGINT NOT NULL COMMENT '点赞人',
|
||
created_at DATETIME(3) NOT NULL COMMENT '点赞时间',
|
||
PRIMARY KEY (post_id, user_id)
|
||
) COMMENT='朋友圈点赞。重复 PUT 幂等';
|
||
|
||
CREATE TABLE IF NOT EXISTS moment_comments (
|
||
id BIGINT PRIMARY KEY COMMENT 'Snowflake 评论 id',
|
||
post_id BIGINT NOT NULL COMMENT '帖 id',
|
||
user_id BIGINT NOT NULL COMMENT '评论人',
|
||
reply_to_id BIGINT NOT NULL DEFAULT 0 COMMENT '父评论 id,0 表示直接评帖',
|
||
reply_to_uid BIGINT NOT NULL DEFAULT 0 COMMENT '被回复用户,0 表示直接评帖',
|
||
text VARCHAR(500) NOT NULL COMMENT '评论文本',
|
||
status SMALLINT NOT NULL DEFAULT 0 COMMENT '0正常 1已删',
|
||
created_at DATETIME(3) NOT NULL COMMENT '评论时间',
|
||
KEY idx_post (post_id, id)
|
||
) COMMENT='朋友圈评论。展示按共同好友过滤';
|
||
|
||
CREATE TABLE IF NOT EXISTS moment_notices (
|
||
id BIGINT PRIMARY KEY COMMENT 'Snowflake 通知 id,列表游标',
|
||
to_user_id BIGINT NOT NULL COMMENT '接收人',
|
||
from_user_id BIGINT NOT NULL COMMENT '动作发起人',
|
||
kind SMALLINT NOT NULL COMMENT '1赞 2评论 3回复',
|
||
post_id BIGINT NOT NULL COMMENT '帖 id',
|
||
comment_id BIGINT NOT NULL DEFAULT 0 COMMENT '评论 id,赞为 0',
|
||
read_at DATETIME(3) NULL COMMENT '已读时间,空表示未读',
|
||
created_at DATETIME(3) NOT NULL COMMENT '通知时间',
|
||
KEY idx_to_user (to_user_id, id)
|
||
) COMMENT='朋友圈赞评通知。不进会话 mailbox';
|
||
|
||
CREATE TABLE IF NOT EXISTS moment_settings (
|
||
user_id BIGINT PRIMARY KEY COMMENT '用户 users.id',
|
||
cover_key VARCHAR(512) NOT NULL DEFAULT '' COMMENT '封面 object_key,空表示未设',
|
||
visible_days SMALLINT NOT NULL DEFAULT 0 COMMENT '允许朋友查看范围:0全部 3/30/180 天',
|
||
last_read_post_id BIGINT NOT NULL DEFAULT 0 COMMENT '发现页红点水位,只增不减',
|
||
updated_at DATETIME(3) NOT NULL COMMENT '最近更新时间'
|
||
) COMMENT='朋友圈个人设置。无行则封面空、范围全部、水位 0';
|
||
|
||
CREATE TABLE IF NOT EXISTS moment_hides (
|
||
user_id BIGINT NOT NULL COMMENT '设置方',
|
||
peer_id BIGINT NOT NULL COMMENT '对方',
|
||
hide_him TINYINT NOT NULL DEFAULT 0 COMMENT '1=不看他(Feed 去掉对方)',
|
||
hide_me TINYINT NOT NULL DEFAULT 0 COMMENT '1=不让他看',
|
||
PRIMARY KEY (user_id, peer_id)
|
||
) COMMENT='不看他 / 不让他看。与拉黑分开';
|