spark-server/migrations/0018_square.sql
2026-09-23 17:11:56 +08:00

67 lines
3.6 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 广场。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='广场通知未读水位';