-- 添加用户封禁字段 ALTER TABLE users ADD COLUMN IF NOT EXISTS is_banned BOOLEAN NOT NULL DEFAULT FALSE; -- 添加房间邀请码 ALTER TABLE rooms ADD COLUMN IF NOT EXISTS invite_code VARCHAR(8); -- 添加用户最后在线 IP(用于安全审计) ALTER TABLE users ADD COLUMN IF NOT EXISTS last_ip VARCHAR(45); -- 创建房间邀请表 CREATE TABLE IF NOT EXISTS room_invites ( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), room_id UUID NOT NULL REFERENCES rooms(id) ON DELETE CASCADE, inviter_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE, invitee_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE, status VARCHAR(16) NOT NULL DEFAULT 'pending' CHECK (status IN ('pending', 'accepted', 'declined', 'expired')), created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), expires_at TIMESTAMPTZ NOT NULL DEFAULT NOW() + INTERVAL '24 hours' ); -- 创建服务器配置表(持久化配置) CREATE TABLE IF NOT EXISTS server_config ( key VARCHAR(64) PRIMARY KEY, value TEXT NOT NULL, updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); -- 创建操作日志表(管理审计) CREATE TABLE IF NOT EXISTS admin_logs ( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), admin_user VARCHAR(64) NOT NULL, action VARCHAR(64) NOT NULL, target_type VARCHAR(32), target_id UUID, details JSONB, ip_address VARCHAR(45), created_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); -- 创建下载统计表 CREATE TABLE IF NOT EXISTS download_stats ( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), filename VARCHAR(255) NOT NULL, platform VARCHAR(32) NOT NULL, ip_address VARCHAR(45), user_agent TEXT, downloaded_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); -- 索引 CREATE INDEX IF NOT EXISTS idx_room_invites_invitee ON room_invites(invitee_id); CREATE INDEX IF NOT EXISTS idx_room_invites_room ON room_invites(room_id); CREATE INDEX IF NOT EXISTS idx_admin_logs_created ON admin_logs(created_at DESC); CREATE INDEX IF NOT EXISTS idx_download_stats_filename ON download_stats(filename);