Este repositório contém a definição do banco de dados relacional utilizado pelos microserviços do projeto FIAP X. Ele centraliza o schema SQL das tabelas utilizadas por todos os serviços da aplicação, como usuários, vídeos e suas respectivas relações.
O banco é implementado em PostgreSQL, sendo acessado por microserviços como auth-service
, upload-service
, processor-service
e download-service
.
O banco de dados contém duas entidades principais:
Armazena as credenciais e dados básicos dos usuários autenticados no sistema.
Campo | Tipo | Descrição |
---|---|---|
id | SERIAL | Identificador primário |
VARCHAR(255) | E-mail do usuário (único) | |
password_hash | VARCHAR(255) | Senha criptografada |
created_at | TIMESTAMP | Data de criação |
Registra os uploads de vídeos feitos pelos usuários, bem como seus status de processamento e o caminho do ZIP de frames gerado.
Campo | Tipo | Descrição |
---|---|---|
id | SERIAL | Identificador primário |
user_id | INT | Chave estrangeira para users.id |
original_filename | VARCHAR(255) | Nome do arquivo original |
stored_path | VARCHAR(255) | Caminho no disco onde o vídeo foi salvo |
zip_path | VARCHAR(255) | Caminho do arquivo .zip com os frames |
status | ENUM | uploaded , processing , done , error |
created_at | TIMESTAMP | Data de envio |
updated_at | TIMESTAMP | Última atualização |
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TYPE video_status AS ENUM ('uploaded', 'processing', 'done', 'error');
CREATE TABLE IF NOT EXISTS videos (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
original_filename VARCHAR(255),
stored_path VARCHAR(255),
zip_path VARCHAR(255),
status video_status DEFAULT 'uploaded',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Esse script é utilizado para inicialização automática do banco dentro dos serviços, com SQLAlchemy.
Você pode subir o banco localmente com o seguinte docker-compose.yml
Execute com:
docker compose up db