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()
);
