Documentação

Banco de dados individual e isolamento de dados

Na Vupi, cada projeto possui total soberania sobre seus dados. Ao criar um novo projeto na IDE, a plataforma reserva um nome de database exclusivo, provisiona o banco (PostgreSQL ou MySQL) e cria um usuário com permissões restritas unicamente àquele database.

Injeção automática de credenciais (Zero segredos no código)

O desenvolvedor não precisa criar arquivos .env com senhas de banco nem colar credenciais no código-fonte. A Vupi injeta as variáveis de ambiente diretamente na memória do processo do container:

Estruturação de Migrations e Seeders

As migrations gerenciam a evolução do schema do banco de forma versionada e rastreável. Devem ser nomeadas cronologicamente (ex: 001_criar_produtos.sql) e salvas no diretório de migrations da aplicação.

Exemplo de Migration Idempotente (`Database/Migrations/001_criar_produtos.sql`):

-- Criação segura de tabela com chaves UUID e restrições
CREATE TABLE IF NOT EXISTS produtos (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    nome VARCHAR(150) NOT NULL,
    preco_centavos INTEGER NOT NULL CHECK (preco_centavos >= 0),
    ativo BOOLEAN NOT NULL DEFAULT TRUE,
    criado_em TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP
);

CREATE INDEX IF NOT EXISTS idx_produtos_ativos ON produtos (ativo, criado_em DESC);

Exemplo de Seeder Idempotente (`Database/Seeders/001_seed_produtos.sql`):

-- Seeders devem ser seguros contra reexecução repetida
INSERT INTO produtos (id, nome, preco_centavos, ativo)
VALUES ('00000000-0000-4000-8000-000000000001', 'Produto Demonstrativo', 1990, TRUE)
ON CONFLICT (id) DO NOTHING;

Diretrizes de integridade e segurança