Merge branch 'release(MVP)' into homologacao

This commit is contained in:
Keven Willian Pereira de Souza 2025-09-17 12:35:51 -03:00
commit fe29ebaec1
93 changed files with 3941 additions and 8754 deletions

9
.gitignore vendored
View file

@ -3,9 +3,6 @@ venv/
.env
.env.*
# Ignora configuração de acesso ao banco de dados Firebird
config/database/firebird.json
# Bytecode compilado
__pycache__/
*.py[cod]
@ -42,6 +39,8 @@ pip-wheel-metadata/
# Arquivo s de conexão
config/database/firebird.json
storage/temp
storage/temp.json
# Adicionar pasta storage/temp
storage/
# Ignorar arquivos storage
storage/

212
README.md
View file

@ -1,150 +1,142 @@
# 🧩 Projeto [SAAS]
# Configuração do Projeto Python
Este projeto é uma **API monolítica modular**, onde cada módulo representa um **domínio específico** da aplicação. Internamente, cada módulo é construído sobre a **Arquitetura Hexagonal**, promovendo separação de responsabilidades, testabilidade e independência da infraestrutura.
Este guia descreve o passo a passo para configurar o ambiente de desenvolvimento de um projeto Python, incluindo a preparação do ambiente virtual, instalação de dependências e configuração do banco de dados.
---
## ⚙️ Visão Geral da Arquitetura
## 1. Clonar o Projeto
### 🏗️ Estrutura Monolítica Modular
Primeiro, clone o repositório do projeto a partir do Git:
- Modelo **monolítico**, modularizado por **domínios**
- Cada domínio organizado dentro do diretório `packages/`
- Componentes por domínio:
- **Controllers** (entrada)
- **Endpoints** (rotas)
- **Schemas** (validação e transformação)
- **Actions** (orquestração de lógica)
- **Services** (casos de uso)
- **Repositories** (acesso a dados)
### 🧭 Arquitetura Hexagonal por Módulo
```text
/<domínio>
/actions # Orquestra lógica entre services, schemas e repositories
/controllers # Interface entre endpoints e actions
/endpoints # Define as rotas da API
/repositories # Acesso ao Firebird via SQLAlchemy
/schemas # Entrada e saída de dados
/services # Casos de uso
```bash
git clone https://git.oriustecnologia.com/OriusTecnologia/saas_api.git
```
---
## 🛠️ Tecnologias Utilizadas
## 2. Criar o Ambiente Virtual
- **Linguagem:** Python 3.11+
- **ORM:** SQLAlchemy
- **Banco de Dados:** Firebird
- **Driver:** fdb
- **Arquitetura:** Hexagonal por módulo
- **Organização:** Modular por domínio
O uso de um **ambiente virtual** garante que as bibliotecas instaladas para este projeto não afetem o Python global da sua máquina.
```bash
python -m venv venv
```
---
## 🗄️ Banco de Dados
## 3. Ativar o Ambiente Virtual
O projeto utiliza **Firebird** como banco principal.
Ative o ambiente virtual antes de instalar as dependências ou executar a aplicação.
**Arquivo de configuração:**
```text
Api/config/database/firebird.json
```bash
venv\Scripts\activate
```
**Exemplo:**
> **Observação:**
> Em sistemas Unix (Linux/Mac), o comando pode ser:
>
> ```bash
> source venv/bin/activate
> ```
---
## 4. Instalar Dependências do Sistema
A biblioteca de criptografia utilizada no projeto requer uma extensão da Microsoft para ser instalada.
Baixe e instale o **Microsoft C++ Build Tools** através do link abaixo:
[https://visualstudio.microsoft.com/pt-br/visual-cpp-build-tools/](https://visualstudio.microsoft.com/pt-br/visual-cpp-build-tools/)
Durante a instalação, selecione o pacote:
```
Desktop Development With C++
```
---
## 5. Instalar as Bibliotecas do Projeto
Com o ambiente virtual **ativado**, instale as dependências listadas no arquivo `requirements.txt`:
```bash
pip install -r requirements.txt
```
---
## 6. Configurar o Banco de Dados
O projeto utiliza um banco **Firebird**.
Edite o arquivo de configuração localizado em:
```
api/config/database/firebird.json
```
Exemplo do conteúdo padrão:
```json
{
"host": "localhost",
"name": "D:/Orius/Base/CAIAPONIA.FDB",
"port": 3050,
"database": "/caminho/para/database.fdb",
"user": "SYSDBA",
"password": "masterkey"
"password": "",
"charset": "UTF8",
"pool": {
"pre_ping": true,
"size": 5,
"max_overflow": 10
}
}
```
**Classe de conexão:**
### Ajustes Necessários:
```text
Api/core/connections/firebird.py
```
* **host**: Endereço do servidor do banco de dados.
* **name**: Caminho completo do arquivo `.FDB`.
* **port**: Porta do Firebird (padrão: `3050`).
* **user**: Usuário do banco de dados.
* **password**: Senha do usuário configurado.
---
## 🧠 SQLAlchemy com Queries Manuais
## 7. Iniciar a Aplicação
Utilizamos SQLAlchemy para:
- Gerenciar conexões
- Preencher parâmetros em queries nativas
**Exemplo:**
```python
sql = "SELECT * FROM CLIENTES WHERE ID = :id"
params = {"id": 123}
result = session.execute(text(sql), params).fetchall()
```
---
## 🗂️ Estrutura de Diretórios
```text
Api/
├── api/
│ └── v1/
│ ├── packages/
│ │ └── administrative/
│ │ ├── actions/
│ │ ├── controllers/
│ │ ├── endpoints/
│ │ ├── repositories/
│ │ ├── schemas/
│ │ └── services/
│ └── api.py
├── config/
│ └── database/firebird.json
├── core/
│ ├── base/
│ ├── connections/
│ ├── system/
│ ├── utils/
│ └── auth.py
```
---
## ▶️ Executando a API
Com o ambiente virtual **ativado**, execute o comando abaixo para iniciar a aplicação:
```bash
# Criar ambiente virtual
python -m venv .venv
# Ativar ambiente virtual
source .venv/bin/activate # Linux/macOS
.venv\Scripts\activate # Windows
# Instalar dependências
pip install -r requirements.txt
# Executar a API
uvicorn api.v1.api:app --reload
uvicorn main:app --reload
```
---
## 📌 Observações
- Novos domínios devem seguir a estrutura modular.
- A arquitetura hexagonal facilita manutenção e futura extração para microsserviços.
- A separação entre actions, services e repositories melhora a organização e testabilidade.
> **Dica:**
> O parâmetro `--reload` reinicia automaticamente a aplicação sempre que houver alterações no código.
---
## 👨‍💻 Autor
## 8. Testando a Aplicação
Desenvolvido por **Orius Tecnologia**
GitHub / LinkedIn: [seu-link](#)
Após iniciar a aplicação, abra o navegador e acesse o seguinte endereço:
```http
http://localhost:8000/docs
```
Você deverá visualizar a interface do **Swagger**, onde estarão listados todos os endpoints disponíveis da API.
> **Observação:**
> O Swagger permite testar os endpoints diretamente pelo navegador, sem necessidade de ferramentas externas como Postman ou Insomnia.
---
## Resumo dos Comandos
| Etapa | Comando |
| ----------------------- | ------------------------------------------------------------------------------- |
| Clonar o projeto | `git clone https://git.oriustecnologia.com/OriusTecnologia/saas_api.git` |
| Criar ambiente virtual | `python -m venv venv` |
| Ativar ambiente virtual | `venv\Scripts\activate` *(Windows)*<br>`source venv/bin/activate` *(Linux/Mac)* |
| Instalar dependências | `pip install -r requirements.txt` |
| Iniciar a aplicação | `uvicorn main:app --reload` |

View file

@ -0,0 +1,26 @@
from abstracts.action import BaseAction
from packages.v1.administrativo.schemas.g_tb_profissao_schema import GTbProfissaoIdSchema
from packages.v1.administrativo.repositories.g_tb_profissao.g_tb_profissao_delete_repository import DeleteRepository
class GTbProfissaoDeleteAction(BaseAction):
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de exclusão de um registro na tabela G_TB_PROFISSAO.
"""
def execute(self, profissao_schema: GTbProfissaoIdSchema):
"""
Executa a operação de exclusão no banco de dados.
Args:
profissao_schema (GTbProfissaoIdSchema): O esquema com o ID a ser excluído.
Returns:
O resultado da operação de exclusão.
"""
# Instanciamento do repositório
delete_repository = DeleteRepository()
# Execução do repositório
return delete_repository.execute(profissao_schema)

View file

@ -0,0 +1,28 @@
from abstracts.action import BaseAction
from packages.v1.administrativo.schemas.g_tb_profissao_schema import GTbProfissaoDescricaoSchema
from packages.v1.administrativo.repositories.g_tb_profissao.g_tb_profissao_get_by_descricao_repository import GetByDescricaoRepository
class GTbProfissaoGetByDescricaoAction(BaseAction):
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de busca de um registro na tabela G_TB_PROFISSAO por descrição.
"""
def execute(self, profissao_schema: GTbProfissaoDescricaoSchema):
"""
Executa a operação de busca no banco de dados.
Args:
profissao_schema (GTbProfissaoDescricaoSchema): O esquema com a descrição a ser buscada.
Returns:
O registro encontrado ou None.
"""
# Instanciamento do repositório
show_repository = GetByDescricaoRepository()
# Execução do repositório
response = show_repository.execute(profissao_schema)
# Retorno da informação
return response

View file

@ -0,0 +1,24 @@
from abstracts.action import BaseAction
from packages.v1.administrativo.repositories.g_tb_profissao.g_tb_profissao_index_repository import IndexRepository
class GTbProfissaoIndexAction(BaseAction):
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de listagem de todos os registros na tabela G_TB_PROFISSAO.
"""
def execute(self):
"""
Executa a operação de listagem no banco de dados.
Returns:
A lista de todos os registros.
"""
# Instanciamento do repositório
index_repository = IndexRepository()
# Execução do repositório
response = index_repository.execute()
# Retorno da informação
return response

View file

@ -0,0 +1,28 @@
from abstracts.action import BaseAction
from packages.v1.administrativo.schemas.g_tb_profissao_schema import GTbProfissaoSaveSchema
from packages.v1.administrativo.repositories.g_tb_profissao.g_tb_profissao_save_repository import SaveRepository
class GTbProfissaoSaveAction(BaseAction):
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de salvar um novo registro na tabela G_TB_PROFISSAO.
"""
def execute(self, profissao_schema: GTbProfissaoSaveSchema):
"""
Executa a operação de salvamento.
Args:
profissao_schema (GTbProfissaoSaveSchema): O esquema com os dados a serem salvos.
Returns:
O resultado da operação de salvamento.
"""
# Instanciamento do repositório
save_repository = SaveRepository()
# Execução do repositório
response = save_repository.execute(profissao_schema)
# Retorno da informação
return response

View file

@ -0,0 +1,28 @@
from abstracts.action import BaseAction
from packages.v1.administrativo.schemas.g_tb_profissao_schema import GTbProfissaoIdSchema
from packages.v1.administrativo.repositories.g_tb_profissao.g_tb_profissao_show_repository import ShowRepository
class GTbProfissaoShowAction(BaseAction):
"""
Serviço responsável por encapsular a lógica de negócio para a exibição
de um registro na tabela G_TB_PROFISSAO.
"""
def execute(self, profissao_schema: GTbProfissaoIdSchema):
"""
Executa a operação de exibição.
Args:
profissao_schema (GTbProfissaoIdSchema): O esquema com o ID do registro a ser exibido.
Returns:
O resultado da operação de exibição.
"""
# Instanciamento do repositório
show_repository = ShowRepository()
# Execução do repositório
response = show_repository.execute(profissao_schema)
# Retorno da informação
return response

View file

@ -0,0 +1,27 @@
from abstracts.action import BaseAction
from packages.v1.administrativo.schemas.g_tb_profissao_schema import GTbProfissaoUpdateSchema
from packages.v1.administrativo.repositories.g_tb_profissao.g_tb_profissao_update_repository import UpdateRepository
class GTbProfissaoUpdateAction(BaseAction):
"""
Serviço responsável por encapsular a lógica de negócio para a atualização
de um registro na tabela G_TB_PROFISSAO.
"""
def execute(self, tb_profissao_id: float, profissao_schema: GTbProfissaoUpdateSchema):
"""
Executa a operação de atualização.
Args:
tb_profissao_id (float): O ID da profissão a ser atualizada.
profissao_schema (GTbProfissaoUpdateSchema): O esquema com os dados a serem atualizados.
Returns:
O resultado da operação de atualização.
"""
# Instância o repositório de atualização
update_repository = UpdateRepository()
# Chama o método de execução do repositório para realizar a atualização
return update_repository.execute(tb_profissao_id, profissao_schema)

View file

@ -0,0 +1,26 @@
from abstracts.action import BaseAction
from packages.v1.administrativo.schemas.g_tb_regimebens_schema import GTbRegimebensIdSchema
from packages.v1.administrativo.repositories.g_tb_regimebens.g_tb_regimebens_delete_repository import DeleteRepository
class DeleteAction(BaseAction):
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de exclusão de um registro na tabela g_tb_regimebens.
"""
def execute(self, regimebens_schema: GTbRegimebensIdSchema):
"""
Executa a operação de exclusão no banco de dados.
Args:
regimebens_schema (GTbRegimebensIdSchema): O esquema com o ID a ser excluído.
Returns:
O resultado da operação de exclusão.
"""
# Instanciamento do repositório
delete_repository = DeleteRepository()
# Execução do repositório
return delete_repository.execute(regimebens_schema)

View file

@ -0,0 +1,28 @@
from abstracts.action import BaseAction
from packages.v1.administrativo.schemas.g_tb_regimebens_schema import GTbRegimebensDescricaoSchema
from packages.v1.administrativo.repositories.g_tb_regimebens.g_tb_regimebens_get_by_descricao_repository import GetByDescricaoRepository
class GetByDescricaoAction(BaseAction):
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de busca de um registro na tabela g_tb_regimebens por descrição.
"""
def execute(self, regimebens_schema: GTbRegimebensDescricaoSchema):
"""
Executa a operação de busca no banco de dados.
Args:
regimebens_schema (GTbRegimebensDescricaoSchema): O esquema com a descrição a ser buscada.
Returns:
O registro encontrado ou None.
"""
# Instanciamento do repositório
show_repository = GetByDescricaoRepository()
# Execução do repositório
response = show_repository.execute(regimebens_schema)
# Retorno da informação
return response

View file

@ -0,0 +1,24 @@
from abstracts.action import BaseAction
from packages.v1.administrativo.repositories.g_tb_regimebens.g_tb_regimebens_index_repository import IndexRepository
class IndexAction(BaseAction):
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de listagem de todos os registros na tabela g_tb_regimebens.
"""
def execute(self):
"""
Executa a operação de listagem no banco de dados.
Returns:
A lista de todos os registros.
"""
# Instanciamento do repositório
index_repository = IndexRepository()
# Execução do repositório
response = index_repository.execute()
# Retorno da informação
return response

View file

@ -0,0 +1,28 @@
from abstracts.action import BaseAction
from packages.v1.administrativo.schemas.g_tb_regimebens_schema import GTbRegimebensSaveSchema
from packages.v1.administrativo.repositories.g_tb_regimebens.g_tb_regimebens_save_repository import SaveRepository
class SaveAction(BaseAction):
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de salvar um novo registro na tabela g_tb_regimebens.
"""
def execute(self, regimebens_schema: GTbRegimebensSaveSchema):
"""
Executa a operação de salvamento.
Args:
regimebens_schema (GTbRegimebensSaveSchema): O esquema com os dados a serem salvos.
Returns:
O resultado da operação de salvamento.
"""
# Instânciamento do repositório
save_repository = SaveRepository()
# Execução do repositório
response = save_repository.execute(regimebens_schema)
# Retorno da informação
return response

View file

@ -0,0 +1,28 @@
from abstracts.action import BaseAction
from packages.v1.administrativo.schemas.g_tb_regimebens_schema import GTbRegimebensIdSchema
from packages.v1.administrativo.repositories.g_tb_regimebens.g_tb_regimebens_show_repository import ShowRepository
class ShowAction(BaseAction):
"""
Serviço responsável por encapsular a lógica de negócio para a exibição
de um registro na tabela g_tb_regimebens.
"""
def execute(self, regimebens_schema: GTbRegimebensIdSchema):
"""
Executa a operação de exibição.
Args:
regimebens_schema (GTbRegimebensIdSchema): O esquema com o ID do registro a ser exibido.
Returns:
O resultado da operação de exibição.
"""
# Instânciamento do repositório
show_repository = ShowRepository()
# Execução do repositório
response = show_repository.execute(regimebens_schema)
# Retorno da informação
return response

View file

@ -0,0 +1,25 @@
from packages.v1.administrativo.schemas.g_tb_regimebens_schema import GTbRegimebensUpdateSchema
from packages.v1.administrativo.repositories.g_tb_regimebens.g_tb_regimebens_update_repository import UpdateRepository
class UpdateAction:
"""
Service responsável por encapsular a lógica de negócio para a atualização
de um registro na tabela g_tb_regimebens.
"""
def execute(self, tb_regimebens_id: int, regimebens_schema: GTbRegimebensUpdateSchema):
"""
Executa a operação de atualização.
Args:
regimebens_schema (GTbRegimebensUpdateSchema): O esquema com os dados a serem atualizados.
Returns:
O resultado da operação de atualização.
"""
# Instância o repositório de atualização
update_repository = UpdateRepository()
# Chama o método de execução do repositório para realizar a atualização
return update_repository.execute(tb_regimebens_id, regimebens_schema)

View file

@ -0,0 +1,26 @@
from abstracts.action import BaseAction
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import GTbRegimecomunhaoIdSchema
from packages.v1.administrativo.repositories.g_tb_regimecomunhao.g_tb_regimecomunhao_delete_repository import DeleteRepository
class DeleteAction(BaseAction):
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de exclusão de um registro na tabela g_tb_regimecomunhao.
"""
def execute(self, regimecomunhao_schema: GTbRegimecomunhaoIdSchema):
"""
Executa a operação de exclusão no banco de dados.
Args:
regimecomunhao_schema (GTbRegimecomunhaoIdSchema): O esquema com o ID a ser excluído.
Returns:
O resultado da operação de exclusão.
"""
# Instanciamento do repositório
delete_repository = DeleteRepository()
# Execução do repositório
return delete_repository.execute(regimecomunhao_schema)

View file

@ -0,0 +1,29 @@
from abstracts.action import BaseAction
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import GTbRegimecomunhaoDescricaoSchema
from packages.v1.administrativo.repositories.g_tb_regimecomunhao.g_tb_regimecomunhao_get_by_descricao_repository import GetByDescricaoRepository
class GetByDescricaoAction(BaseAction):
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de busca de um registro na tabela g_tb_regimecomunhao por descrição.
"""
def execute(self, regimecomunhao_schema: GTbRegimecomunhaoDescricaoSchema):
"""
Executa a operação de busca no banco de dados.
Args:
regimecomunhao_schema (GTbRegimecomunhaoDescricaoSchema): O esquema com a descrição a ser buscada.
Returns:
O registro encontrado ou None.
"""
# Instanciamento do repositório
show_repository = GetByDescricaoRepository()
# Execução do repositório
response = show_repository.execute(regimecomunhao_schema)
# Retorno da informação
return response

View file

@ -0,0 +1,25 @@
from abstracts.action import BaseAction
from packages.v1.administrativo.repositories.g_tb_regimecomunhao.g_tb_regimecomunhao_index_repository import IndexRepository
class IndexAction(BaseAction):
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de listagem de todos os registros na tabela g_tb_regimecomunhao.
"""
def execute(self):
"""
Executa a operação de listagem no banco de dados.
Returns:
A lista de todos os registros.
"""
# Instanciamento do repositório
index_repository = IndexRepository()
# Execução do repositório
response = index_repository.execute()
# Retorno da informação
return response

View file

@ -0,0 +1,29 @@
from abstracts.action import BaseAction
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import GTbRegimecomunhaoSaveSchema
from packages.v1.administrativo.repositories.g_tb_regimecomunhao.g_tb_regimecomunhao_save_repository import SaveRepository
class SaveAction(BaseAction):
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de salvar um novo registro na tabela g_tb_regimecomunhao.
"""
def execute(self, regimecomunhao_schema: GTbRegimecomunhaoSaveSchema):
"""
Executa a operação de salvamento.
Args:
regimecomunhao_schema (GTbRegimecomunhaoSaveSchema): O esquema com os dados a serem salvos.
Returns:
O resultado da operação de salvamento.
"""
# Instânciamento do repositório
save_repository = SaveRepository()
# Execução do repositório
response = save_repository.execute(regimecomunhao_schema)
# Retorno da informação
return response

View file

@ -0,0 +1,29 @@
from abstracts.action import BaseAction
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import GTbRegimecomunhaoIdSchema
from packages.v1.administrativo.repositories.g_tb_regimecomunhao.g_tb_regimecomunhao_show_repository import ShowRepository
class ShowAction(BaseAction):
"""
Serviço responsável por encapsular a lógica de negócio para a exibição
de um registro na tabela g_tb_regimecomunhao.
"""
def execute(self, regimecomunhao_schema: GTbRegimecomunhaoIdSchema):
"""
Executa a operação de exibição.
Args:
regimecomunhao_schema (GTbRegimecomunhaoIdSchema): O esquema com o ID do registro a ser exibido.
Returns:
O resultado da operação de exibição.
"""
# Instânciamento do repositório
show_repository = ShowRepository()
# Execução do repositório
response = show_repository.execute(regimecomunhao_schema)
# Retorno da informação
return response

View file

@ -0,0 +1,25 @@
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import GTbRegimecomunhaoUpdateSchema
from packages.v1.administrativo.repositories.g_tb_regimecomunhao.g_tb_regimecomunhao_update_repository import UpdateRepository
class UpdateAction:
"""
Service responsável por encapsular a lógica de negócio para a atualização
de um registro na tabela g_tb_regimecomunhao.
"""
def execute(self, tb_regimecomunhao_id : int, regimecomunhao_schema: GTbRegimecomunhaoUpdateSchema):
"""
Executa a operação de atualização.
Args:
regimecomunhao_schema (GTbRegimecomunhaoUpdateSchema): O esquema com os dados a serem atualizados.
Returns:
O resultado da operação de atualização.
"""
# Instância o repositório de atualização
update_repository = UpdateRepository()
# Chama o método de execução do repositório para realizar a atualização
return update_repository.execute(tb_regimecomunhao_id, regimecomunhao_schema)

View file

@ -0,0 +1,25 @@
from abstracts.action import BaseAction
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import GTbTxmodelogrupoIdSchema
from packages.v1.administrativo.repositories.g_tb_txmodelogrupo.g_tb_txmodelogrupo_delete_repository import DeleteRepository
class DeleteAction(BaseAction):
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de exclusão de um registro na tabela G_TB_TXMODELOGRUPO.
"""
def execute(self, txmodelogrupo_schema: GTbTxmodelogrupoIdSchema):
"""
Executa a operação de exclusão no banco de dados.
Args:
txmodelogrupo_schema (GTbTxmodelogrupoIdSchema): O esquema com o ID a ser excluído.
Returns:
O resultado da operação de exclusão.
"""
# Instanciamento do repositório
delete_repository = DeleteRepository()
# Execução do repositório
return delete_repository.execute(txmodelogrupo_schema)

View file

@ -0,0 +1,29 @@
from abstracts.action import BaseAction
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import GTbTxmodelogrupoDescricaoSchema # Assumindo que um schema similar será criado
from packages.v1.administrativo.repositories.g_tb_txmodelogrupo.g_tb_txmodelogrupo_get_by_descricao_repository import GetByDescricaoRepository # Assumindo que um repositório similar será criado
class GetByDescricaoAction(BaseAction):
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de busca de um registro na tabela G_TB_TXMODELOGRUPO por descrição.
"""
def execute(self, txmodelogrupo_schema: GTbTxmodelogrupoDescricaoSchema):
"""
Executa a operação de busca no banco de dados.
Args:
txmodelogrupo_schema (GTbTxmodelogrupoDescricaoSchema): O esquema com a descrição a ser buscada.
Returns:
O registro encontrado ou None.
"""
# Instanciamento do repositório
get_by_descricao_repository = GetByDescricaoRepository()
# Execução do repositório
response = get_by_descricao_repository.execute(txmodelogrupo_schema)
# Retorno da informação
return response

View file

@ -0,0 +1,25 @@
from abstracts.action import BaseAction
from packages.v1.administrativo.repositories.g_tb_txmodelogrupo.g_tb_txmodelogrupo_index_repository import IndexRepository
class IndexAction(BaseAction):
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de listagem de todos os registros na tabela G_TB_TXMODELOGRUPO.
"""
def execute(self):
"""
Executa a operação de listagem no banco de dados.
Returns:
A lista de todos os registros da tabela G_TB_TXMODELOGRUPO.
"""
# Instanciamento do repositório
index_repository = IndexRepository()
# Execução do repositório
response = index_repository.execute()
# Retorno da informação
return response

View file

@ -0,0 +1,29 @@
from abstracts.action import BaseAction
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import GTbTxmodelogrupoSaveSchema
from packages.v1.administrativo.repositories.g_tb_txmodelogrupo.g_tb_txmodelogrupo_save_repository import SaveRepository
class SaveAction(BaseAction):
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de salvar um novo registro na tabela G_TB_TXMODELOGRUPO.
"""
def execute(self, txmodelogrupo_schema: GTbTxmodelogrupoSaveSchema):
"""
Executa a operação de salvamento.
Args:
txmodelogrupo_schema (GTbTxmodelogrupoSaveSchema): O esquema com os dados a serem salvos.
Returns:
O resultado da operação de salvamento.
"""
# Instanciamento do repositório
save_repository = SaveRepository()
# Execução do repositório
response = save_repository.execute(txmodelogrupo_schema)
# Retorno da informação
return response

View file

@ -0,0 +1,29 @@
from abstracts.action import BaseAction
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import GTbTxmodelogrupoIdSchema
from packages.v1.administrativo.repositories.g_tb_txmodelogrupo.g_tb_txmodelogrupo_show_repository import ShowRepository
class ShowAction(BaseAction):
"""
Serviço responsável por encapsular a lógica de negócio para a exibição
de um registro na tabela G_TB_TXMODELOGRUPO.
"""
def execute(self, txmodelogrupo_schema: GTbTxmodelogrupoIdSchema):
"""
Executa a operação de exibição.
Args:
txmodelogrupo_schema (GTbTxModeloGrupoIdSchema): O esquema com o ID do registro a ser exibido.
Returns:
O resultado da operação de exibição.
"""
# Instânciamento do repositório
show_repository = ShowRepository()
# Execução do repositório
response = show_repository.execute(txmodelogrupo_schema)
# Retorno da informação
return response

View file

@ -0,0 +1,25 @@
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import GTbTxmodelogrupoUpdateSchema
from packages.v1.administrativo.repositories.g_tb_txmodelogrupo.g_tb_txmodelogrupo_update_repository import UpdateRepository
class UpdateAction:
"""
Serviço responsável por encapsular a lógica de negócio para a atualização
de um registro na tabela G_TB_TXMODELOGRUPO.
"""
def execute(self, tb_txmodelogrupo_id: int, txmodelogrupo_schema: GTbTxmodelogrupoUpdateSchema):
"""
Executa a operação de atualização.
Args:
txmodelogrupo_schema (GTbTxmodelogrupoUpdateSchema): O esquema com os dados a serem atualizados.
Returns:
O resultado da operação de atualização.
"""
# Instância o repositório de atualização
update_repository = UpdateRepository()
# Chama o método de execução do repositório para realizar a atualização
return update_repository.execute(tb_txmodelogrupo_id, txmodelogrupo_schema)

View file

@ -0,0 +1,113 @@
from actions.dynamic_import.dynamic_import import DynamicImport
from packages.v1.administrativo.schemas.g_tb_profissao_schema import (
GTbProfissaoSchema,
GTbProfissaoSaveSchema,
GTbProfissaoUpdateSchema,
GTbProfissaoIdSchema,
GTbProfissaoDescricaoSchema
)
class GTbProfissaoController:
def __init__(self):
# Action responsável por carregar as services de acordo com o estado
self.dynamic_import = DynamicImport()
# Define o pacote que deve ser carregado
self.dynamic_import.set_package("administrativo")
# Define a tabela que o pacote pertence
self.dynamic_import.set_table("g_tb_profissao")
pass
# Lista todas as profissões
def index(self):
# Importação da classe desejada
indexService = self.dynamic_import.service("g_tb_profissao_index_service", "IndexService")
# Instância da classe service
self.indexService = indexService()
# Lista todas as profissões
return {
'message': 'Profissões localizadas com sucesso',
'data': self.indexService.execute()
}
# Busca uma profissão específica pelo ID
def show(self, profissao_schema: GTbProfissaoIdSchema):
#Importação da classe desejada
show_service = self.dynamic_import.service('g_tb_profissao_show_service', 'ShowService')
# Instância da classe desejada
self.show_service = show_service()
# Busca e retorna a profissão desejada
return {
'message' : 'Profissão localizada com sucesso',
'data': self.show_service.execute(profissao_schema)
}
# Busca uma profissão pela descrição
def get_by_descricao(self, profissao_schema: GTbProfissaoDescricaoSchema):
#Importação da classe desejada
show_service = self.dynamic_import.service('g_tb_profissao_get_descricao_service', 'GetByDescricaoService')
# Instância da classe desejada
self.show_service = show_service()
# Busca e retorna a profissão desejada
return {
'message' : 'Profissão localizada com sucesso',
'data': self.show_service.execute(profissao_schema, True) #True para retornar a mensagem de erro caso não localize o serviço
}
# Cadastra uma nova profissão
def save(self, profissao_schema: GTbProfissaoSaveSchema):
#Importação da classe desejada
save_service = self.dynamic_import.service('g_tb_profissao_save_service', 'GTbProfissaoSaveService')
# Instância da classe desejada
self.save_service = save_service()
# Busca e retorna a profissão desejada
return {
'message' : 'Profissão salva com sucesso',
'data': self.save_service.execute(profissao_schema)
}
# Atualiza os dados de uma profissão
def update(self, tb_profissao_id: float, profissao_schema: GTbProfissaoUpdateSchema):
#Importação da classe desejada
update_service = self.dynamic_import.service('g_tb_profissao_update_service', 'GTbProfissaoUpdateService')
# Instância da classe desejada
self.update_service = update_service()
# Busca e retorna a profissão desejada
return {
'message' : 'Profissão atualizada com sucesso',
'data': self.update_service.execute(tb_profissao_id, profissao_schema)
}
# Exclui uma profissão
def delete(self, profissao_schema: GTbProfissaoIdSchema):
#Importação da classe desejada
delete_service = self.dynamic_import.service('g_tb_profissao_delete_service', 'DeleteService')
# Instância da classe desejada
self.delete_service = delete_service()
# Busca e retorna a profissão desejada
return {
'message' : 'Profissão removida com sucesso',
'data': self.delete_service.execute(profissao_schema)
}

View file

@ -0,0 +1,113 @@
from actions.dynamic_import.dynamic_import import DynamicImport
from packages.v1.administrativo.schemas.g_tb_regimebens_schema import (
GTbRegimebensSchema,
GTbRegimebensSaveSchema,
GTbRegimebensUpdateSchema,
GTbRegimebensIdSchema,
GTbRegimebensDescricaoSchema
)
class GTbRegimebensController:
def __init__(self):
# Action responsável por carregar as services de acordo com o estado
self.dynamic_import = DynamicImport()
# Define o pacote que deve ser carregado
self.dynamic_import.set_package("administrativo")
# Define a tabela que o pacote pertence
self.dynamic_import.set_table("g_tb_regimebens")
pass
# Lista todos os regimes de bens
def index(self):
# Importação da classe desejada
indexService = self.dynamic_import.service("g_tb_regimebens_index_service", "IndexService")
# Instância da classe service
self.indexService = indexService()
# Lista todos os regimes de bens
return {
'message': 'Regimes de bens localizados com sucesso',
'data': self.indexService.execute()
}
# Busca um regime de bens específico pelo ID
def show(self, regimebens_schema : GTbRegimebensIdSchema):
#Importação da classe desejada
show_service = self.dynamic_import.service('g_tb_regimebens_show_service', 'ShowService')
# Instância da classe desejada
self.show_service = show_service()
# Busca e retorna o regime de bens desejado
return {
'message' : 'Regime de bens localizado com sucesso',
'data': self.show_service.execute(regimebens_schema)
}
# Busca um regime de bens pela descrição
def get_by_descricao(self, regimebens_schema : GTbRegimebensDescricaoSchema):
#Importação da classe desejada
show_service = self.dynamic_import.service('g_tb_regimebens_get_descricao_service', 'GetByDescricaoService')
# Instância da classe desejada
self.show_service = show_service()
# Busca e retorna o regime de bens desejado
return {
'message' : 'Regime de bens localizado com sucesso',
'data': self.show_service.execute(regimebens_schema, True)
}
# Cadastra um novo regime de bens
def save(self, regimebens_schema : GTbRegimebensSaveSchema):
#Importação da classe desejada
save_service = self.dynamic_import.service('g_tb_regimebens_save_service', 'GTbRegimebensSaveService')
# Instância da classe desejada
self.save_service = save_service()
# Busca e retorna o regime de bens desejado
return {
'message' : 'Regime de bens salvo com sucesso',
'data': self.save_service.execute(regimebens_schema)
}
# Atualiza os dados de um regime de bens
def update(self, tb_regimebens_id : int, regimebens_schema : GTbRegimebensUpdateSchema):
#Importação da classe desejada
update_service = self.dynamic_import.service('g_tb_regimebens_update_service', 'GTbRegimebensUpdateService')
# Instância da classe desejada
self.update_service = update_service()
# Busca e retorna o regime de bens desejado
return {
'message' : 'Regime de bens atualizado com sucesso',
'data': self.update_service.execute(tb_regimebens_id, regimebens_schema)
}
# Exclui um regime de bens
def delete(self, regimebens_schema : GTbRegimebensIdSchema):
#Importação da classe desejada
delete_service = self.dynamic_import.service('g_tb_regimebens_delete_service', 'DeleteService')
# Instância da classe desejada
self.delete_service = delete_service()
# Busca e retorna o regime de bens desejado
return {
'message' : 'Regime de bens removido com sucesso',
'data': self.delete_service.execute(regimebens_schema)
}

View file

@ -0,0 +1,117 @@
from actions.dynamic_import.dynamic_import import DynamicImport
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import (
GTbRegimecomunhaoSchema,
GTbRegimecomunhaoSaveSchema,
GTbRegimecomunhaoUpdateSchema,
GTbRegimecomunhaoIdSchema,
GTbRegimecomunhaoDescricaoSchema
)
class GTbRegimecomunhaoController:
def __init__(self):
# Action responsável por carregar as services de acordo com o estado
self.dynamic_import = DynamicImport()
# Define o pacote que deve ser carregado
self.dynamic_import.set_package("administrativo")
# Define a tabela que o pacote pertence
self.dynamic_import.set_table("g_tb_regimecomunhao")
pass
# Lista todos os regimes de comunhão
def index(self):
# Importação da classe desejada
indexService = self.dynamic_import.service("g_tb_regimecomunhao_index_service", "IndexService")
# Instância da classe service
self.indexService = indexService()
# Lista todos os regimes de comunhão
return {
'message': 'Regimes de comunhão localizados com sucesso',
'data': self.indexService.execute()
}
# Busca um regime de comunhão específico pelo ID
def show(self, regimecomunhao_schema: GTbRegimecomunhaoIdSchema):
# Importação da classe desejada
show_service = self.dynamic_import.service('g_tb_regimecomunhao_show_service', 'ShowService')
# Instância da classe desejada
self.show_service = show_service()
# Busca e retorna o regime de comunhão desejado
return {
'message': 'Regime de comunhão localizado com sucesso',
'data': self.show_service.execute(regimecomunhao_schema)
}
# Busca um regime de comunhão pela descrição
def get_by_descricao(self, regimecomunhao_schema: GTbRegimecomunhaoDescricaoSchema):
# Importação da classe desejada
show_service = self.dynamic_import.service('g_tb_regimecomunhao_get_by_descricao_service', 'GetByDescricaoService')
# Instância da classe desejada
self.show_service = show_service()
# Busca e retorna o regime de comunhão desejado
return {
'message': 'Regime de comunhão localizado com sucesso',
'data': self.show_service.execute(regimecomunhao_schema, True)# True para retornar a mensagem de erro caso não localize o serviço
}
# Cadastra um novo regime de comunhão
def save(self, regimecomunhao_schema: GTbRegimecomunhaoSaveSchema):
# Importação da classe desejada
save_service = self.dynamic_import.service('g_tb_regimecomunhao_save_service', 'GTbRegimecomunhaoSaveService')
# Instância da classe desejada
self.save_service = save_service()
# Busca e retorna o regime de comunhão desejado
return {
'message': 'Regime de comunhão salvo com sucesso',
'data': self.save_service.execute(regimecomunhao_schema)
}
# Atualiza os dados de um regime de comunhão
def update(self, tb_regimecomunhao_id: int, regimecomunhao_schema: GTbRegimecomunhaoUpdateSchema):
# Importação da classe desejada
update_service = self.dynamic_import.service('g_tb_regimecomunhao_update_service', 'GTbRegimecomunhaoUpdateService')
# Instância da classe desejada
self.update_service = update_service()
# Busca e retorna o regime de comunhão desejado
return {
'message': 'Regime de comunhão atualizado com sucesso',
'data': self.update_service.execute(tb_regimecomunhao_id, regimecomunhao_schema)
}
# Exclui um regime de comunhão
def delete(self, regimecomunhao_schema: GTbRegimecomunhaoIdSchema):
# Importação da classe desejada
delete_service = self.dynamic_import.service('g_tb_regimecomunhao_delete_service', 'DeleteService')
# Instância da classe desejada
self.delete_service = delete_service()
# Busca e retorna o regime de comunhão desejado
return {
'message': 'Regime de comunhão removido com sucesso',
'data': self.delete_service.execute(regimecomunhao_schema)
}

View file

@ -0,0 +1,112 @@
from actions.dynamic_import.dynamic_import import DynamicImport
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import (
GTbTxmodelogrupoSchema,
GTbTxmodelogrupoSaveSchema,
GTbTxmodelogrupoUpdateSchema,
GTbTxmodelogrupoIdSchema,
GTbTxmodelogrupoDescricaoSchema
)
class GTbTxmodelogrupoController:
def __init__(self):
# Action responsável por carregar as services de acordo com o estado
self.dynamic_import = DynamicImport()
# Define o pacote que deve ser carregado
self.dynamic_import.set_package("administrativo")
# Define a tabela que o pacote pertence
self.dynamic_import.set_table("g_tb_txmodelogrupo")
pass
# Lista todos os grupos de modelo de texto
def index(self):
# Importação da classe desejada
index_service = self.dynamic_import.service("g_tb_txmodelogrupo_index_service", "IndexService")
# Instância da classe service
self.index_service = index_service()
# Lista todos os grupos de modelo de texto
return {
'message': 'Grupos de modelo de texto localizados com sucesso',
'data': self.index_service.execute()
}
# Busca um grupo de modelo de texto específico pelo ID
def show(self, txmodelogrupo_schema: GTbTxmodelogrupoIdSchema):
# Importação da classe desejada
show_service = self.dynamic_import.service('g_tb_txmodelogrupo_show_service', 'ShowService')
# Instância da classe desejada
self.show_service = show_service()
# Busca e retorna o grupo de modelo de texto desejado
return {
'message': 'Grupo de modelo de texto localizado com sucesso',
'data': self.show_service.execute(txmodelogrupo_schema)
}
# Busca um grupo de modelo de texto pela descrição
def get_by_descricao(self, txmodelogrupo_schema: GTbTxmodelogrupoDescricaoSchema):
# Importação da classe desejada
show_service = self.dynamic_import.service('g_tb_txmodelogrupo_get_by_descricao_service', 'GetByDescricaoService')
# Instância da classe desejada
self.show_service = show_service()
# Busca e retorna o grupo de modelo de texto desejado
return {
'message': 'Grupo de modelo de texto localizado com sucesso',
'data': self.show_service.execute(txmodelogrupo_schema, True) # True para retornar a mensagem de erro caso não localize o serviço
}
# Cadastra um novo grupo de modelo de texto
def save(self, txmodelogrupo_schema: GTbTxmodelogrupoSaveSchema):
# Importação da classe desejada
save_service = self.dynamic_import.service('g_tb_txmodelogrupo_save_service', 'GTbTxmodelogrupoSaveService')
# Instância da classe desejada
self.save_service = save_service()
# Busca e retorna o grupo de modelo de texto desejado
return {
'message': 'Grupo de modelo de texto salvo com sucesso',
'data': self.save_service.execute(txmodelogrupo_schema)
}
# Atualiza os dados de um grupo de modelo de texto
def update(self, tb_txmodelogrupo_id: int, txmodelogrupo_schema: GTbTxmodelogrupoUpdateSchema):
# Importação da classe desejada
update_service = self.dynamic_import.service('g_tb_txmodelogrupo_update_service', 'GTbTxmodelogrupoUpdateService')
# Instância da classe desejada
self.update_service = update_service()
# Busca e retorna o grupo de modelo de texto desejado
return {
'message': 'Grupo de modelo de texto atualizado com sucesso',
'data': self.update_service.execute(tb_txmodelogrupo_id, txmodelogrupo_schema)
}
# Exclui um grupo de modelo de texto
def delete(self, txmodelogrupo_schema: GTbTxmodelogrupoIdSchema):
# Importação da classe desejada
delete_service = self.dynamic_import.service('g_tb_txmodelogrupo_delete_service', 'DeleteService')
# Instância da classe desejada
self.delete_service = delete_service()
# Busca e retorna o grupo de modelo de texto desejado
return {
'message': 'Grupo de modelo de texto removido com sucesso',
'data': self.delete_service.execute(txmodelogrupo_schema)
}

View file

@ -0,0 +1,110 @@
# Importação de bibliotecas
from typing import Optional
from fastapi import APIRouter, Body, Depends, status
from actions.jwt.get_current_user import get_current_user
from packages.v1.administrativo.controllers.g_tb_profissao_controller import GTbProfissaoController
from packages.v1.administrativo.schemas.g_tb_profissao_schema import (
GTbProfissaoSchema,
GTbProfissaoSaveSchema,
GTbProfissaoUpdateSchema,
GTbProfissaoIdSchema,
GTbProfissaoDescricaoSchema
)
# Inicializa o roteador para as rotas da profissão
router = APIRouter()
# Instanciamento do controller desejado
g_tb_profissao_controller = GTbProfissaoController()
# Lista todas as profissões
@router.get('/',
status_code=status.HTTP_200_OK,
summary='Lista todas as profissões cadastradas',
response_description='Lista todas as profissões cadastradas')
async def index(current_user: dict = Depends(get_current_user)):
"""
Endpoint que retorna uma lista de todas as profissões cadastradas.
"""
# Busca todas as profissões cadastradas
response = g_tb_profissao_controller.index()
return response
# Localiza uma profissão pela descrição
@router.get('/descricao',
status_code=status.HTTP_200_OK,
summary='Busca um registro de profissão em específico pela descrição',
response_description='Busca um registro de profissão em específico')
async def get_by_descricao(descricao : str, current_user: dict = Depends(get_current_user)):
"""
Endpoint que busca uma profissão específica usando a descrição.
"""
# Cria o schema com os dados recebidos
profissao_schema = GTbProfissaoDescricaoSchema(descricao=descricao)
# Busca a profissão específica pela descrição
response = g_tb_profissao_controller.get_by_descricao(profissao_schema)
return response
# Localiza uma profissão pelo ID
@router.get('/{tb_profissao_id}',
status_code=status.HTTP_200_OK,
summary='Busca um registro de profissão em específico pelo ID',
response_description='Busca um registro de profissão em específico')
async def show(tb_profissao_id : float, current_user: dict = Depends(get_current_user)):
"""
Endpoint que busca uma profissão específica pelo ID.
"""
# Cria o schema com os dados recebidos
profissao_schema = GTbProfissaoIdSchema(tb_profissao_id=tb_profissao_id)
# Busca a profissão específica pelo ID
response = g_tb_profissao_controller.show(profissao_schema)
return response
# Cadastro de profissão
@router.post('/',
status_code=status.HTTP_201_CREATED,
summary='Cadastra uma nova profissão',
response_description='Cadastra uma nova profissão')
async def save(profissao_schema : GTbProfissaoSaveSchema, current_user: dict = Depends(get_current_user)):
"""
Endpoint para cadastrar uma nova profissão no banco de dados.
"""
# Efetua o cadastro no banco de dados
response = g_tb_profissao_controller.save(profissao_schema)
return response
# Atualiza os dados de uma profissão
@router.put('/{tb_profissao_id}',
status_code=status.HTTP_200_OK,
summary='Atualiza os dados de uma profissão',
response_description='Atualiza os dados de uma profissão')
async def update(tb_profissao_id : float, profissao_schema : GTbProfissaoUpdateSchema, current_user: dict = Depends(get_current_user)):
"""
Endpoint para atualizar os dados de uma profissão existente.
"""
# Efetua a atualização dos dados
response = g_tb_profissao_controller.update(tb_profissao_id, profissao_schema)
return response
# Exclui uma profissão
@router.delete('/{tb_profissao_id}',
status_code=status.HTTP_200_OK,
summary='Remove uma profissão',
response_description='Remove uma profissão')
async def delete(tb_profissao_id : float, current_user: dict = Depends(get_current_user)):
"""
Endpoint para excluir uma profissão pelo ID.
"""
# Cria o schema com os dados recebidos
profissao_schema = GTbProfissaoIdSchema(tb_profissao_id=tb_profissao_id)
# Efetua a exclusão da profissão
response = g_tb_profissao_controller.delete(profissao_schema)
return response

View file

@ -0,0 +1,108 @@
# Importação de bibliotecas
from typing import Optional
from fastapi import APIRouter, Body, Depends, status
from actions.jwt.get_current_user import get_current_user
from packages.v1.administrativo.controllers.g_tb_regimebens_controller import GTbRegimebensController
from packages.v1.administrativo.schemas.g_tb_regimebens_schema import (
GTbRegimebensSchema,
GTbRegimebensSaveSchema,
GTbRegimebensUpdateSchema,
GTbRegimebensIdSchema
)
# Inicializa o roteador para as rotas do regime de bens
router = APIRouter()
# Instânciamento do controller desejado
g_tb_regimebens_controller = GTbRegimebensController()
# Lista todos os regimes de bens
@router.get('/',
status_code=status.HTTP_200_OK,
summary='Lista todos os regimes de bens cadastrados',
response_description='Lista todos os regimes de bens cadastrados')
async def index(current_user: dict = Depends(get_current_user)):
# Busca todos os regimes de bens cadastrados
response = g_tb_regimebens_controller.index()
# Retorna os dados localizados
return response
# Localiza um regime de bens pela descrição
@router.get('/descricao',
status_code=status.HTTP_200_OK,
summary='Busca um registro em específico pela descrição',
response_description='Busca um registro em específico')
async def get_by_descricao(descricao : str, current_user: dict = Depends(get_current_user)):
# Cria o schema com os dados recebidos
regimebens_schema = GTbRegimebensSchema(descricao=descricao)
# Busca um regime de bens específico pela descrição
response = g_tb_regimebens_controller.get_by_descricao(regimebens_schema)
# Retorna os dados localizados
return response
# Localiza um regime de bens pelo ID
@router.get('/{tb_regimebens_id}',
status_code=status.HTTP_200_OK,
summary='Busca um registro em específico pelo ID do regime de bens',
response_description='Busca um registro em específico')
async def show(tb_regimebens_id : int, current_user: dict = Depends(get_current_user)):
# Cria o schema com os dados recebidos
regimebens_schema = GTbRegimebensIdSchema(tb_regimebens_id=tb_regimebens_id)
# Busca um regime de bens específico pelo ID
response = g_tb_regimebens_controller.show(regimebens_schema)
# Retorna os dados localizados
return response
# Cadastro de regime de bens
@router.post('/',
status_code=status.HTTP_201_CREATED,
summary='Cadastra um regime de bens',
response_description='Cadastra um regime de bens')
async def save(regimebens_schema : GTbRegimebensSaveSchema, current_user: dict = Depends(get_current_user)):
# Efetua o cadastro no banco de dados
response = g_tb_regimebens_controller.save(regimebens_schema)
# Retorna os dados localizados
return response
# Atualiza os dados de um regime de bens
@router.put('/{tb_regimebens_id}',
status_code=status.HTTP_200_OK,
summary='Atualiza um regime de bens',
response_description='Atualiza um regime de bens')
async def update(tb_regimebens_id : int, regimebens_schema : GTbRegimebensUpdateSchema, current_user: dict = Depends(get_current_user)):
# Efetua a atualização dos dados
response = g_tb_regimebens_controller.update(tb_regimebens_id, regimebens_schema)
# Retorna os dados localizados
return response
# Exclui um determinado regime de bens
@router.delete('/{tb_regimebens_id}',
status_code=status.HTTP_200_OK,
summary='Remove um regime de bens',
response_description='Remove um regime de bens')
async def delete(tb_regimebens_id : int, current_user: dict = Depends(get_current_user)):
# Cria o schema com os dados recebidos
regimebens_schema = GTbRegimebensIdSchema(tb_regimebens_id=tb_regimebens_id)
# Efetua a exclusão do regime de bens
response = g_tb_regimebens_controller.delete(regimebens_schema)
# Retorna os dados localizados
return response

View file

@ -0,0 +1,110 @@
# Importação de bibliotecas
from typing import Optional
from fastapi import APIRouter, Body, Depends, status
from actions.jwt.get_current_user import get_current_user
from packages.v1.administrativo.controllers.g_tb_regimecomunhao_controller import GTbRegimecomunhaoController
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import (
GTbRegimecomunhaoSchema,
GTbRegimecomunhaoSaveSchema,
GTbRegimecomunhaoUpdateSchema,
GTbRegimecomunhaoDescricaoSchema,
GTbRegimecomunhaoIdSchema
)
# Inicializa o roteador para as rotas da tabela
router = APIRouter()
# Instânciamento do controller desejado
g_tb_regimecomunhao_controller = GTbRegimecomunhaoController()
# Lista todos os regimes de comunhão
@router.get('/',
status_code=status.HTTP_200_OK,
summary='Lista todos os regimes de comunhão cadastrados',
response_description='Lista todos os regimes de comunhão cadastrados')
async def index(current_user: dict = Depends(get_current_user)):
# Busca todos os registros
response = g_tb_regimecomunhao_controller.index()
# Retorna os dados localizados
return response
# Localiza um registro pela descrição
@router.get('/descricao',
status_code=status.HTTP_200_OK,
summary='Busca um registro em especifico pela descrição',
response_description='Busca um registro em especifico')
async def get_by_descricao(descricao: str, current_user: dict = Depends(get_current_user)):
# Cria o schema com os dados recebidos
regimecomunhao_schema = GTbRegimecomunhaoDescricaoSchema(descricao=descricao)
# Busca o registro especifico pela descrição
response = g_tb_regimecomunhao_controller.get_by_descricao(regimecomunhao_schema)
# Retorna os dados localizados
return response
# Localiza um registro pelo ID
@router.get('/{tb_regimecomunhao_id}',
status_code=status.HTTP_200_OK,
summary='Busca um registro em especifico pelo ID',
response_description='Busca um registro em especifico')
async def show(tb_regimecomunhao_id: int, current_user: dict = Depends(get_current_user)):
# Cria o schema com os dados recebidos
regimecomunhao_schema = GTbRegimecomunhaoIdSchema(tb_regimecomunhao_id=tb_regimecomunhao_id)
# Busca o registro especifico pelo ID
response = g_tb_regimecomunhao_controller.show(regimecomunhao_schema)
# Retorna os dados localizados
return response
# Cadastro de novo registro
@router.post('/',
status_code=status.HTTP_200_OK,
summary='Cadastra um novo registro de regime de comunhão',
response_description='Cadastra um novo registro')
async def save(regimecomunhao_schema: GTbRegimecomunhaoSaveSchema, current_user: dict = Depends(get_current_user)):
# Efetua o cadastro no banco de dados
response = g_tb_regimecomunhao_controller.save(regimecomunhao_schema)
# Retorna os dados localizados
return response
# Atualiza os dados de um registro
@router.put('/{tb_regimecomunhao_id}',
status_code=status.HTTP_200_OK,
summary='Atualiza um registro',
response_description='Atualiza um registro')
async def update(tb_regimecomunhao_id: int, regimecomunhao_schema: GTbRegimecomunhaoUpdateSchema, current_user: dict = Depends(get_current_user)):
# Efetua a atualização dos dados
response = g_tb_regimecomunhao_controller.update(tb_regimecomunhao_id, regimecomunhao_schema)
# Retorna os dados localizados
return response
# Exclui um determinado registro
@router.delete('/{tb_regimecomunhao_id}',
status_code=status.HTTP_200_OK,
summary='Remove um registro',
response_description='Remove um registro')
async def delete(tb_regimecomunhao_id: int, current_user: dict = Depends(get_current_user)):
# Cria o schema com os dados recebidos
regimecomunhao_schema = GTbRegimecomunhaoIdSchema(tb_regimecomunhao_id=tb_regimecomunhao_id)
# Efetua a exclusão do registro
response = g_tb_regimecomunhao_controller.delete(regimecomunhao_schema)
# Retorna os dados localizados
return response

View file

@ -0,0 +1,78 @@
from typing import Optional
from fastapi import APIRouter, Body, Depends, status
from actions.jwt.get_current_user import get_current_user
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import (
GTbTxmodelogrupoSchema,
GTbTxmodelogrupoSaveSchema,
GTbTxmodelogrupoUpdateSchema,
GTbTxmodelogrupoDescricaoSchema,
GTbTxmodelogrupoIdSchema
)
from packages.v1.administrativo.controllers.g_tb_txmodelogrupo_controller import GTbTxmodelogrupoController
router = APIRouter()
g_tb_txmodelogrupo_controller = GTbTxmodelogrupoController()
@router.get(
'/',
status_code=status.HTTP_200_OK,
summary='Lista todos os grupos de modelo de texto cadastrados',
response_description='Lista todos os grupos de modelo de texto cadastrados'
)
async def index(current_user: dict = Depends(get_current_user)):
response = g_tb_txmodelogrupo_controller.index()
return response
@router.get(
'/descricao',
status_code=status.HTTP_200_OK,
summary='Busca um grupo de modelo de texto pela descrição',
response_description='Busca um grupo de modelo de texto pela descrição'
)
async def get_by_descricao(descricao: str, current_user: dict = Depends(get_current_user)):
txmodelogrupo_schema = GTbTxmodelogrupoDescricaoSchema(descricao=descricao)
response = g_tb_txmodelogrupo_controller.get_by_descricao(txmodelogrupo_schema)
return response
@router.get(
'/{tb_txmodelogrupo_id}',
status_code=status.HTTP_200_OK,
summary='Busca um grupo de modelo de texto pelo ID',
response_description='Busca um grupo de modelo de texto pelo ID'
)
async def show(tb_txmodelogrupo_id: int, current_user: dict = Depends(get_current_user)):
txmodelogrupo_schema = GTbTxmodelogrupoIdSchema(tb_txmodelogrupo_id=tb_txmodelogrupo_id)
response = g_tb_txmodelogrupo_controller.show(txmodelogrupo_schema)
return response
@router.post(
'/',
status_code=status.HTTP_200_OK,
summary='Cadastra um novo grupo de modelo de texto',
response_description='Cadastra um novo grupo de modelo de texto'
)
async def save(txmodelogrupo_schema: GTbTxmodelogrupoSaveSchema, current_user: dict = Depends(get_current_user)):
response = g_tb_txmodelogrupo_controller.save(txmodelogrupo_schema)
return response
@router.put(
'/{tb_txmodelogrupo_id}',
status_code=status.HTTP_200_OK,
summary='Atualiza um grupo de modelo de texto',
response_description='Atualiza um grupo de modelo de texto'
)
async def update(tb_txmodelogrupo_id: int, txmodelogrupo_schema: GTbTxmodelogrupoUpdateSchema, current_user: dict = Depends(get_current_user)):
response = g_tb_txmodelogrupo_controller.update(tb_txmodelogrupo_id, txmodelogrupo_schema)
return response
@router.delete(
'/{tb_txmodelogrupo_id}',
status_code=status.HTTP_200_OK,
summary='Remove um grupo de modelo de texto',
response_description='Remove um grupo de modelo de texto'
)
async def delete(tb_txmodelogrupo_id: int, current_user: dict = Depends(get_current_user)):
txmodelogrupo_schema = GTbTxmodelogrupoIdSchema(tb_txmodelogrupo_id=tb_txmodelogrupo_id)
response = g_tb_txmodelogrupo_controller.delete(txmodelogrupo_schema)
return response

View file

@ -0,0 +1,41 @@
from abstracts.repository import BaseRepository
from packages.v1.administrativo.schemas.g_tb_profissao_schema import GTbProfissaoIdSchema
from fastapi import HTTPException, status
class DeleteRepository(BaseRepository):
"""
Repositório para a operação de exclusão de um registro na tabela
G_TB_PROFISSAO.
"""
def execute(self, profissao_schema: GTbProfissaoIdSchema):
"""
Executa a consulta SQL para remover um registro pelo ID.
Args:
profissao_schema (GTbProfissaoIdSchema): O esquema com o ID a ser removido.
Returns:
O resultado da operação de exclusão.
"""
try:
# Montagem do sql
sql = """ DELETE FROM G_TB_PROFISSAO WHERE TB_PROFISSAO_ID = :tb_profissao_id """
# Preenchimento de parâmetros
params = {
"tb_profissao_id": profissao_schema.tb_profissao_id
}
# Execução do sql
response = self.run(sql, params)
# Retorna o resultado
return response
except Exception as e:
# Informa que houve uma falha na exclusão
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=f"Erro ao excluir profissão: {e}"
)

View file

@ -0,0 +1,29 @@
from abstracts.repository import BaseRepository
from packages.v1.administrativo.schemas.g_tb_profissao_schema import GTbProfissaoDescricaoSchema
class GetByDescricaoRepository(BaseRepository):
"""
Repositório para a operação de busca de um registro na tabela
G_TB_PROFISSAO por descrição.
"""
def execute(self, profissao_schema: GTbProfissaoDescricaoSchema):
"""
Executa a consulta SQL para buscar um registro pela descrição.
Args:
profissao_schema (GTbProfissaoDescricaoSchema): O esquema com a descrição a ser buscada.
Returns:
Um dicionário contendo os dados do registro ou None se não for encontrado.
"""
# Montagem do SQL
sql = """ SELECT * FROM G_TB_PROFISSAO WHERE DESCRICAO = :descricao """
# Preenchimento de parâmetros
params = {
'descricao': profissao_schema.descricao
}
# Execução do sql
return self.fetch_one(sql, params)

View file

@ -0,0 +1,23 @@
from abstracts.repository import BaseRepository
class IndexRepository(BaseRepository):
"""
Repositório para a operação de listagem de todos os registros
na tabela G_TB_PROFISSAO.
"""
def execute(self):
"""
Executa a consulta SQL para buscar todos os registros.
Returns:
Uma lista de dicionários contendo os dados dos registros.
"""
# Montagem do SQL
sql = """ SELECT * FROM G_TB_PROFISSAO """
# Execução do sql
response = self.fetch_all(sql)
# Retorna os dados localizados
return response

View file

@ -0,0 +1,56 @@
from fastapi import HTTPException, status
from abstracts.repository import BaseRepository
from packages.v1.administrativo.schemas.g_tb_profissao_schema import GTbProfissaoSaveSchema
class SaveRepository(BaseRepository):
"""
Repositório para a operação de salvamento de um novo registro na tabela G_TB_PROFISSAO.
"""
def execute(self, profissao_schema: GTbProfissaoSaveSchema):
"""
Executa a operação de salvamento no banco de dados.
Args:
profissao_schema (GTbProfissaoSaveSchema): O esquema com os dados a serem salvos.
Returns:
O registro recém-criado.
Raises:
HTTPException: Caso ocorra um erro na execução da query.
"""
try:
# Montagem do SQL
sql = """ INSERT INTO G_TB_PROFISSAO(
TB_PROFISSAO_ID,
DESCRICAO,
SITUACAO,
COD_CBO
) VALUES (
:tb_profissao_id,
:descricao,
:situacao,
:cod_cbo
) RETURNING *;"""
# Preenchimento de parâmetros
params = {
'tb_profissao_id': profissao_schema.tb_profissao_id,
'descricao': profissao_schema.descricao,
'situacao': profissao_schema.situacao,
'cod_cbo': profissao_schema.cod_cbo
}
# Execução do sql
return self.run_and_return(sql, params)
except Exception as e:
# Informa que houve uma falha no salvamento do registro
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=f"Erro ao salvar profissão: {e}"
)

View file

@ -0,0 +1,46 @@
from abstracts.repository import BaseRepository
from packages.v1.administrativo.schemas.g_tb_profissao_schema import GTbProfissaoIdSchema
from fastapi import HTTPException, status
class ShowRepository(BaseRepository):
"""
Repositório para a operação de exibição de um registro na tabela G_TB_PROFISSAO.
"""
def execute(self, profissao_schema: GTbProfissaoIdSchema):
"""
Busca uma profissão específica pelo ID.
Args:
profissao_schema (GTbProfissaoIdSchema): O esquema que contém o ID do registro.
Returns:
O registro encontrado ou None se não existir.
Raises:
HTTPException: Caso ocorra um erro na execução da query.
"""
try:
# Montagem do SQL
sql = "SELECT * FROM G_TB_PROFISSAO WHERE TB_PROFISSAO_ID = :tb_profissao_id"
# Preenchimento de parâmetros
params = {
'tb_profissao_id': profissao_schema.tb_profissao_id
}
# Execução do SQL
result = self.fetch_one(sql, params)
if not result:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="Profissão não encontrada"
)
return result
except Exception as e:
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail=f"Erro ao buscar profissão: {str(e)}"
)

View file

@ -0,0 +1,64 @@
from abstracts.repository import BaseRepository
from packages.v1.administrativo.schemas.g_tb_profissao_schema import GTbProfissaoUpdateSchema
from fastapi import HTTPException, status
class UpdateRepository(BaseRepository):
"""
Repositório para a operação de atualização na tabela G_TB_PROFISSAO.
"""
def execute(self, tb_profissao_id : float, profissao_schema: GTbProfissaoUpdateSchema):
"""
Executa a atualização de um registro na tabela.
Args:
tb_profissao_id (float): O ID da profissão a ser atualizada.
profissao_schema (GTbProfissaoUpdateSchema): O esquema com os dados a serem atualizados.
Returns:
O registro atualizado.
Raises:
HTTPException: Se o registro não for encontrado ou ocorrer um erro na atualização.
"""
try:
updates = []
params = {}
if profissao_schema.descricao is not None:
updates.append("DESCRICAO = :descricao")
params["descricao"] = profissao_schema.descricao
if profissao_schema.situacao is not None:
updates.append("SITUACAO = :situacao")
params["situacao"] = profissao_schema.situacao
if profissao_schema.cod_cbo is not None:
updates.append("COD_CBO = :cod_cbo")
params["cod_cbo"] = profissao_schema.cod_cbo
if not updates:
return False
params["tb_profissao_id"] = tb_profissao_id
sql = f"UPDATE G_TB_PROFISSAO SET {', '.join(updates)} WHERE tb_profissao_id = :tb_profissao_id RETURNING *;"
# Executa a query
result = self.run_and_return(sql, params)
if not result:
# Informa que não existe o registro a ser modificado
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail='Nenhuma profissão localizada para esta solicitação'
)
# Se houver um resultado, a atualização foi bem-sucedida
return result
except Exception as e:
# Informa que houve uma falha na atualização
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=f"Erro ao atualizar profissão: {e}"
)

View file

@ -0,0 +1,41 @@
from abstracts.repository import BaseRepository
from packages.v1.administrativo.schemas.g_tb_regimebens_schema import GTbRegimebensIdSchema
from fastapi import HTTPException, status
class DeleteRepository(BaseRepository):
"""
Repositório para a operação de exclusão de um registro na tabela
g_tb_regimebens.
"""
def execute(self, regimebens_schema: GTbRegimebensIdSchema):
"""
Executa a consulta SQL para remover um registro pelo ID.
Args:
regimebens_schema (GTbRegimebensIdSchema): O esquema com o ID a ser removido.
Returns:
O resultado da operação de exclusão.
"""
try:
# Montagem do sql
sql = """ DELETE FROM G_TB_REGIMEBENS WHERE TB_REGIMEBENS_ID = :tb_regimebens_id """
# Preenchimento de parâmetros
params = {
"tb_regimebens_id": regimebens_schema.tb_regimebens_id
}
# Execução do sql
response = self.run(sql, params)
# Retorna o resultado
return response
except Exception as e:
# Informa que houve uma falha na exclusão
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=f"Erro ao excluir regime de bens: {e}"
)

View file

@ -0,0 +1,30 @@
from abstracts.repository import BaseRepository
from packages.v1.administrativo.schemas.g_tb_regimebens_schema import GTbRegimebensDescricaoSchema
class GetByDescricaoRepository(BaseRepository):
"""
Repositório para a operação de busca de um registro na tabela
g_tb_regimebens por descrição.
"""
def execute(self, regimebens_schema: GTbRegimebensDescricaoSchema):
"""
Executa a consulta SQL para buscar um registro pela descrição.
Args:
regimebens_schema (GTbRegimebensDescricaoSchema):
O esquema com a descrição a ser buscada.
Returns:
Um dicionário contendo os dados do registro ou None se não for encontrado.
"""
# Montagem do SQL
sql = """ SELECT * FROM G_TB_REGIMEBENS WHERE DESCRICAO = :descricao """
# Preenchimento de parâmetros
params = {
'descricao': regimebens_schema.descricao
}
# Execução do SQL
return self.fetch_one(sql, params)

View file

@ -0,0 +1,23 @@
from abstracts.repository import BaseRepository
class IndexRepository(BaseRepository):
"""
Repositório para a operação de listagem de todos os registros
na tabela g_tb_regimebens.
"""
def execute(self):
"""
Executa a consulta SQL para buscar todos os registros.
Returns:
Uma lista de dicionários contendo os dados dos registros.
"""
# Montagem do SQL
sql = """ SELECT * FROM G_TB_REGIMEBENS """
# Execução do sql
response = self.fetch_all(sql)
# Retorna os dados localizados
return response

View file

@ -0,0 +1,53 @@
from fastapi import HTTPException, status
from abstracts.repository import BaseRepository
from packages.v1.administrativo.schemas.g_tb_regimebens_schema import GTbRegimebensSaveSchema
class SaveRepository(BaseRepository):
"""
Repositório para a operação de salvamento de um novo registro na tabela g_tb_regimebens.
"""
def execute(self, regimebens_schema: GTbRegimebensSaveSchema):
"""
Executa a operação de salvamento no banco de dados.
Args:
regimebens_schema (GTbRegimebensSaveSchema): O esquema com os dados a serem salvos.
Returns:
O registro recém-criado.
Raises:
HTTPException: Caso ocorra um erro na execução da query.
"""
try:
# Montagem do SQL
sql = """ INSERT INTO G_TB_REGIMEBENS(
TB_REGIMEBENS_ID,
DESCRICAO,
SITUACAO
) VALUES (
:tb_regimebens_id,
:descricao,
:situacao
) RETURNING *;"""
# Preenchimento de parâmetros
params = {
'tb_regimebens_id': regimebens_schema.tb_regimebens_id,
'descricao': regimebens_schema.descricao,
'situacao': regimebens_schema.situacao
}
# Execução do sql
return self.run_and_return(sql, params)
except Exception as e:
# Informa que houve uma falha no salvamento do registro
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=f"Erro ao salvar registro: {e}"
)

View file

@ -0,0 +1,109 @@
from pydantic import BaseModel, field_validator, model_validator
from fastapi import HTTPException, status
from typing import Optional
# Funções para sanitização de entradas (evitar XSS, SQLi etc.)
# Supondo que a classe Text esteja disponível e com o método sanitize_input
try:
from actions.validations.text import Text
except ImportError:
class Text:
@staticmethod
def sanitize_input(value: str) -> str:
return value.strip()
# ----------------------------------------------------
# Schema base
# ----------------------------------------------------
class GTbRegimebensSchema(BaseModel):
tb_regimebens_id: Optional[int] = None
descricao: Optional[str] = None
situacao: Optional[str] = None
class Config:
from_attributes = True
# ----------------------------------------------------
# Schema para localizar um tipo especifico pelo ID (GET)
# ----------------------------------------------------
class GTbRegimebensIdSchema(BaseModel):
tb_regimebens_id: int
# ----------------------------------------------------
# Schema para localizar um tipo especifico pela descrição (GET)
# ----------------------------------------------------
class GTbRegimebensDescricaoSchema(BaseModel):
descricao: str
# ----------------------------------------------------
# Schema para criação de novo tipo (POST)
# ----------------------------------------------------
class GTbRegimebensSaveSchema(BaseModel):
tb_regimebens_id: Optional[int] = None
descricao: str
situacao: str
# Sanitiza os inputs enviados
@field_validator('descricao', 'situacao')
def sanitize_fields(cls, v):
if v:
return Text.sanitize_input(v)
return v
# Verifica se os campos obrigatórios foram enviados
@model_validator(mode='after')
def validate_all_fields(self):
errors = []
if not self.descricao or len(self.descricao.strip()) == 0:
errors.append({'input': 'descricao', 'message': 'A descrição é obrigatória.'})
if not self.situacao or len(self.situacao.strip()) == 0:
errors.append({'input': 'situacao', 'message': 'A situação é obrigatória.'})
if errors:
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=errors
)
return self
# ----------------------------------------------------
# Schema para atualizar tipo (PUT)
# ----------------------------------------------------
class GTbRegimebensUpdateSchema(BaseModel):
descricao: Optional[str] = None
situacao: Optional[str] = None
# Sanitiza os inputs enviados
@field_validator('descricao', 'situacao')
def sanitize_fields(cls, v):
if v:
return Text.sanitize_input(v)
return v
# Verifica se os campos obrigatórios foram enviados
@model_validator(mode='after')
def validate_all_fields(self):
errors = []
if not self.descricao or len(self.descricao.strip()) == 0:
errors.append({'input': 'descricao', 'message': 'A descrição é obrigatória.'})
if not self.situacao or len(self.situacao.strip()) == 0:
errors.append({'input': 'situacao', 'message': 'A situação é obrigatória.'})
if errors:
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=errors
)
return self

View file

@ -0,0 +1,46 @@
from abstracts.repository import BaseRepository
from packages.v1.administrativo.schemas.g_tb_regimebens_schema import GTbRegimebensIdSchema
from fastapi import HTTPException, status
class ShowRepository(BaseRepository):
"""
Repositório para a operação de exibição de um registro na tabela g_tb_regimebens.
"""
def execute(self, regimebens_schema: GTbRegimebensIdSchema):
"""
Busca um tipo de regime de bens específico pelo ID.
Args:
regimebens_schema (GTbRegimebensIdSchema): O esquema que contém o ID do registro.
Returns:
O registro encontrado ou None se não existir.
Raises:
HTTPException: Caso ocorra um erro na execução da query.
"""
try:
# Montagem do SQL
sql = "SELECT * FROM G_TB_REGIMEBENS WHERE TB_REGIMEBENS_ID = :tb_regimebens_id"
# Preenchimento de parâmetros
params = {
'tb_regimebens_id': regimebens_schema.tb_regimebens_id
}
# Execução do SQL
result = self.fetch_one(sql, params)
if not result:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="Registro não encontrado"
)
return result
except Exception as e:
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail=f"Erro ao buscar registro: {str(e)}"
)

View file

@ -0,0 +1,60 @@
from abstracts.repository import BaseRepository
from packages.v1.administrativo.schemas.g_tb_regimebens_schema import GTbRegimebensUpdateSchema
from fastapi import HTTPException, status
class UpdateRepository(BaseRepository):
"""
Repositório para a operação de atualização na tabela G_TB_REGIMEBENS.
"""
def execute(self, tb_regimebens_id: int, regimebens_schema: GTbRegimebensUpdateSchema):
"""
Executa a atualização de um registro na tabela.
Args:
regimebens_schema (GTbRegimebensUpdateSchema): O esquema com os dados a serem atualizados.
Returns:
O registro atualizado.
Raises:
HTTPException: Se o registro não for encontrado ou ocorrer um erro na atualização.
"""
try:
updates = []
params = {}
if regimebens_schema.descricao is not None:
updates.append("DESCRICAO = :descricao")
params["descricao"] = regimebens_schema.descricao
if regimebens_schema.situacao is not None:
updates.append("SITUACAO = :situacao")
params["situacao"] = regimebens_schema.situacao
if not updates:
return False
params["tb_regimebens_id"] = tb_regimebens_id
sql = f"UPDATE G_TB_REGIMEBENS SET {', '.join(updates)} WHERE tb_regimebens_id = :tb_regimebens_id RETURNING *;"
# Executa a query
result = self.run_and_return(sql, params)
if not result.tb_regimebens_id:
# Informa que não existe o registro a ser modificado
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail='Nenhum regime de bens localizado para esta solicitação'
)
# Se houver um resultado, a atualização foi bem-sucedida
if result:
return result
except Exception as e:
# Informa que houve uma falha na atualização
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=f"Erro ao atualizar o regime de bens: {e}"
)

View file

@ -0,0 +1,33 @@
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import \
GTbRegimecomunhaoIdSchema
from abstracts.repository import BaseRepository
from fastapi import HTTPException, status
class DeleteRepository(BaseRepository):
def execute(self, regimecomunhao_schema: GTbRegimecomunhaoIdSchema):
try:
# Montagem do sql
sql = """ DELETE FROM G_TB_REGIMECOMUNHAO ccs WHERE ccs.tb_regimecomunhao_id = :tb_regimecomunhao_id """
# Preenchimento de parâmetros
params = {
"tb_regimecomunhao_id": regimecomunhao_schema.tb_regimecomunhao_id
}
# Execução do sql
response = self.run(sql, params)
# Retorna o resultado
return response
except Exception as e:
# Informa que houve uma falha na atualização do usuário
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=f"Erro ao excluir regime de comunhão: {e}"
)

View file

@ -0,0 +1,17 @@
from abstracts.repository import BaseRepository
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import GTbRegimecomunhaoDescricaoSchema
class GetByDescricaoRepository(BaseRepository):
def execute(self, regimecomunhao_schema: GTbRegimecomunhaoDescricaoSchema):
# Montagem do sql
sql = """ SELECT * FROM G_TB_REGIMECOMUNHAO WHERE DESCRICAO = :descricao """
# Preenchimento de parâmetros
params = {
'descricao': regimecomunhao_schema.descricao
}
# Execução do sql
return self.fetch_one(sql, params)

View file

@ -0,0 +1,22 @@
from abstracts.repository import BaseRepository
class IndexRepository(BaseRepository):
def execute(self):
"""
Executa a operação de listagem de todos os registros na tabela
g_tb_regimecomunhao.
"""
# Montagem do sql
sql = """ SELECT TB_REGIMECOMUNHAO_ID,
DESCRICAO,
SITUACAO,
TB_REGIMEBENS_ID
FROM G_TB_REGIMECOMUNHAO """
# Execução do sql
response = self.fetch_all(sql)
# Retorna os dados localizados
return response

View file

@ -0,0 +1,45 @@
from fastapi import HTTPException, status
from abstracts.repository import BaseRepository
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import GTbRegimecomunhaoSaveSchema
class SaveRepository(BaseRepository):
def execute(self, regimecomunhao_schema: GTbRegimecomunhaoSaveSchema):
try:
# Montagem do SQL
sql = """ INSERT INTO G_TB_REGIMECOMUNHAO (
TB_REGIMECOMUNHAO_ID,
DESCRICAO,
TEXTO,
SITUACAO,
TB_REGIMEBENS_ID
) VALUES (
:tb_regimecomunhao_id,
:descricao,
:texto,
:situacao,
:tb_regimebens_id
) RETURNING *;"""
# Preenchimento de parâmetros
params = {
'tb_regimecomunhao_id': regimecomunhao_schema.tb_regimecomunhao_id,
'descricao': regimecomunhao_schema.descricao,
'texto': regimecomunhao_schema.texto.encode("utf-8") if regimecomunhao_schema.texto else None, # Convertendo string para bytes
'situacao': regimecomunhao_schema.situacao,
'tb_regimebens_id': regimecomunhao_schema.tb_regimebens_id
}
# Execução do sql
return self.run_and_return(sql, params)
except Exception as e:
# Informa que houve uma falha na atualização do usuário
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=f"Erro ao salvar regime de comunhão: {e}"
)

View file

@ -0,0 +1,17 @@
from abstracts.repository import BaseRepository
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import GTbRegimecomunhaoIdSchema
class ShowRepository(BaseRepository):
def execute(self, regimecomunhao_schema: GTbRegimecomunhaoIdSchema):
# Montagem do sql
sql = """ SELECT * FROM G_TB_REGIMECOMUNHAO WHERE TB_REGIMECOMUNHAO_ID = :tb_regimecomunhao_id """
# Preenchimento de parâmetros
params = {
'tb_regimecomunhao_id' : regimecomunhao_schema.tb_regimecomunhao_id
}
# Execução do sql
return self.fetch_one(sql, params)

View file

@ -0,0 +1,62 @@
from abstracts.repository import BaseRepository
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import GTbRegimecomunhaoUpdateSchema
from fastapi import HTTPException, status
class UpdateRepository(BaseRepository):
def execute(self, tb_regimecomunhao_id : int, regimecomunhao_schema: GTbRegimecomunhaoUpdateSchema):
try:
updates = []
params = {}
if regimecomunhao_schema.descricao is not None:
updates.append("DESCRICAO = :descricao")
params["descricao"] = regimecomunhao_schema.descricao
if regimecomunhao_schema.texto is not None:
updates.append("TEXTO = :texto")
params["texto"] = (
regimecomunhao_schema.texto.encode("utf-8")
if isinstance(regimecomunhao_schema.texto, str)
else regimecomunhao_schema.texto
)
if regimecomunhao_schema.situacao is not None:
updates.append("SITUACAO = :situacao")
params["situacao"] = regimecomunhao_schema.situacao
if regimecomunhao_schema.tb_regimebens_id is not None:
updates.append("TB_REGIMEBENS_ID = :tb_regimebens_id")
params["tb_regimebens_id"] = regimecomunhao_schema.tb_regimebens_id
if not updates:
return False
params["tb_regimecomunhao_id"] = tb_regimecomunhao_id
sql = f"UPDATE G_TB_REGIMECOMUNHAO SET {', '.join(updates)} WHERE tb_regimecomunhao_id = :tb_regimecomunhao_id RETURNING *;"
# Executa a query
result = self.run_and_return(sql, params)
if not result.tb_regimecomunhao_id:
# Informa que não existe o registro a ser modificado
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail='Nenhum regime de comunhão localizado para esta solicitação'
)
# Verifica o resultado da execução
if result:
# Se houver um resultado, a atualização foi bem-sucedida
return result
except Exception as e:
# Informa que houve uma falha na atualização
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=f"Erro ao atualizar regime de comunhão: {e}"
)

View file

@ -0,0 +1,44 @@
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import GTbTxmodelogrupoIdSchema
from abstracts.repository import BaseRepository
from fastapi import HTTPException, status
class DeleteRepository(BaseRepository):
def execute(self, txmodelogrupo_schema: GTbTxmodelogrupoIdSchema):
"""
Executa a exclusão de um registro na tabela G_TB_TXMODELOGRUPO.
Args:
txmodelogrupo_schema (GTbTxModeloGrupoIdSchema): O schema com o ID a ser excluído.
Returns:
O resultado da operação de exclusão.
Raises:
HTTPException: Se ocorrer um erro durante a exclusão.
"""
try:
# Montagem do SQL para exclusão
sql = """
DELETE FROM G_TB_TXMODELOGRUPO
WHERE TB_TXMODELOGRUPO_ID = :tb_txmodelogrupo_id
"""
# Preenchimento de parâmetros
params = {
"tb_txmodelogrupo_id": txmodelogrupo_schema.tb_txmodelogrupo_id
}
# Execução do SQL
response = self.run(sql, params)
# Retorna o resultado
return response
except Exception as e:
# Informa que houve uma falha na exclusão
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=f"Erro ao excluir modelo de grupo: {e}"
)

View file

@ -0,0 +1,17 @@
from abstracts.repository import BaseRepository
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import GTbTxmodelogrupoDescricaoSchema
class GetByDescricaoRepository(BaseRepository):
def execute(self, txmodelogrupo_schema: GTbTxmodelogrupoDescricaoSchema):
# Montagem do sql
sql = """ SELECT * FROM G_TB_TXMODELOGRUPO WHERE DESCRICAO = :descricao """
# Preenchimento de parâmetros
params = {
'descricao': txmodelogrupo_schema.descricao
}
# Execução do sql
return self.fetch_one(sql, params)

View file

@ -0,0 +1,37 @@
from abstracts.repository import BaseRepository
from fastapi import HTTPException, status
class IndexRepository(BaseRepository):
"""
Repositório responsável por buscar todos os registros da tabela G_TB_TXMODELOGRUPO.
"""
def execute(self):
"""
Executa a operação de listagem de todos os registros na tabela G_TB_TXMODELOGRUPO.
Returns:
list: Uma lista de dicionários representando os registros encontrados.
"""
try:
# Montagem do SQL para buscar todos os registros da tabela G_TB_TXMODELOGRUPO
sql = """
SELECT
TB_TXMODELOGRUPO_ID,
DESCRICAO,
SITUACAO,
SISTEMA_ID
FROM
G_TB_TXMODELOGRUPO
"""
# Execução do SQL e retorno de todos os resultados
response = self.fetch_all(sql)
return response
except Exception as e:
# Em caso de erro, lança uma exceção HTTP detalhando o problema
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail=f"Erro ao buscar todos os registros de G_TB_TXMODELOGRUPO: {e}"
)

View file

@ -0,0 +1,41 @@
from fastapi import HTTPException, status
from abstracts.repository import BaseRepository
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import GTbTxmodelogrupoSaveSchema
class SaveRepository(BaseRepository):
def execute(self, txmodelogrupo_schema: GTbTxmodelogrupoSaveSchema):
try:
# Montagem do SQL
sql = """
INSERT INTO G_TB_TXMODELOGRUPO (
TB_TXMODELOGRUPO_ID,
DESCRICAO,
SITUACAO,
SISTEMA_ID
) VALUES (
:tb_txmodelogrupo_id,
:descricao,
:situacao,
:sistema_id
) RETURNING *;
"""
# Preenchimento de parâmetros
params = {
'tb_txmodelogrupo_id': txmodelogrupo_schema.tb_txmodelogrupo_id,
'descricao': txmodelogrupo_schema.descricao,
'situacao': txmodelogrupo_schema.situacao,
'sistema_id': txmodelogrupo_schema.sistema_id
}
# Execução do SQL
return self.run_and_return(sql, params)
except Exception as e:
# Informa que houve uma falha ao salvar o registro
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=f"Erro ao salvar modelo de grupo: {e}"
)

View file

@ -0,0 +1,46 @@
from fastapi import HTTPException, status
from abstracts.repository import BaseRepository
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import GTbTxmodelogrupoIdSchema
class ShowRepository(BaseRepository):
def execute(self, txmodelogrupo_schema: GTbTxmodelogrupoIdSchema):
"""
Executa a operação de busca de um registro na tabela G_TB_TXMODELOGRUPO por ID.
Args:
txmodelogrupo_schema (GTbTxmodelogrupoIdSchema): O esquema com o ID a ser buscado.
Returns:
Um dicionário representando o registro encontrado ou None.
Raises:
HTTPException: Se ocorrer um erro durante a execução da consulta.
"""
try:
# Montagem do SQL para buscar o registro pelo ID
sql = """
SELECT
TB_TXMODELOGRUPO_ID,
DESCRICAO,
SITUACAO,
SISTEMA_ID
FROM G_TB_TXMODELOGRUPO
WHERE TB_TXMODELOGRUPO_ID = :tb_txmodelogrupo_id
"""
# Preenchimento de parâmetros
params = {
"tb_txmodelogrupo_id": txmodelogrupo_schema.tb_txmodelogrupo_id
}
# Execução do SQL e retorno do resultado
return self.fetch_one(sql, params)
except Exception as e:
# Levanta uma exceção HTTP em caso de erro
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=f"Erro ao buscar registro em G_TB_TXMODELOGRUPO: {e}"
)

View file

@ -0,0 +1,50 @@
from abstracts.repository import BaseRepository
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import GTbTxmodelogrupoUpdateSchema
from fastapi import HTTPException, status
class UpdateRepository(BaseRepository):
def execute(self, tb_txmodelogrupo_id: int, txmodelogrupo_schema: GTbTxmodelogrupoUpdateSchema):
try:
updates = []
params = {}
if txmodelogrupo_schema.descricao is not None:
updates.append("DESCRICAO = :descricao")
params["descricao"] = txmodelogrupo_schema.descricao
if txmodelogrupo_schema.situacao is not None:
updates.append("SITUACAO = :situacao")
params["situacao"] = txmodelogrupo_schema.situacao
if txmodelogrupo_schema.sistema_id is not None:
updates.append("SISTEMA_ID = :sistema_id")
params["sistema_id"] = txmodelogrupo_schema.sistema_id
if not updates:
return False
params["tb_txmodelogrupo_id"] = tb_txmodelogrupo_id
sql = f"UPDATE G_TB_TXMODELOGRUPO SET {', '.join(updates)} WHERE tb_txmodelogrupo_id = :tb_txmodelogrupo_id RETURNING *;"
# Executa a query
result = self.run_and_return(sql, params)
if not result or not hasattr(result, 'tb_txmodelogrupo_id') or result.tb_txmodelogrupo_id is None:
# Informa que não existe o registro a ser modificado
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail='Nenhum registro de modelo de grupo localizado para esta solicitação'
)
# Verifica o resultado da execução
if result:
# Se houver um resultado, a atualização foi bem-sucedida
return result
except Exception as e:
# Informa que houve uma falha na atualização
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=f"Erro ao atualizar modelo de grupo: {e}"
)

View file

@ -0,0 +1,101 @@
from pydantic import BaseModel, field_validator, model_validator
from fastapi import HTTPException, status
from typing import Optional
# Funções para sanitização de entradas (evitar XSS, SQLi etc.)
from actions.validations.text import Text
# ----------------------------------------------------
# Schema base para G_TB_PROFISSAO
# ----------------------------------------------------
class GTbProfissaoSchema(BaseModel):
tb_profissao_id: Optional[float] = None # Numeric(10,2) pode ser representado por float em Python
descricao: Optional[str] = None
situacao: Optional[str] = None
cod_cbo: Optional[str] = None
class Config:
from_attributes = True
# ----------------------------------------------------
# Schema para localizar uma profissão específica pelo ID (GET)
# ----------------------------------------------------
class GTbProfissaoIdSchema(BaseModel):
tb_profissao_id: float
# ----------------------------------------------------
# Schema para localizar uma profissão específica pela descrição (GET)
# ----------------------------------------------------
class GTbProfissaoDescricaoSchema(BaseModel):
descricao: str
# ----------------------------------------------------
# Schema para criação de nova profissão (POST)
# ----------------------------------------------------
class GTbProfissaoSaveSchema(BaseModel):
tb_profissao_id: Optional[float] = None
descricao: str
situacao: str
cod_cbo: Optional[str] = None
@field_validator('descricao', 'situacao', 'cod_cbo')
def sanitize_fields(cls, v):
if v is not None:
return Text.sanitize_input(v)
return v
@model_validator(mode='after')
def validate_all_fields(self):
errors = []
if not self.descricao or len(self.descricao.strip()) == 0:
errors.append({'input': 'descricao', 'message': 'A descrição é obrigatória.'})
if not self.situacao or len(self.situacao.strip()) == 0:
errors.append({'input': 'situacao', 'message': 'A situação é obrigatória.'})
elif len(self.situacao) != 1: # Validação adicional para o campo SITUACAO ser de 1 caractere
errors.append({'input': 'situacao', 'message': 'A situação deve conter apenas um caractere.'})
if errors:
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=errors
)
return self
# ----------------------------------------------------
# Schema para atualizar profissão (PUT)
# ----------------------------------------------------
class GTbProfissaoUpdateSchema(BaseModel):
descricao: Optional[str] = None
situacao: Optional[str] = None
cod_cbo: Optional[str] = None
@field_validator('descricao', 'situacao', 'cod_cbo')
def sanitize_fields(cls, v):
if v is not None:
return Text.sanitize_input(v)
return v
@model_validator(mode='after')
def validate_all_fields(self):
errors = []
# Ao atualizar, os campos não são estritamente obrigatórios,
# mas se forem preenchidos, devem ser válidos.
if self.descricao is not None and len(self.descricao.strip()) == 0:
errors.append({'input': 'descricao', 'message': 'A descrição não pode ser vazia se informada.'})
if self.situacao is not None and len(self.situacao.strip()) == 0:
errors.append({'input': 'situacao', 'message': 'A situação não pode ser vazia se informada.'})
elif self.situacao is not None and len(self.situacao) != 1:
errors.append({'input': 'situacao', 'message': 'A situação deve conter apenas um caractere se informada.'})
if errors:
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=errors
)
return self

View file

@ -0,0 +1,102 @@
from pydantic import BaseModel, field_validator, model_validator
from fastapi import HTTPException, status
from typing import Optional
# Funções para sanitização de entradas (evitar XSS, SQLi etc.)
from actions.validations.text import Text
# ----------------------------------------------------
# Schema base
# ----------------------------------------------------
class GTbRegimebensSchema(BaseModel):
tb_regimebens_id: Optional[int] = None
descricao: Optional[str] = None
situacao: Optional[str] = None
class Config:
from_attributes = True
# ----------------------------------------------------
# Schema para localizar um tipo especifico pelo ID (GET)
# ----------------------------------------------------
class GTbRegimebensIdSchema(BaseModel):
tb_regimebens_id: int
# ----------------------------------------------------
# Schema para localizar um tipo especifico pela descrição (GET)
# ----------------------------------------------------
class GTbRegimebensDescricaoSchema(BaseModel):
descricao: str
# ----------------------------------------------------
# Schema para criação de novo tipo (POST)
# ----------------------------------------------------
class GTbRegimebensSaveSchema(BaseModel):
tb_regimebens_id: Optional[int] = None
descricao: str
situacao: str
# Sanitiza os inputs enviados
@field_validator('descricao', 'situacao')
def sanitize_fields(cls, v):
if v:
return Text.sanitize_input(v)
return v
# Verifica se os campos obrigatórios foram enviados
@model_validator(mode='after')
def validate_all_fields(self):
errors = []
if not self.descricao or len(self.descricao.strip()) == 0:
errors.append({'input': 'descricao', 'message': 'A descrição é obrigatória.'})
if not self.situacao or len(self.situacao.strip()) == 0:
errors.append({'input': 'situacao', 'message': 'A situação é obrigatória.'})
if errors:
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=errors
)
return self
# ----------------------------------------------------
# Schema para atualizar tipo (PUT)
# ----------------------------------------------------
class GTbRegimebensUpdateSchema(BaseModel):
descricao: Optional[str] = None
situacao: Optional[str] = None
# Sanitiza os inputs enviados
@field_validator('descricao', 'situacao')
def sanitize_fields(cls, v):
if v:
return Text.sanitize_input(v)
return v
# Verifica se os campos obrigatórios foram enviados
@model_validator(mode='after')
def validate_all_fields(self):
errors = []
if not self.descricao or len(self.descricao.strip()) == 0:
errors.append({'input': 'descricao', 'message': 'A descrição é obrigatória.'})
if not self.situacao or len(self.situacao.strip()) == 0:
errors.append({'input': 'situacao', 'message': 'A situação é obrigatória.'})
if errors:
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=errors
)
return self

View file

@ -0,0 +1,98 @@
from pydantic import BaseModel, field_validator, model_validator
from fastapi import HTTPException, status
from typing import Optional
from decimal import Decimal
# Funções para sanitização de entradas (evitar XSS, SQLi etc.)
from actions.validations.text import Text
# ----------------------------------------------------
# Schema base
# ----------------------------------------------------
class GTbRegimecomunhaoSchema(BaseModel):
tb_regimecomunhao_id: int
descricao: Optional[str] = None
texto: Optional[str] = None
situacao: Optional[str] = None
tb_regimebens_id: Optional[int] = None
class Config:
from_attributes = True
# ----------------------------------------------------
# Schema para criação de novo registro (POST)
# ----------------------------------------------------
class GTbRegimecomunhaoSaveSchema(BaseModel):
tb_regimecomunhao_id: Optional[int] = None
descricao: str
texto: Optional[str] = None
situacao: Optional[str] = None
tb_regimebens_id: Optional[int] = None
@field_validator('descricao')
def validate_descricao(cls, v):
if not v or len(v.strip()) == 0:
raise ValueError("A descrição é obrigatória.")
return Text.sanitize_input(v)
@model_validator(mode='after')
def validate_all_fields(self):
errors = []
if not self.descricao or len(self.descricao.strip()) == 0:
errors.append({'input': 'descricao', 'message': 'A descrição é obrigatória.'})
if errors:
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=errors
)
return self
# ----------------------------------------------------
# Schema para atualização de registro (PUT)
# ----------------------------------------------------
class GTbRegimecomunhaoUpdateSchema(BaseModel):
descricao: Optional[str] = None
texto: Optional[str] = None
situacao: Optional[str] = None
tb_regimebens_id: Optional[int] = None
@field_validator('descricao')
def validate_descricao_field(cls, v):
return Text.sanitize_input(v)
# ----------------------------------------------------
# Schema para localizar um registro específico pelo ID (GET, DELETE)
# ----------------------------------------------------
class GTbRegimecomunhaoIdSchema(BaseModel):
# Campos utilizados
tb_regimecomunhao_id: int
# ----------------------------------------------------
# Schema para localizar um registro pela descrição (GET)
# ----------------------------------------------------
class GTbRegimecomunhaoDescricaoSchema(BaseModel):
# Campos utilizados
descricao: str
@field_validator('descricao')
def validar_e_sanitizar_descricao(cls, v):
if not v:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail='Informe a descrição'
)
return Text.sanitize_input(v)
class Config:
from_attributes = True

View file

@ -0,0 +1,101 @@
from pydantic import BaseModel, field_validator, model_validator
from fastapi import HTTPException, status
from typing import Optional
# Funções para sanitização de entradas (evitar XSS, SQLi etc.)
from actions.validations.text import Text
# ----------------------------------------------------
# Schema base para G_TB_TXMODELOGRUPO
# ----------------------------------------------------
class GTbTxmodelogrupoSchema(BaseModel):
tb_txmodelogrupo_id: int # NUMERIC(10,2)
descricao: Optional[str] = None
situacao: Optional[str] = None
sistema_id: Optional[int] = None # NUMERIC(10,2)
class Config:
from_attributes = True
# ----------------------------------------------------
# Schema para criação de novo registro (POST) para G_TB_TXMODELOGRUPO
# ----------------------------------------------------
class GTbTxmodelogrupoSaveSchema(BaseModel):
tb_txmodelogrupo_id: Optional[int] = None # NUMERIC(10,2)
descricao: str
situacao: Optional[str] = None
sistema_id: Optional[int] = None # NUMERIC(10,2)
@field_validator('descricao')
def validate_descricao(cls, v):
if not v or len(v.strip()) == 0:
raise ValueError("A descrição é obrigatória.")
return Text.sanitize_input(v)
@model_validator(mode='after')
def validate_all_fields(self):
errors = []
if not self.descricao or len(self.descricao.strip()) == 0:
errors.append({'input': 'descricao', 'message': 'A descrição é obrigatória.'})
# Validação específica para TB_TXMODELOGRUPO_ID se não for fornecido e for obrigatório para criação
# Se TB_TXMODELOGRUPO_ID é gerado pelo banco, esta validação pode ser removida ou ajustada
if self.tb_txmodelogrupo_id is None:
# Assumindo que TB_TXMODELOGRUPO_ID é gerado pelo DB, caso contrário, descomente e ajuste:
# errors.append({'input': 'tb_txmodelogrupo_id', 'message': 'O ID do modelo de grupo é obrigatório.'})
pass
if errors:
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=errors
)
return self
# ----------------------------------------------------
# Schema para atualização de registro (PUT) para G_TB_TXMODELOGRUPO
# ----------------------------------------------------
class GTbTxmodelogrupoUpdateSchema(BaseModel):
descricao: Optional[str] = None
situacao: Optional[str] = None
sistema_id: Optional[int] = None # NUMERIC(10,2)
@field_validator('descricao')
def validate_descricao_field(cls, v):
# Permite que a descrição seja None para atualizações parciais
if v is not None:
return Text.sanitize_input(v)
return v
# ----------------------------------------------------
# Schema para localizar um registro específico pelo ID (GET, DELETE) para G_TB_TXMODELOGRUPO
# ----------------------------------------------------
class GTbTxmodelogrupoIdSchema(BaseModel):
# Campos utilizados
tb_txmodelogrupo_id: int # NUMERIC(10,2)
@field_validator('tb_txmodelogrupo_id')
def validate_id(cls, v):
if v is None:
raise ValueError("O ID do modelo de grupo é obrigatório.")
# Pode adicionar validação de formato ou valor se necessário
return v
# ----------------------------------------------------
# Schema para localizar um registro pela descrição (GET) para G_TB_TXMODELOGRUPO
# ----------------------------------------------------
class GTbTxmodelogrupoDescricaoSchema(BaseModel):
# Campos utilizados
descricao: str
@field_validator('descricao')
def validar_e_sanitizar_descricao(cls, v):
if not v:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail='Informe a descrição'
)
return Text.sanitize_input(v)
class Config:
from_attributes = True

View file

@ -110,7 +110,7 @@ class GUsuarioIdSchema(BaseModel):
# Schema para criação de novo usuário (POST)
# ----------------------------------------------------
class GUsuarioSaveSchema(BaseModel):
usuario_id: Optional[int] = None
trocarsenha: Optional[str] = None
login: str
situacao: str

View file

@ -3,14 +3,7 @@ from fastapi import HTTPException, status
from typing import Optional
# Funções para sanitização de entradas (evitar XSS, SQLi etc.)
# Supondo que a classe Text esteja disponível e com o método sanitize_input
try:
from actions.validations.text import Text
except ImportError:
class Text:
@staticmethod
def sanitize_input(value: str) -> str:
return value.strip()
from actions.validations.text import Text
# ----------------------------------------------------

View file

@ -3,15 +3,7 @@ from fastapi import HTTPException, status
from typing import Optional
# Funções para sanitização de entradas (evitar XSS, SQLi etc.)
# Supondo que a classe Text esteja disponível e com o método sanitize_input
try:
from actions.validations.text import Text
except ImportError:
class Text:
@staticmethod
def sanitize_input(value: str) -> str:
return value.strip()
from actions.validations.text import Text
# ----------------------------------------------------
# Schema base

View file

@ -0,0 +1,27 @@
from packages.v1.administrativo.schemas.g_tb_profissao_schema import GTbProfissaoIdSchema
from packages.v1.administrativo.actions.g_tb_profissao.g_tb_profissao_delete_action import GTbProfissaoDeleteAction
class DeleteService:
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de exclusão de um registro na tabela G_TB_PROFISSAO.
"""
def execute(self, profissao_schema: GTbProfissaoIdSchema):
"""
Executa a operação de exclusão do registro no banco de dados.
Args:
profissao_schema (GTbProfissaoIdSchema): O esquema com o ID do registro a ser excluído.
Returns:
O resultado da operação de exclusão.
"""
# Instanciamento da ação
delete_action = GTbProfissaoDeleteAction()
# Executa a ação em questão
data = delete_action.execute(profissao_schema)
# Retorno da informação
return data

View file

@ -0,0 +1,38 @@
from fastapi import HTTPException, status
from packages.v1.administrativo.schemas.g_tb_profissao_schema import GTbProfissaoDescricaoSchema
from packages.v1.administrativo.actions.g_tb_profissao.g_tb_profissao_get_by_descricao_action import GTbProfissaoGetByDescricaoAction
class GetByDescricaoService:
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de busca de um registro na tabela g_tb_profissao pela sua descrição.
"""
def execute(self, profissao_schema: GTbProfissaoDescricaoSchema, messageValidate: bool):
"""
Executa a operação de busca no banco de dados.
Args:
profissao_schema (GTbProfissaoDescricaoSchema): O esquema com a descrição a ser buscada.
messageValidate (bool): Se True, lança uma exceção HTTP caso o registro não seja encontrado.
Returns:
O registro encontrado ou None.
"""
# Instanciamento da ação
show_action = GTbProfissaoGetByDescricaoAction()
# Executa a ação em questão
data = show_action.execute(profissao_schema)
if messageValidate:
if not data:
# Retorna uma exceção
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail='Não foi possível localizar o registro de profissão'
)
# Retorno da informação
return data

View file

@ -0,0 +1,32 @@
from fastapi import HTTPException, status
from packages.v1.administrativo.actions.g_tb_profissao.g_tb_profissao_index_action import GTbProfissaoIndexAction
class IndexService:
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de listagem de registros na tabela G_TB_PROFISSAO.
"""
def execute(self):
"""
Executa a operação de busca de todos os registros no banco de dados.
Returns:
A lista de registros encontrados.
"""
# Instanciamento da ação
index_action = GTbProfissaoIndexAction()
# Executa a busca de todas as ações
data = index_action.execute()
# Verifica se foram localizados registros
if not data:
# Retorna uma exceção
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail='Não foi possível localizar os registros de profissão'
)
# Retorna as informações localizadas
return data

View file

@ -0,0 +1,70 @@
from actions.dynamic_import.dynamic_import import DynamicImport
from packages.v1.sequencia.schemas.g_sequencia import GSequenciaSchema
from packages.v1.sequencia.services.g_sequencia.generate_service import GenerateService
from packages.v1.administrativo.schemas.g_tb_profissao_schema import GTbProfissaoSaveSchema, GTbProfissaoDescricaoSchema
from packages.v1.administrativo.actions.g_tb_profissao.g_tb_profissao_save_action import GTbProfissaoSaveAction
from fastapi import HTTPException, status
class GTbProfissaoSaveService:
def __init__(self):
# Ação responsável por carregar as services de acordo com o estado
self.dynamic_import = DynamicImport()
# Define o pacote que deve ser carregado
self.dynamic_import.set_package("administrativo")
# Define a tabela que o pacote pertence
self.dynamic_import.set_table("g_tb_profissao")
pass
# Cadastra a nova profissão
def execute(self, profissao_schema: GTbProfissaoSaveSchema):
# Armazena possíveis erros
errors = []
# Verifica se a descrição já está sendo utilizada
# Importação de service
descricao_service = self.dynamic_import.service("g_tb_profissao_get_descricao_service", "GetByDescricaoService")
# Instanciamento da service
self.descricao_service = descricao_service()
# Verifica se a descrição já está sendo utilizada
self.response = self.descricao_service.execute(GTbProfissaoDescricaoSchema(descricao=profissao_schema.descricao), False)
# Se houver retorno significa que a descrição já está sendo utilizada
if self.response:
errors.append({'input': 'descricao', 'message': 'a descrição informada já está sendo utilizada.'})
# Se houver erros, lança a exceção
if errors:
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail=errors
)
# Verifica se precisa gerar o ID de sequência
if not profissao_schema.tb_profissao_id:
# Crio um objeto de sequencia
sequencia_schema = GSequenciaSchema()
# Define os dados para atualizar a sequencia
sequencia_schema.tabela = 'G_TB_PROFISSAO'
# Busco a sequência atualizada
generate = GenerateService()
# Busco a sequência atualizada
sequencia = generate.execute(sequencia_schema)
# Atualiza os dados da chave primária
profissao_schema.tb_profissao_id = sequencia.sequencia
# Instanciamento de ações
save_action = GTbProfissaoSaveAction()
# Retorna o resultado da operação
return save_action.execute(profissao_schema)

View file

@ -0,0 +1,35 @@
from fastapi import HTTPException, status
from packages.v1.administrativo.schemas.g_tb_profissao_schema import GTbProfissaoIdSchema
from packages.v1.administrativo.actions.g_tb_profissao.g_tb_profissao_show_action import GTbProfissaoShowAction
class ShowService:
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de busca de um registro na tabela G_TB_PROFISSAO.
"""
def execute(self, profissao_schema: GTbProfissaoIdSchema):
"""
Executa a operação de busca no banco de dados.
Args:
profissao_schema (GTbProfissaoIdSchema): O esquema com o ID a ser buscado.
Returns:
O resultado da busca.
"""
# Instanciamento da ação
show_action = GTbProfissaoShowAction()
# Executa a ação em questão
data = show_action.execute(profissao_schema)
if not data:
# Retorna uma exceção
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail='Não foi possível localizar o registro de profissão'
)
# Retorno da informação
return data

View file

@ -0,0 +1,24 @@
from packages.v1.administrativo.schemas.g_tb_profissao_schema import GTbProfissaoUpdateSchema
from packages.v1.administrativo.actions.g_tb_profissao.g_tb_profissao_update_action import GTbProfissaoUpdateAction
class GTbProfissaoUpdateService:
"""
Serviço para a operação de atualização de um registro na tabela
G_TB_PROFISSAO.
"""
def execute(self, tb_profissao_id : float, profissao_schema: GTbProfissaoUpdateSchema):
"""
Executa a operação de atualização no banco de dados.
Args:
tb_profissao_id (float): O ID da profissão a ser atualizada.
profissao_schema (GTbProfissaoUpdateSchema): O esquema com os dados a serem atualizados.
Returns:
O resultado da operação de atualização.
"""
# Instanciamento de ações
update_action = GTbProfissaoUpdateAction()
# Retorna o resultado da operação
return update_action.execute(tb_profissao_id, profissao_schema)

View file

@ -0,0 +1,27 @@
from packages.v1.administrativo.schemas.g_tb_regimebens_schema import GTbRegimebensIdSchema
from packages.v1.administrativo.actions.g_tb_regimebens.g_tb_regimebens_delete_action import DeleteAction
class DeleteService:
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de exclusão de um registro na tabela g_tb_regimebens.
"""
def execute(self, regimebens_schema: GTbRegimebensIdSchema):
"""
Executa a operação de exclusão do registro no banco de dados.
Args:
regimebens_schema (GTbRegimebensIdSchema): O esquema com o ID do registro a ser excluído.
Returns:
O resultado da operação de exclusão.
"""
# Instanciamento da ação
delete_action = DeleteAction()
# Executa a ação em questão
data = delete_action.execute(regimebens_schema)
# Retorno da informação
return data

View file

@ -0,0 +1,38 @@
from fastapi import HTTPException, status
from packages.v1.administrativo.schemas.g_tb_regimebens_schema import GTbRegimebensDescricaoSchema
from packages.v1.administrativo.actions.g_tb_regimebens.g_tb_regimebens_get_by_descricao_action import GetByDescricaoAction
class GetByDescricaoService:
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de busca de um registro na tabela g_tb_regimebens pela sua descrição.
"""
def execute(self, regimebens_schema: GTbRegimebensDescricaoSchema, messageValidate: bool):
"""
Executa a operação de busca no banco de dados.
Args:
regimebens_schema (GTbRegimebensDescricaoSchema): O esquema com a descrição a ser buscada.
messageValidate (bool): Se True, lança uma exceção HTTP caso o registro não seja encontrado.
Returns:
O registro encontrado ou None.
"""
# Instanciamento da ação
show_action = GetByDescricaoAction()
# Executa a ação em questão
data = show_action.execute(regimebens_schema)
if messageValidate:
if not data:
# Retorna uma exceção
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail='Não foi possível localizar o registro de regime de bens'
)
# Retorno da informação
return data

View file

@ -0,0 +1,32 @@
from fastapi import HTTPException, status
from packages.v1.administrativo.actions.g_tb_regimebens.g_tb_regimebens_index_action import IndexAction
class IndexService:
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de listagem de registros na tabela g_tb_regimebens.
"""
def execute(self):
"""
Executa a operação de busca de todos os registros no banco de dados.
Returns:
A lista de registros encontrados.
"""
# Instanciamento da ação
index_action = IndexAction()
# Executa a busca de todas as ações
data = index_action.execute()
# Verifica se foram localizados registros
if not data:
# Retorna uma exceção
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail='Não foi possível localizar os registros de regime de bens'
)
# Retorna as informações localizadas
return data

View file

@ -0,0 +1,70 @@
from actions.dynamic_import.dynamic_import import DynamicImport
from packages.v1.sequencia.schemas.g_sequencia import GSequenciaSchema
from packages.v1.sequencia.services.g_sequencia.generate_service import GenerateService
from packages.v1.administrativo.schemas.g_tb_regimebens_schema import GTbRegimebensSaveSchema, GTbRegimebensDescricaoSchema
from packages.v1.administrativo.actions.g_tb_regimebens.g_tb_regimebens_save_action import SaveAction
from fastapi import HTTPException, status
class GTbRegimebensSaveService:
def __init__(self):
# Ação responsável por carregar as services de acordo com o estado
self.dynamic_import = DynamicImport()
# Define o pacote que deve ser carregado
self.dynamic_import.set_package("administrativo")
# Define a tabela que o pacote pertence
self.dynamic_import.set_table("g_tb_regimebens")
pass
# Cadastra o novo regime de bens
def execute(self, regimebens_schema: GTbRegimebensSaveSchema):
# Armazena possíveis erros
errors = []
# Verifica se a descrição já está sendo utilizada
# Importação de service
descricao_service = self.dynamic_import.service("g_tb_regimebens_get_descricao_service", "GetByDescricaoService")
# Instanciamento da service
self.descricao_service = descricao_service()
# Verifica se a descrição já está sendo utilizada
self.response = self.descricao_service.execute(GTbRegimebensDescricaoSchema(descricao=regimebens_schema.descricao), False)
# Se houver retorno significa que a descrição já está sendo utilizada
if self.response:
errors.append({'input': 'descricao', 'message': 'a descrição informada já está sendo utilizada.'})
# Se houver erros, lança a exceção
if errors:
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail=errors
)
# Verifica se precisa gerar o ID de sequência
if not regimebens_schema.tb_regimebens_id:
# Crio um objeto de sequencia
sequencia_schema = GSequenciaSchema()
# Define os dados para atualizar a sequencia
sequencia_schema.tabela = 'G_TB_REGIMEBENS'
# Busco a sequência atualizada
generate = GenerateService()
# Busco a sequência atualizada
sequencia = generate.execute(sequencia_schema)
# Atualiza os dados da chave primária
regimebens_schema.tb_regimebens_id = sequencia.sequencia
# Instanciamento de ações
save_action = SaveAction()
# Retorna o resultado da operação
return save_action.execute(regimebens_schema)

View file

@ -0,0 +1,35 @@
from fastapi import HTTPException, status
from packages.v1.administrativo.schemas.g_tb_regimebens_schema import GTbRegimebensIdSchema
from packages.v1.administrativo.actions.g_tb_regimebens.g_tb_regimebens_show_action import ShowAction
class ShowService:
"""
Serviço responsável por encapsular a lógica de negócio para a operação
de busca de um registro na tabela g_tb_regimebens.
"""
def execute(self, regimebens_schema: GTbRegimebensIdSchema):
"""
Executa a operação de busca no banco de dados.
Args:
regimebens_schema (GTbRegimebensIdSchema): O esquema com o ID a ser buscado.
Returns:
O resultado da busca.
"""
# Instanciamento da ação
show_action = ShowAction()
# Executa a ação em questão
data = show_action.execute(regimebens_schema)
if not data:
# Retorna uma exceção
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail='Não foi possível localizar o registro de regime de bens'
)
# Retorno da informação
return data

View file

@ -0,0 +1,23 @@
from packages.v1.administrativo.schemas.g_tb_regimebens_schema import GTbRegimebensUpdateSchema
from packages.v1.administrativo.actions.g_tb_regimebens.g_tb_regimebens_update_action import UpdateAction
class GTbRegimebensUpdateService:
"""
Serviço para a operação de atualização de um registro na tabela
g_tb_regimebens.
"""
def execute(self, tb_regimebens_id: int, regimebens_schema: GTbRegimebensUpdateSchema):
"""
Executa a operação de atualização no banco de dados.
Args:
regimebens_schema (GTbRegimebensUpdateSchema): O esquema com os dados a serem atualizados.
Returns:
O resultado da operação de atualização.
"""
# Instanciamento de ações
update_action = UpdateAction()
# Retorna o resultado da operação
return update_action.execute(tb_regimebens_id, regimebens_schema)

View file

@ -0,0 +1,18 @@
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import GTbRegimecomunhaoIdSchema
from packages.v1.administrativo.actions.g_tb_regimecomunhao.g_tb_regimecomunhao_delete_action import DeleteAction
class DeleteService:
def execute(self, regimecomunhao_schema: GTbRegimecomunhaoIdSchema):
"""
Executa a lógica de negócio para a exclusão de um registro na tabela
g_tb_regimecomunhao.
"""
# Instanciamento de ação
delete_action = DeleteAction()
# Executa a ação em questão
data = delete_action.execute(regimecomunhao_schema)
# Retorno da informação
return data

View file

@ -0,0 +1,29 @@
from fastapi import HTTPException, status
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import GTbRegimecomunhaoDescricaoSchema
from packages.v1.administrativo.actions.g_tb_regimecomunhao.g_tb_regimecomunhao_get_by_descricao_action import GetByDescricaoAction
class GetByDescricaoService:
def execute(self, regimecomunhao_schema: GTbRegimecomunhaoDescricaoSchema, messageValidate: bool):
"""
Executa a lógica de negócio para a exibição de um registro na tabela
g_tb_regimecomunhao pela descrição.
"""
# Instanciamento de ação
show_action = GetByDescricaoAction()
# Executa a ação em questão
data = show_action.execute(regimecomunhao_schema)
if messageValidate:
if not data:
# Retorna uma exceção
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail='Não foi possível localizar o registro'
)
# Retorno da informação
return data

View file

@ -0,0 +1,27 @@
from fastapi import HTTPException, status
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import GTbRegimecomunhaoSchema
from packages.v1.administrativo.actions.g_tb_regimecomunhao.g_tb_regimecomunhao_index_action import IndexAction
class IndexService:
def execute(self):
"""
Executa a lógica de negócio para a listagem de todos os registros na tabela
g_tb_regimecomunhao.
"""
# Instanciamento de ações
index_action = IndexAction()
# Executa a busca de todas as ações
data = index_action.execute()
# Verifica se foi localizado registros
if not data:
# Retorna uma exceção
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail='Não foi possível localizar os regimes de comunhão'
)
# Retorna as informações localizadas
return data

View file

@ -0,0 +1,71 @@
from actions.dynamic_import.dynamic_import import DynamicImport
from packages.v1.sequencia.schemas.g_sequencia import GSequenciaSchema
from packages.v1.sequencia.services.g_sequencia.generate_service import GenerateService
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import GTbRegimecomunhaoSaveSchema, GTbRegimecomunhaoDescricaoSchema
from packages.v1.administrativo.actions.g_tb_regimecomunhao.g_tb_regimecomunhao_save_action import SaveAction
from fastapi import HTTPException, status
class GTbRegimecomunhaoSaveService:
def __init__(self):
# Action responsável por carregar as services de acodo com o estado
self.dynamic_import = DynamicImport()
# Define o pacote que deve ser carregado
self.dynamic_import.set_package("administrativo")
# Define a tabela que o pacote pertence
self.dynamic_import.set_table("g_tb_regimecomunhao")
pass
# Cadastra o novo caixa serviço
def execute(self, regimecomunhao_schema: GTbRegimecomunhaoSaveSchema):
# Armazena possíveis erros
errors = []
# Verifica se o e-mail já esta sendo utilizado
# Importação de service de email
descricao_service = self.dynamic_import.service("g_tb_regimecomunhao_get_by_descricao_service", "GetByDescricaoService")
# Instânciamento da service
self.descricao_service = descricao_service()
# Verifica se a descrição já está sendo utilizada
self.response = self.descricao_service.execute(GTbRegimecomunhaoDescricaoSchema(descricao=regimecomunhao_schema.descricao), False)
# Se houver retorno significa que a descrição já esta sendo utiizada
if self.response:
errors.append({'input': 'descricao', 'message': 'a descrição informada já está sendo utilizada.'})
# Se houver erros, informo
if errors:
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail=errors
)
# Verifica se precisa gerar o id de sequencia
if not regimecomunhao_schema.tb_regimecomunhao_id:
# Crio um objeto de sequencia
sequencia_schema = GSequenciaSchema()
# Define os dados para atualizar a sequencia
sequencia_schema.tabela = 'G_TB_REGIMECOMUNHAO'
# Busco a sequência atualizada
generate = GenerateService()
# Busco a sequência atualizada
sequencia = generate.execute(sequencia_schema)
# Atualiza os dados da chave primária
regimecomunhao_schema.tb_regimecomunhao_id = sequencia.sequencia
# Instânciamento de ações
saveAction = SaveAction()
# Retorna todos produtos desejados
return saveAction.execute(regimecomunhao_schema)

View file

@ -0,0 +1,23 @@
from fastapi import HTTPException, status
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import GTbRegimecomunhaoIdSchema
from packages.v1.administrativo.actions.g_tb_regimecomunhao.g_tb_regimecomunhao_show_action import ShowAction
class ShowService:
def execute(self, regimecomunhao_schema: GTbRegimecomunhaoIdSchema):
# Instanciamento de ação
show_action = ShowAction()
# Executa a ação em questão
data = show_action.execute(regimecomunhao_schema)
if not data:
# Retorna uma exceção
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail='Não foi possível localizar o registro'
)
# Retorno da informação
return data

View file

@ -0,0 +1,12 @@
from packages.v1.administrativo.schemas.g_tb_regimecomunhao_schema import GTbRegimecomunhaoUpdateSchema
from packages.v1.administrativo.actions.g_tb_regimecomunhao.g_tb_regimecomunhao_update_action import UpdateAction
class GTbRegimecomunhaoUpdateService:
def execute(self, tb_regimecomunhao_id : int, regimecomunhao_schema: GTbRegimecomunhaoUpdateSchema):
# Instanciamento de ações
updateAction = UpdateAction()
# Retorna todos produtos desejados
return updateAction.execute(tb_regimecomunhao_id, regimecomunhao_schema)

View file

@ -0,0 +1,26 @@
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import GTbTxmodelogrupoIdSchema
from packages.v1.administrativo.actions.g_tb_txmodelogrupo.g_tb_txmodelogrupo_delete_action import DeleteAction
class DeleteService:
"""
Serviço responsável por encapsular a lógica de negócio para a exclusão de um registro na tabela G_TB_TXMODELOGRUPO.
"""
def execute(self, txmodelogrupo_schema: GTbTxmodelogrupoIdSchema):
"""
Executa a lógica de negócio para a exclusão de um registro na tabela G_TB_TXMODELOGRUPO.
Args:
txmodelogrupo_schema (GTbTxmodelogrupoIdSchema): O schema com o ID a ser excluído.
Returns:
O resultado da operação de exclusão.
"""
# Instanciamento de ação
delete_action = DeleteAction()
# Executa a ação em questão
data = delete_action.execute(txmodelogrupo_schema)
# Retorno da informação
return data

View file

@ -0,0 +1,40 @@
from fastapi import HTTPException, status
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import GTbTxmodelogrupoDescricaoSchema
from packages.v1.administrativo.actions.g_tb_txmodelogrupo.g_tb_txmodelogrupo_get_by_descricao_action import GetByDescricaoAction
class GetByDescricaoService:
"""
Serviço responsável por encapsular a lógica de negócio para a exibição de um registro na tabela
G_TB_TXMODELOGRUPO pela descrição.
"""
def execute(self, txmodelogrupo_schema: GTbTxmodelogrupoDescricaoSchema, messageValidate: bool):
"""
Executa a lógica de negócio para a exibição de um registro na tabela G_TB_TXMODELOGRUPO pela descrição.
Args:
txmodelogrupo_schema (GTbTxmodelogrupoDescricaoSchema): O esquema com a descrição a ser buscada.
messageValidate (bool): Indica se a validação de mensagem deve ser realizada.
Returns:
dict: O registro encontrado ou None.
Raises:
HTTPException: Se o registro não for encontrado e messageValidate for True.
"""
# Instanciamento de ação
get_by_descricao_action = GetByDescricaoAction()
# Executa a ação em questão
data = get_by_descricao_action.execute(txmodelogrupo_schema)
if messageValidate:
if not data:
# Retorna uma exceção se o registro não for encontrado
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail='Não foi possível localizar o registro'
)
# Retorno da informação
return data

View file

@ -0,0 +1,34 @@
from fastapi import HTTPException, status
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import GTbTxmodelogrupoSchema
from packages.v1.administrativo.actions.g_tb_txmodelogrupo.g_tb_txmodelogrupo_index_action import IndexAction
class IndexService:
"""
Serviço responsável por encapsular a lógica de negócio para a listagem de todos os registros na tabela
G_TB_TXMODELOGRUPO.
"""
def execute(self):
"""
Executa a lógica de negócio para a listagem de todos os registros.
Returns:
A lista de todos os registros encontrados.
"""
# Instanciamento de ação
index_action = IndexAction()
# Executa a busca de todas as ações
data = index_action.execute()
# Verifica se foi localizado registros
if not data:
# Retorna uma exceção
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail='Não foi possível localizar os grupos de modelo de texto'
)
# Retorna as informações localizadas
return data

View file

@ -0,0 +1,70 @@
from actions.dynamic_import.dynamic_import import DynamicImport
from packages.v1.sequencia.schemas.g_sequencia import GSequenciaSchema
from packages.v1.sequencia.services.g_sequencia.generate_service import GenerateService
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import GTbTxmodelogrupoSaveSchema, GTbTxmodelogrupoDescricaoSchema
from packages.v1.administrativo.actions.g_tb_txmodelogrupo.g_tb_txmodelogrupo_save_action import SaveAction
from fastapi import HTTPException, status
class GTbTxmodelogrupoSaveService:
def __init__(self):
# Action responsável por carregar as services de acordo com o estado
self.dynamic_import = DynamicImport()
# Define o pacote que deve ser carregado
self.dynamic_import.set_package("administrativo")
# Define a tabela que o pacote pertence
self.dynamic_import.set_table("g_tb_txmodelogrupo")
pass
# Cadastra o novo modelo de grupo serviço
def execute(self, txmodelogrupo_schema: GTbTxmodelogrupoSaveSchema):
# Armazena possíveis erros
errors = []
# Verifica se a descrição já está sendo utilizada
# Importação de service de get_by_descricao
get_by_descricao_service = self.dynamic_import.service("g_tb_txmodelogrupo_get_by_descricao_service", "GetByDescricaoService")
# Instanciamento da service
self.get_by_descricao_service = get_by_descricao_service()
# Verifica se a descrição já está sendo utilizada
self.response = self.get_by_descricao_service.execute(GTbTxmodelogrupoDescricaoSchema(descricao=txmodelogrupo_schema.descricao), False)
# Se houver retorno significa que a descrição já está sendo utilizada
if self.response:
errors.append({'input': 'descricao', 'message': 'A descrição informada já está sendo utilizada.'})
# Se houver erros, informo
if errors:
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail=errors
)
# Verifica se precisa gerar o id de sequência
if not txmodelogrupo_schema.tb_txmodelogrupo_id:
# Crio um objeto de sequencia
sequencia_schema = GSequenciaSchema()
# Define os dados para atualizar a sequência
sequencia_schema.tabela = 'G_TB_TXMODELOGRUPO'
# Busco a sequência atualizada
generate_service = GenerateService()
# Busco a sequência atualizada
sequencia = generate_service.execute(sequencia_schema)
# Atualiza os dados da chave primária
txmodelogrupo_schema.tb_txmodelogrupo_id = sequencia.sequencia
# Instânciamento de ações
saveAction = SaveAction()
# Retorna todos os produtos desejados
return saveAction.execute(txmodelogrupo_schema)

View file

@ -0,0 +1,26 @@
from fastapi import HTTPException, status
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import GTbTxmodelogrupoIdSchema # Assumindo que este schema será criado
from packages.v1.administrativo.actions.g_tb_txmodelogrupo.g_tb_txmodelogrupo_show_action import ShowAction # Assumindo que esta action será criada
class ShowService:
def execute(self, txmodelogrupo_schema: GTbTxmodelogrupoIdSchema):
"""
Executa a lógica de negócio para a exibição de um registro na tabela
G_TB_TXMODELOGRUPO pelo ID.
"""
# Instanciamento de ação
show_action = ShowAction()
# Executa a ação em questão
data = show_action.execute(txmodelogrupo_schema)
if not data:
# Retorna uma exceção se o registro não for encontrado
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail='Não foi possível localizar o registro do grupo de modelo de texto.'
)
# Retorno da informação
return data

View file

@ -0,0 +1,22 @@
from packages.v1.administrativo.schemas.g_tb_txmodelogrupo_schema import GTbTxmodelogrupoUpdateSchema
from packages.v1.administrativo.actions.g_tb_txmodelogrupo.g_tb_txmodelogrupo_update_action import UpdateAction
class GTbTxmodelogrupoUpdateService:
def execute(self, tb_txmodelogrupo_id : int, txmodelogrupo_schema: GTbTxmodelogrupoUpdateSchema):
"""
Executa a lógica de negócio para a atualização de um registro na tabela
G_TB_TXMODELOGRUPO.
Args:
tb_txmodelogrupo_id (int): O ID do registro a ser atualizado.
txmodelogrupo_schema (GTbTxmodelogrupoUpdateSchema): O schema com os dados atualizados.
Returns:
O resultado da operação de atualização.
"""
# Instanciamento de ação
updateAction = UpdateAction()
# Retorna o resultado da execução da ação de atualização
return updateAction.execute(tb_txmodelogrupo_id, txmodelogrupo_schema)

View file

@ -2,11 +2,15 @@
from fastapi import APIRouter
# Importa os módulos de rotas específicos
from packages.v1.administrativo.endpoints import g_tb_txmodelogrupo_endpoint
from packages.v1.administrativo.endpoints import g_tb_profissao_endpoint
from packages.v1.administrativo.endpoints import c_caixa_item_endpoint
from packages.v1.administrativo.endpoints import g_usuario_endpoint
from packages.v1.administrativo.endpoints import c_caixa_servico_endpoint
from packages.v1.administrativo.endpoints import t_tb_reconhecimentotipo_endpoint
from packages.v1.administrativo.endpoints import t_tb_andamentoservico_endpoint
from packages.v1.administrativo.endpoints import g_tb_regimecomunhao_endpoint
from packages.v1.administrativo.endpoints import g_tb_regimebens_endpoint
# Cria uma instância do APIRouter que vai agregar todas as rotas da API
api_router = APIRouter()
@ -36,3 +40,22 @@ api_router.include_router(
t_tb_andamentoservico_endpoint.router, prefix="/administrativo/t_tb_andamentoservico", tags=["Andamentos de serviço"]
)
# Inclui as rotas de g_tb_profissao
api_router.include_router(
g_tb_profissao_endpoint.router, prefix="/administrativo/g_tb_profissao", tags=["Profissões"]
)
# Inclui as rotas de g_tb_regimecomunhao
api_router.include_router(
g_tb_regimecomunhao_endpoint.router, prefix="/administrativo/g_tb_regimecomunhao", tags=["Regime de Comunhão"]
)
# Inclui as rotas de g_tb_txmodelogrupo
api_router.include_router(
g_tb_txmodelogrupo_endpoint.router, prefix="/administrativo/g_tb_txmodelogrupo", tags=["Modelo grupo"]
)
# Inclui as rotas de g_tb_regimebens
api_router.include_router(
g_tb_regimebens_endpoint.router, prefix="/administrativo/g_tb_regimebens", tags=["Regime de bens"]
)

View file

@ -1,971 +0,0 @@
[
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/validation_exception_handler.json",
"storage/temp/http_exception_handler.json",
"storage/temp/http_exception_handler.json"
]

File diff suppressed because it is too large Load diff