Skip to content

Fluxo CRUD de Carros

sequenceDiagram
    participant U as Usuário
    participant A as API
    participant V as Validação
    participant DB as Banco de Dados
    participant S as Sistema de Segurança

    U->>A: Solicita criação de carro
    A->>S: Verifica autenticação (token JWT)
    S-->>A: Token válido
    A->>V: Valida dados de entrada
    V-->>A: Dados válidos
    A->>DB: Verifica existência de marca
    DB-->>A: Marca existe
    A->>DB: Verifica existência de proprietário
    DB-->>A: Proprietário existe
    A->>DB: Verifica unicidade da placa
    DB-->>A: Placa disponível
    A->>DB: Cria novo registro de carro
    DB-->>A: Carro criado com sucesso
    A-->>U: Retorna dados do carro criado

    U->>A: Solicita lista de carros
    A->>S: Verifica autenticação
    S-->>A: Token válido
    A->>DB: Busca carros do proprietário
    DB-->>A: Retorna lista de carros
    A-->>U: Retorna lista de carros

    U->>A: Solicita detalhes de carro específico
    A->>S: Verifica autenticação
    S-->>A: Token válido
    A->>DB: Busca carro por ID
    DB-->>A: Retorna dados do carro
    A->>S: Verifica propriedade do carro
    S-->>A: Usuário é proprietário
    A-->>U: Retorna detalhes do carro

    U->>A: Solicita atualização de carro
    A->>S: Verifica autenticação
    S-->>A: Token válido
    A->>DB: Busca carro por ID
    DB-->>A: Retorna dados do carro
    A->>S: Verifica propriedade do carro
    S-->>A: Usuário é proprietário
    A->>V: Valida dados de atualização
    V-->>A: Dados válidos
    A->>DB: Atualiza registro do carro
    DB-->>A: Carro atualizado com sucesso
    A-->>U: Retorna dados do carro atualizado

    U->>A: Solicita exclusão de carro
    A->>S: Verifica autenticação
    S-->>A: Token válido
    A->>DB: Busca carro por ID
    DB-->>A: Retorna dados do carro
    A->>S: Verifica propriedade do carro
    S-->>A: Usuário é proprietário
    A->>DB: Exclui registro do carro
    DB-->>A: Carro excluído com sucesso
    A-->>U: Confirmação de exclusão (204 No Content)

Descrição do Fluxo CRUD

1. Criação (CREATE)

  1. O usuário envia uma requisição para criar um novo carro
  2. A API verifica a autenticação do usuário via token JWT
  3. Os dados são validados usando esquemas Pydantic
  4. A API verifica se a marca e o proprietário existem
  5. A API verifica se a placa é única
  6. O novo carro é criado no banco de dados
  7. Os dados do carro criado são retornados ao usuário

2. Leitura (READ) - Listagem

  1. O usuário solicita a lista de carros
  2. A API verifica a autenticação do usuário
  3. A API busca apenas os carros pertencentes ao usuário autenticado
  4. A lista de carros é retornada ao usuário

3. Leitura (READ) - Detalhe Individual

  1. O usuário solicita detalhes de um carro específico
  2. A API verifica a autenticação do usuário
  3. A API busca o carro pelo ID
  4. A API verifica se o usuário é o proprietário do carro
  5. Os detalhes do carro são retornados ao usuário

4. Atualização (UPDATE)

  1. O usuário envia uma requisição para atualizar um carro existente
  2. A API verifica a autenticação do usuário
  3. A API busca o carro pelo ID
  4. A API verifica se o usuário é o proprietário do carro
  5. Os dados de atualização são validados
  6. O carro é atualizado no banco de dados
  7. Os dados atualizados do carro são retornados ao usuário

5. Exclusão (DELETE)

  1. O usuário solicita a exclusão de um carro
  2. A API verifica a autenticação do usuário
  3. A API busca o carro pelo ID
  4. A API verifica se o usuário é o proprietário do carro
  5. O carro é excluído do banco de dados
  6. A API confirma a exclusão com status 204 No Content

Controles de Segurança

  • Autenticação: Cada operação requer um token JWT válido
  • Autorização: Somente o proprietário pode acessar, modificar ou excluir seus carros
  • Validação: Todos os dados são validados antes de serem processados
  • Integridade: Verificações de unicidade e existência são realizadas antes de operações de escrita

Componentes Envolvidos

  • Usuário: Entidade que realiza as operações CRUD
  • API: Coordena todo o processo de manipulação de dados
  • Validação: Garante que os dados atendam aos critérios estabelecidos
  • Banco de Dados: Armazena e recupera os dados dos carros
  • Sistema de Segurança: Gerencia autenticação e verificação de propriedade