CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; CREATE TABLE usuarios ( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), email VARCHAR(255) UNIQUE NOT NULL, senha_hash VARCHAR(255) NOT NULL, role VARCHAR(50) NOT NULL DEFAULT 'profissional', ativo BOOLEAN NOT NULL DEFAULT TRUE, criado_em TIMESTAMPTZ NOT NULL DEFAULT NOW(), atualizado_em TIMESTAMPTZ NOT NULL DEFAULT NOW() ); CREATE TABLE cadastro_profissionais ( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), usuario_id UUID REFERENCES usuarios(id) ON DELETE SET NULL, nome VARCHAR(255) NOT NULL, funcao_profissional VARCHAR(50) NOT NULL, endereco VARCHAR(255), cidade VARCHAR(100), uf CHAR(2), whatsapp VARCHAR(20), cpf_cnpj_titular VARCHAR(20), banco VARCHAR(100), agencia VARCHAR(20), conta_pix VARCHAR(120), carro_disponivel BOOLEAN DEFAULT FALSE, tem_estudio BOOLEAN DEFAULT FALSE, qtd_estudio INT, tipo_cartao VARCHAR(50), observacao TEXT, qual_tec INT, educacao_simpatia INT, desempenho_evento INT, disp_horario INT, media NUMERIC(3,2), tabela_free VARCHAR(50), extra_por_equipamento BOOLEAN DEFAULT FALSE, criado_em TIMESTAMPTZ NOT NULL DEFAULT NOW(), atualizado_em TIMESTAMPTZ NOT NULL DEFAULT NOW() ); CREATE TABLE refresh_tokens ( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), usuario_id UUID NOT NULL REFERENCES usuarios(id) ON DELETE CASCADE, token_hash VARCHAR(255) NOT NULL, user_agent VARCHAR(255), ip VARCHAR(45), expira_em TIMESTAMPTZ NOT NULL, revogado BOOLEAN NOT NULL DEFAULT FALSE, criado_em TIMESTAMPTZ NOT NULL DEFAULT NOW() );