gengx
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
public_id VARCHAR(20) NOT NULL,
|
||||
country_code VARCHAR(8) NOT NULL DEFAULT '+86',
|
||||
phone_hash BINARY(32) NULL,
|
||||
phone_cipher VARBINARY(255) NULL,
|
||||
password_hash VARCHAR(255) NOT NULL,
|
||||
status TINYINT UNSIGNED NOT NULL DEFAULT 1,
|
||||
risk_level TINYINT 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),
|
||||
UNIQUE KEY uk_users_public_id (public_id),
|
||||
UNIQUE KEY uk_users_phone_hash (phone_hash),
|
||||
KEY idx_users_status_created (status, created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS user_profiles (
|
||||
user_id BIGINT UNSIGNED NOT NULL,
|
||||
nickname VARCHAR(50) NOT NULL,
|
||||
avatar_url VARCHAR(500) NOT NULL DEFAULT '',
|
||||
cover_url VARCHAR(500) NOT NULL DEFAULT '',
|
||||
gender TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
||||
birthday DATE NULL,
|
||||
height_cm SMALLINT UNSIGNED NULL,
|
||||
city_code VARCHAR(20) NOT NULL DEFAULT '',
|
||||
city_name VARCHAR(50) NOT NULL DEFAULT '',
|
||||
occupation VARCHAR(100) NOT NULL DEFAULT '',
|
||||
education TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
||||
relationship_status TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
||||
bio VARCHAR(500) NOT NULL DEFAULT '',
|
||||
profile_score SMALLINT UNSIGNED NOT NULL DEFAULT 0,
|
||||
is_vip TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
||||
vip_level TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
||||
last_active_at DATETIME(3) NULL,
|
||||
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_profiles_city_active (city_code, last_active_at),
|
||||
CONSTRAINT fk_profiles_user FOREIGN KEY (user_id) REFERENCES users(id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS user_privacy_settings (
|
||||
user_id BIGINT UNSIGNED NOT NULL,
|
||||
nearby_visible TINYINT(1) NOT NULL DEFAULT 1,
|
||||
distance_visible TINYINT(1) NOT NULL DEFAULT 1,
|
||||
online_visible TINYINT(1) NOT NULL DEFAULT 1,
|
||||
last_active_visible TINYINT(1) NOT NULL DEFAULT 1,
|
||||
allow_stranger_message TINYINT(1) NOT NULL DEFAULT 1,
|
||||
allow_profile_visit_record TINYINT(1) NOT NULL DEFAULT 1,
|
||||
allow_search TINYINT(1) NOT NULL DEFAULT 1,
|
||||
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),
|
||||
CONSTRAINT fk_privacy_user FOREIGN KEY (user_id) REFERENCES users(id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS user_devices (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
user_id BIGINT UNSIGNED NOT NULL,
|
||||
device_id VARCHAR(100) NOT NULL,
|
||||
platform VARCHAR(20) NOT NULL,
|
||||
device_model VARCHAR(100) NOT NULL DEFAULT '',
|
||||
os_version VARCHAR(50) NOT NULL DEFAULT '',
|
||||
app_version VARCHAR(30) NOT NULL DEFAULT '',
|
||||
push_provider VARCHAR(30) NOT NULL DEFAULT '',
|
||||
push_token VARCHAR(255) NOT NULL DEFAULT '',
|
||||
last_ip VARCHAR(45) NOT NULL DEFAULT '',
|
||||
last_active_at DATETIME(3) NULL,
|
||||
status TINYINT UNSIGNED NOT NULL DEFAULT 1,
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_device_user_device (user_id, device_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS user_sessions (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
user_id BIGINT UNSIGNED NOT NULL,
|
||||
device_id VARCHAR(100) NOT NULL,
|
||||
refresh_token_hash BINARY(32) NOT NULL,
|
||||
expires_at DATETIME(3) NOT NULL,
|
||||
last_active_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
revoked_at DATETIME(3) NULL,
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (id),
|
||||
KEY idx_sessions_user (user_id, revoked_at),
|
||||
UNIQUE KEY uk_sessions_refresh (refresh_token_hash)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS tags (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
category VARCHAR(30) NOT NULL,
|
||||
name VARCHAR(50) NOT NULL,
|
||||
icon VARCHAR(100) NOT NULL DEFAULT '',
|
||||
status TINYINT UNSIGNED NOT NULL DEFAULT 1,
|
||||
sort_order INT NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_tags_category_name (category, name)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS user_tags (
|
||||
user_id BIGINT UNSIGNED NOT NULL,
|
||||
tag_id BIGINT UNSIGNED NOT NULL,
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (user_id, tag_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS admin_users (
|
||||
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
username VARCHAR(50) NOT NULL,
|
||||
password_hash VARCHAR(255) NOT NULL,
|
||||
real_name VARCHAR(50) NOT NULL DEFAULT '',
|
||||
avatar_url VARCHAR(500) NOT NULL DEFAULT '',
|
||||
status TINYINT UNSIGNED NOT NULL DEFAULT 1,
|
||||
last_login_at DATETIME(3) NULL,
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_admin_username (username)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
Reference in New Issue
Block a user