Files
kefu/im/backend/migrations/003_feed.sql
T
2026-08-27 14:04:28 +08:00

73 lines
3.0 KiB
SQL

CREATE TABLE IF NOT EXISTS media_assets (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
owner_user_id BIGINT UNSIGNED NOT NULL,
media_type VARCHAR(20) NOT NULL,
storage_provider VARCHAR(20) NOT NULL DEFAULT 'local',
bucket VARCHAR(100) NOT NULL DEFAULT '',
object_key VARCHAR(500) NOT NULL DEFAULT '',
public_url VARCHAR(500) NOT NULL DEFAULT '',
mime_type VARCHAR(100) NOT NULL DEFAULT '',
file_size BIGINT UNSIGNED NOT NULL DEFAULT 0,
width INT UNSIGNED NULL,
height INT UNSIGNED NULL,
duration_ms INT UNSIGNED NULL,
moderation_status TINYINT UNSIGNED NOT NULL DEFAULT 1,
status TINYINT UNSIGNED NOT NULL DEFAULT 1,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
deleted_at DATETIME(3) NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS posts (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
user_id BIGINT UNSIGNED NOT NULL,
content VARCHAR(2000) NOT NULL DEFAULT '',
visibility TINYINT UNSIGNED NOT NULL DEFAULT 1,
city_code VARCHAR(20) NOT NULL DEFAULT '',
location_text VARCHAR(100) NOT NULL DEFAULT '',
status TINYINT UNSIGNED NOT NULL DEFAULT 1,
moderation_status TINYINT UNSIGNED NOT NULL DEFAULT 1,
like_count INT UNSIGNED NOT NULL DEFAULT 0,
comment_count INT UNSIGNED NOT NULL DEFAULT 0,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
deleted_at DATETIME(3) NULL,
PRIMARY KEY (id),
KEY idx_posts_status_created (status, created_at),
KEY idx_posts_user_created (user_id, created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS post_media (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
post_id BIGINT UNSIGNED NOT NULL,
media_id BIGINT UNSIGNED NULL,
media_url VARCHAR(500) NOT NULL DEFAULT '',
media_type VARCHAR(20) NOT NULL DEFAULT 'image',
sort_order INT NOT NULL DEFAULT 0,
PRIMARY KEY (id),
KEY idx_post_media_post (post_id, sort_order)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS post_likes (
post_id BIGINT UNSIGNED NOT NULL,
user_id BIGINT UNSIGNED NOT NULL,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
PRIMARY KEY (post_id, user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS post_comments (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
post_id BIGINT UNSIGNED NOT NULL,
user_id BIGINT UNSIGNED NOT NULL,
parent_comment_id BIGINT UNSIGNED NULL,
reply_user_id BIGINT UNSIGNED NULL,
content VARCHAR(1000) NOT NULL,
status TINYINT UNSIGNED NOT NULL DEFAULT 1,
moderation_status TINYINT UNSIGNED NOT NULL DEFAULT 1,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
deleted_at DATETIME(3) NULL,
PRIMARY KEY (id),
KEY idx_comments_post_created (post_id, created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;