67 lines
3.6 KiB
SQL
67 lines
3.6 KiB
SQL
-- 广场。Snowflake post_id;content 为 VARBINARY 序列化 JSON 字节。
|
||
|
||
CREATE TABLE IF NOT EXISTS t_square_posts (
|
||
id BIGINT PRIMARY KEY COMMENT 'Snowflake 帖 id,Feed 游标',
|
||
user_id BIGINT NOT NULL COMMENT '作者 t_users.id',
|
||
kind SMALLINT NOT NULL COMMENT '1纯文 2图 3视频',
|
||
text VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '正文,可空;与媒体至少有一项',
|
||
content VARBINARY(16384) NOT NULL COMMENT '序列化 JSON 字节(json.Marshal),图/视频只存 object_key',
|
||
poi_lat DOUBLE NOT NULL DEFAULT 0 COMMENT '地点纬度',
|
||
poi_lng DOUBLE NOT NULL DEFAULT 0 COMMENT '地点经度',
|
||
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黑名单',
|
||
audit_status SMALLINT NOT NULL DEFAULT 1 COMMENT '0待审 1通过 2拒绝;v1 发帖为 1',
|
||
audit_note VARCHAR(256) NOT NULL DEFAULT '' COMMENT '拒绝原因',
|
||
audited_at DATETIME(3) NULL COMMENT '审核时间',
|
||
status SMALLINT NOT NULL DEFAULT 0 COMMENT '0正常 1已删',
|
||
like_count INT NOT NULL DEFAULT 0 COMMENT '点赞数',
|
||
comment_count INT NOT NULL DEFAULT 0 COMMENT '未删评论数',
|
||
created_at DATETIME(3) NOT NULL COMMENT '发帖时间',
|
||
KEY idx_public_feed (audit_status, visibility, id),
|
||
KEY idx_user (user_id, id)
|
||
) COMMENT='广场帖';
|
||
|
||
CREATE TABLE IF NOT EXISTS t_square_audience (
|
||
post_id BIGINT NOT NULL COMMENT '帖 id',
|
||
peer_id BIGINT NOT NULL COMMENT '白名单能看 / 黑名单不能看 的好友 uid',
|
||
PRIMARY KEY (post_id, peer_id)
|
||
) COMMENT='广场部分可见名单';
|
||
|
||
CREATE TABLE IF NOT EXISTS t_square_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='广场点赞';
|
||
|
||
CREATE TABLE IF NOT EXISTS t_square_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 '被回复用户',
|
||
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 t_square_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='广场赞评通知';
|
||
|
||
CREATE TABLE IF NOT EXISTS t_square_notice_state (
|
||
user_id BIGINT PRIMARY KEY COMMENT '用户 t_users.id',
|
||
last_read_notice_id BIGINT NOT NULL DEFAULT 0 COMMENT '互动通知已读水位',
|
||
updated_at DATETIME(3) NOT NULL COMMENT '更新时间'
|
||
) COMMENT='广场通知未读水位';
|