66 lines
2.8 KiB
SQL
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;
|
|
|