-- Migration 001: Tabelas de usuários e personagens -- Criado em: 2025-01-27 -- Tabela de usuários CREATE TABLE IF NOT EXISTS users ( user_id SERIAL PRIMARY KEY, username VARCHAR(50) UNIQUE NOT NULL, email VARCHAR(255) UNIQUE NOT NULL, password_hash VARCHAR(255) NOT NULL, first_name VARCHAR(100) NOT NULL, last_name VARCHAR(100) NOT NULL, phone VARCHAR(20), cpf VARCHAR(14) UNIQUE NOT NULL, account_level VARCHAR(20) DEFAULT 'free' CHECK (account_level IN ('free', 'bronze', 'silver', 'gold')), has_donated BOOLEAN DEFAULT FALSE, whatsapp_notifications BOOLEAN DEFAULT TRUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, last_login TIMESTAMP, is_active BOOLEAN DEFAULT TRUE, is_verified BOOLEAN DEFAULT FALSE ); -- Tabela de personagens dos usuários CREATE TABLE IF NOT EXISTS user_characters ( character_id SERIAL PRIMARY KEY, user_id INTEGER NOT NULL REFERENCES users(user_id) ON DELETE CASCADE, character_name VARCHAR(100) NOT NULL, server_name VARCHAR(50) NOT NULL, is_main BOOLEAN DEFAULT FALSE, verified BOOLEAN DEFAULT FALSE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, UNIQUE(character_name, server_name) ); -- Índices para performance CREATE INDEX IF NOT EXISTS idx_user_characters_user_id ON user_characters(user_id); CREATE INDEX IF NOT EXISTS idx_users_email ON users(email); CREATE INDEX IF NOT EXISTS idx_users_username ON users(username); CREATE INDEX IF NOT EXISTS idx_users_cpf ON users(cpf);