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

66 lines
2.8 KiB
SQL

CREATE TABLE IF NOT EXISTS user_follows (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
user_id BIGINT UNSIGNED NOT NULL,
target_user_id BIGINT UNSIGNED NOT NULL,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_follow_pair (user_id, target_user_id),
KEY idx_follow_target (target_user_id, created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS user_likes (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
user_id BIGINT UNSIGNED NOT NULL,
target_user_id BIGINT UNSIGNED NOT NULL,
source VARCHAR(30) NOT NULL DEFAULT 'discover',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_like_pair (user_id, target_user_id),
KEY idx_like_target (target_user_id, created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS user_matches (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
user1_id BIGINT UNSIGNED NOT NULL,
user2_id BIGINT UNSIGNED NOT NULL,
matched_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
status TINYINT UNSIGNED NOT NULL DEFAULT 1,
PRIMARY KEY (id),
UNIQUE KEY uk_match_pair (user1_id, user2_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS user_blocks (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
user_id BIGINT UNSIGNED NOT NULL,
blocked_user_id BIGINT UNSIGNED NOT NULL,
reason VARCHAR(255) NOT NULL DEFAULT '',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_block_pair (user_id, blocked_user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS profile_visits (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
viewer_user_id BIGINT UNSIGNED NOT NULL,
target_user_id BIGINT UNSIGNED NOT NULL,
source VARCHAR(30) NOT NULL DEFAULT 'profile',
visited_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
KEY idx_visit_target_time (target_user_id, visited_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS user_location_states (
user_id BIGINT UNSIGNED NOT NULL,
city_code VARCHAR(20) NOT NULL,
location_cell VARCHAR(32) NOT NULL DEFAULT '',
latitude DECIMAL(10,7) NULL,
longitude DECIMAL(10,7) NULL,
last_location_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
source VARCHAR(20) NOT NULL DEFAULT 'gps',
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),
PRIMARY KEY (user_id),
KEY idx_location_city_time (city_code, last_location_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;