From 588a8dc15693b536ba6cfd760faca54c17a43b23 Mon Sep 17 00:00:00 2001 From: keven Date: Tue, 7 Oct 2025 11:58:12 -0300 Subject: [PATCH] [MVPTN-18] feat(CRUD): Cria endpoints funcionais de timovel e timovelUnidade --- .../t_imovel/t_imovel_delete_action.py | 4 +- .../t_imovel_unidade_delete_action.py | 6 +- .../t_imovel_unidade_save_action.py | 6 +- .../t_imovel_unidade_show_action.py | 6 +- .../t_imovel_unidade_update_action.py | 6 +- .../controllers/t_imovel_controller.py | 10 +-- .../t_imovel_unidade_controller.py | 61 +++++++-------- .../endpoints/t_imovel_endpoint.py | 20 ++--- .../endpoints/t_imovel_unidade_endpoint.py | 19 +++-- .../t_imovel/t_imovel_delete_repository.py | 2 + .../t_imovel/t_imovel_index_repository.py | 10 ++- .../t_imovel_unidade_delete_repository.py | 4 +- .../t_imovel_unidade_save_repository.py | 76 +++++++++---------- .../t_imovel_unidade_show_repository.py | 6 +- .../t_imovel_unidade_update_repository.py | 6 +- .../administrativo/schemas/t_imovel_schema.py | 3 +- .../schemas/t_imovel_unidade_schema.py | 43 +---------- .../t_imovel/go/t_imovel_save_service.py | 8 +- .../t_imovel/go/t_imovel_show_service.py | 14 ++-- .../t_imovel/go/t_imovel_update_service.py | 14 ++-- .../go/t_imovel_unidade_delete_service.py | 4 +- .../go/t_imovel_unidade_save_service.py | 15 ++-- 22 files changed, 160 insertions(+), 183 deletions(-) diff --git a/packages/v1/administrativo/actions/t_imovel/t_imovel_delete_action.py b/packages/v1/administrativo/actions/t_imovel/t_imovel_delete_action.py index 9a14f48..b2e0981 100644 --- a/packages/v1/administrativo/actions/t_imovel/t_imovel_delete_action.py +++ b/packages/v1/administrativo/actions/t_imovel/t_imovel_delete_action.py @@ -21,4 +21,6 @@ class TImovelDeleteAction(BaseAction): t_imovel_delete_repository = TImovelDeleteRepository() # Execução do repositório - return t_imovel_delete_repository.execute(t_imovel_id_schema) \ No newline at end of file + response = t_imovel_delete_repository.execute(t_imovel_id_schema) + + return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/t_imovel_unidade/t_imovel_unidade_delete_action.py b/packages/v1/administrativo/actions/t_imovel_unidade/t_imovel_unidade_delete_action.py index 4c8e228..4d12bd8 100644 --- a/packages/v1/administrativo/actions/t_imovel_unidade/t_imovel_unidade_delete_action.py +++ b/packages/v1/administrativo/actions/t_imovel_unidade/t_imovel_unidade_delete_action.py @@ -9,7 +9,7 @@ class TImovelUnidadeDeleteAction(BaseAction): de exclusão de um registro na tabela t_t_imovel_unidade. """ - def execute(self, t_imovel_unidade_schema: TImovelUnidadeSchema): + def execute(self, t_imovel_unidade_id_schema: TImovelUnidadeSchema): """ Executa a operação de exclusão no banco de dados. @@ -20,7 +20,7 @@ class TImovelUnidadeDeleteAction(BaseAction): O resultado da operação de exclusão. """ # Instanciamento do repositório - delete_repository = TImovelUnidadeDeleteRepository() + t_imovel_unidade_delete_repository = TImovelUnidadeDeleteRepository() # Execução do repositório - return delete_repository.execute(t_imovel_unidade_schema) \ No newline at end of file + return t_imovel_unidade_delete_repository.execute(t_imovel_unidade_id_schema) \ No newline at end of file diff --git a/packages/v1/administrativo/actions/t_imovel_unidade/t_imovel_unidade_save_action.py b/packages/v1/administrativo/actions/t_imovel_unidade/t_imovel_unidade_save_action.py index d1f6bc8..6d94f34 100644 --- a/packages/v1/administrativo/actions/t_imovel_unidade/t_imovel_unidade_save_action.py +++ b/packages/v1/administrativo/actions/t_imovel_unidade/t_imovel_unidade_save_action.py @@ -1,6 +1,6 @@ from abstracts.action import BaseAction from api.packages.v1.administrativo.repositories.t_imovel_unidade.t_imovel_unidade_save_repository import TImovelUnidadeSaveRepository -from api.packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeSchema +from api.packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeSaveSchema class TImovelUnidadeSaveAction(BaseAction): """ @@ -8,7 +8,7 @@ class TImovelUnidadeSaveAction(BaseAction): de salvar um novo registro na tabela t_censec_qualidade. """ - def execute(self, t_imovel_unidade_schema: TImovelUnidadeSchema): + def execute(self, t_imovel_unidade_save_schema: TImovelUnidadeSaveSchema): """ Executa a operação de salvamento. @@ -22,7 +22,7 @@ class TImovelUnidadeSaveAction(BaseAction): t_imovel_unidade_save_repository = TImovelUnidadeSaveRepository() # Execução do repositório - response = t_imovel_unidade_save_repository.execute(t_imovel_unidade_schema) + response = t_imovel_unidade_save_repository.execute(t_imovel_unidade_save_schema) # Retorno da informação return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/t_imovel_unidade/t_imovel_unidade_show_action.py b/packages/v1/administrativo/actions/t_imovel_unidade/t_imovel_unidade_show_action.py index 39f6d91..64b8b83 100644 --- a/packages/v1/administrativo/actions/t_imovel_unidade/t_imovel_unidade_show_action.py +++ b/packages/v1/administrativo/actions/t_imovel_unidade/t_imovel_unidade_show_action.py @@ -1,6 +1,6 @@ from abstracts.action import BaseAction from api.packages.v1.administrativo.repositories.t_imovel_unidade.t_imovel_unidade_show_repository import TImovelUnidadeShowRepository -from api.packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeSchema +from api.packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeIdSchema class TImovelUnidadeShowAction(BaseAction): """ @@ -8,7 +8,7 @@ class TImovelUnidadeShowAction(BaseAction): de um registro na tabela t_censec_qualidade. """ - def execute(self, t_imovel_unidade_schema: TImovelUnidadeSchema): + def execute(self, t_imovel_unidade_id_schema: TImovelUnidadeIdSchema): """ Executa a operação de exibição. @@ -22,7 +22,7 @@ class TImovelUnidadeShowAction(BaseAction): t_imovel_unidade_show_repository = TImovelUnidadeShowRepository() # Execução do repositório - response = t_imovel_unidade_show_repository.execute(t_imovel_unidade_schema) + response = t_imovel_unidade_show_repository.execute(t_imovel_unidade_id_schema) # Retorno da informação return response \ No newline at end of file diff --git a/packages/v1/administrativo/actions/t_imovel_unidade/t_imovel_unidade_update_action.py b/packages/v1/administrativo/actions/t_imovel_unidade/t_imovel_unidade_update_action.py index a483c77..1abcab6 100644 --- a/packages/v1/administrativo/actions/t_imovel_unidade/t_imovel_unidade_update_action.py +++ b/packages/v1/administrativo/actions/t_imovel_unidade/t_imovel_unidade_update_action.py @@ -9,7 +9,7 @@ class TImovelUnidadeUpdateAction(BaseAction): de um registro na tabela t_censec_qualidade. """ - def execute(self, t_imovel_unidade_schema: TImovelUnidadeUpdateSchema): + def execute(self, t_imovel_unidade_update_schema: TImovelUnidadeUpdateSchema): """ Executa a operação de atualização. @@ -21,7 +21,7 @@ class TImovelUnidadeUpdateAction(BaseAction): O resultado da operação de atualização. """ # Instância o repositório de atualização - t_imovelUnidade_update_repository = TImovelUnidadeUpdateRepository() + t_imovel_unidade_update_repository = TImovelUnidadeUpdateRepository() # Chama o método de execução do repositório para realizar a atualização - return t_imovelUnidade_update_repository.execute(t_imovel_unidade_schema) \ No newline at end of file + return t_imovel_unidade_update_repository.execute(t_imovel_unidade_update_schema) \ No newline at end of file diff --git a/packages/v1/administrativo/controllers/t_imovel_controller.py b/packages/v1/administrativo/controllers/t_imovel_controller.py index 424e2ca..95f2fe9 100644 --- a/packages/v1/administrativo/controllers/t_imovel_controller.py +++ b/packages/v1/administrativo/controllers/t_imovel_controller.py @@ -36,7 +36,7 @@ class TImovelController: # Busca um registro de t_imovel específico pelo ID - def show(self, t_imovel_schema: TImovelIdSchema): + def show(self, t_imovel_id_schema: TImovelIdSchema): #Importação da classe desejada show_service = self.dynamic_import.service('t_imovel_show_service', 'TImovelShowService') @@ -47,8 +47,8 @@ class TImovelController: # Busca e retorna o registro de t_imovel desejado return { 'message': 'Registro de t_imovel localizado com sucesso', - 'data': self.show_service.execute(t_imovel_schema) - } + 'data': self.show_service.execute(t_imovel_id_schema) + } # Cadastra um novo registro de t_imovel def save(self, t_imovel_save_schema: TImovelSaveSchema): @@ -65,7 +65,7 @@ class TImovelController: } # Atualiza os dados de um registro de t_imovel - def update(self, t_imovel_id: int, t_imovel_schema: TImovelUpdateSchema): + def update(self, t_imovel_update_schema: TImovelUpdateSchema): #Importação da classe desejada update_service = self.dynamic_import.service('t_imovel_update_service', 'TImovelUpdateService') @@ -76,7 +76,7 @@ class TImovelController: # Busca e retorna o registro de t_imovel desejado return { 'message': 'Registro de t_imovel atualizado com sucesso', - 'data': self.update_service.execute(t_imovel_id, t_imovel_schema) + 'data': self.update_service.execute(t_imovel_update_schema) } # Exclui um registro de t_imovel diff --git a/packages/v1/administrativo/controllers/t_imovel_unidade_controller.py b/packages/v1/administrativo/controllers/t_imovel_unidade_controller.py index c460423..f3bb27d 100644 --- a/packages/v1/administrativo/controllers/t_imovel_unidade_controller.py +++ b/packages/v1/administrativo/controllers/t_imovel_unidade_controller.py @@ -19,7 +19,7 @@ class TImovelUnidadeController: self.dynamic_import.set_table("t_imovel_unidade") pass - # Lista todos os registros de censec_qualidade + # Lista todos os registros de imovel_unidade def index(self, t_imovel_unidade_index_schema: TImovelUnidadeIndexSchema): # Importação da classe desejada @@ -28,68 +28,69 @@ class TImovelUnidadeController: # Instância da classe service self.t_imovel_index_service = t_imovel_index_service() - # Lista todos os registros de censec_qualidade + # Lista todos os registros de imovel_unidade return { 'message': 'Registros de t_imovel_unidade localizados com sucesso', 'data': self.t_imovel_index_service.execute(t_imovel_unidade_index_schema) } - # Busca um registro de censec_qualidade específico pelo ID - def show(self, t_imovel_unidade_schema: TImovelUnidadeIdSchema): + # Busca um registro de imovel_unidade específico pelo ID + def show(self, t_imovel_unidade_id_schema: TImovelUnidadeIdSchema): #Importação da classe desejada - show_service = self.dynamic_import.service('t_imovel_unidade_show_service', 'ShowService') + t_imovel_unidade_show_service = self.dynamic_import.service('t_imovel_unidade_show_service', 'TImovelUnidadeShowService') # Instância da classe desejada - self.show_service = show_service() + self.t_imovel_unidade_show_service = t_imovel_unidade_show_service() - # Busca e retorna o registro de censec_qualidade desejado + # Busca e retorna o registro de imovel_unidade desejado return { - 'message': 'Registro de censec_qualidade localizado com sucesso', - 'data': self.show_service.execute(t_imovel_unidade_schema) + 'message': 'Registro de imovel_unidade localizado com sucesso', + 'data': self.t_imovel_unidade_show_service.execute(t_imovel_unidade_id_schema) } - # Cadastra um novo registro de censec_qualidade - def save(self, t_imovel_unidade_schema: TImovelUnidadeSaveSchema): + # Cadastra um novo registro de imovel_unidade + def save(self, t_imovel_unidade_save_schema: TImovelUnidadeSaveSchema): #Importação da classe desejada - save_service = self.dynamic_import.service('t_imovel_unidade_save_service', 'SaveService') + t_imovel_unidade_save_service = self.dynamic_import.service('t_imovel_unidade_save_service', 'TImovelUnidadeSaveService') # Instância da classe desejada - self.save_service = save_service() - # Busca e retorna o registro de censec_qualidade desejado + self.t_imovel_unidade_save_service = t_imovel_unidade_save_service() + + # Busca e retorna o registro de imovel_unidade desejado return { - 'message': 'Registro de censec_qualidade salvo com sucesso', - 'data': self.save_service.execute(t_imovel_unidade_schema) + 'message': 'Registro de imovel_unidade salvo com sucesso', + 'data': self.t_imovel_unidade_save_service.execute(t_imovel_unidade_save_schema) } - # Atualiza os dados de um registro de censec_qualidade - def update(self, t_imovel_unidade_id: int, t_imovel_unidade_schema: TImovelUnidadeUpdateSchema): + # Atualiza os dados de um registro de imovel_unidade + def update(self, t_imovel_unidade_update_schema: TImovelUnidadeUpdateSchema): #Importação da classe desejada - update_service = self.dynamic_import.service('t_imovel_unidade_update_service', 'UpdateService') + t_imovel_unidade_update_service = self.dynamic_import.service('t_imovel_unidade_update_service', 'TImovelUnidadeUpdateService') # Instância da classe desejada - self.update_service = update_service() + self.t_imovel_unidade_update_service = t_imovel_unidade_update_service() - # Busca e retorna o registro de censec_qualidade desejado + # Busca e retorna o registro de imovel_unidade desejado return { - 'message': 'Registro de censec_qualidade atualizado com sucesso', - 'data': self.update_service.execute(t_imovel_unidade_id, t_imovel_unidade_schema) + 'message': 'Registro de imovel_unidade atualizado com sucesso', + 'data': self.t_imovel_unidade_update_service.execute(t_imovel_unidade_update_schema) } - # Exclui um registro de censec_qualidade - def delete(self, t_imovel_unidade_schema: TImovelUnidadeIdSchema): + # Exclui um registro de imovel_unidade + def delete(self, t_imovel_unidade_id_schema: TImovelUnidadeIdSchema): #Importação da classe desejada - delete_service = self.dynamic_import.service('t_imovel_unidade_delete_service', 'DeleteService') + t_imovel_unidade_delete_service = self.dynamic_import.service('t_imovel_unidade_delete_service', 'TImovelUnidadeDeleteService') # Instância da classe desejada - self.delete_service = delete_service() + self.t_imovel_unidade_delete_service = t_imovel_unidade_delete_service() - # Busca e retorna o registro de censec_qualidade desejado + # Busca e retorna o registro de imovel_unidade desejado return { - 'message': 'Registro de censec_qualidade removido com sucesso', - 'data': self.delete_service.execute(t_imovel_unidade_schema) + 'message': 'Registro de imovel_unidade removido com sucesso', + 'data': self.t_imovel_unidade_delete_service.execute(t_imovel_unidade_id_schema) } \ No newline at end of file diff --git a/packages/v1/administrativo/endpoints/t_imovel_endpoint.py b/packages/v1/administrativo/endpoints/t_imovel_endpoint.py index c59e5e4..e0e5217 100644 --- a/packages/v1/administrativo/endpoints/t_imovel_endpoint.py +++ b/packages/v1/administrativo/endpoints/t_imovel_endpoint.py @@ -17,13 +17,13 @@ router = APIRouter() t_imovel_controller = TImovelController() # Lista todos os registros de t_imovel -@router.get('/classe/{imovel_id}', +@router.get('/classe/{tipo_classe}', status_code=status.HTTP_200_OK, summary='Lista todos os registros de t_imovel cadastrados', response_description='Lista todos os registros de t_imovel cadastrados') -async def index(imovel_id: int, current_user: dict = Depends(get_current_user)): +async def index(tipo_classe: int, current_user: dict = Depends(get_current_user)): - t_imovel_index_schema = TImovelIndexSchema(imovel_id=imovel_id) + t_imovel_index_schema = TImovelIndexSchema(tipo_classe=tipo_classe) # Busca todos os registros de t_imovel cadastrados response = t_imovel_controller.index(t_imovel_index_schema) @@ -31,7 +31,6 @@ async def index(imovel_id: int, current_user: dict = Depends(get_current_user)): # Retorna os dados localizados return response - # Localiza um registro de t_imovel pelo ID @router.get('/{imovel_id}', status_code=status.HTTP_200_OK, @@ -40,15 +39,14 @@ async def index(imovel_id: int, current_user: dict = Depends(get_current_user)): async def show(imovel_id : int, current_user: dict = Depends(get_current_user)): # Cria o schema com os dados recebidos - t_imovel_schema = TImovelIdSchema(imovel_id=imovel_id) + t_imovel_id_schema = TImovelIdSchema(imovel_id=imovel_id) # Busca um registro de t_imovel específico pelo ID - response = t_imovel_controller.show(t_imovel_schema) + response = t_imovel_controller.show(t_imovel_id_schema) # Retorna os dados localizados return response - # Cadastro de registro de t_imovel @router.post('/', status_code=status.HTTP_201_CREATED, @@ -62,16 +60,18 @@ async def save(t_imovel_schema: TImovelSaveSchema, current_user: dict = Depends( # Retorna os dados localizados return response - # Atualiza os dados de um registro de t_imovel @router.put('/{imovel_id}', status_code=status.HTTP_200_OK, summary='Atualiza um registro de t_imovel', response_description='Atualiza um registro de t_imovel') -async def update(imovel_id: int, t_imovel_schema: TImovelUpdateSchema, current_user: dict = Depends(get_current_user)): +async def update(imovel_id: int, t_imovel_update_schema: TImovelUpdateSchema, current_user: dict = Depends(get_current_user)): + + # Adiciona o ID do registro ao schema + t_imovel_update_schema.imovel_id = imovel_id # Efetua a atualização dos dados - response = t_imovel_controller.update(imovel_id, t_imovel_schema) + response = t_imovel_controller.update(t_imovel_update_schema) # Retorna os dados localizados return response diff --git a/packages/v1/administrativo/endpoints/t_imovel_unidade_endpoint.py b/packages/v1/administrativo/endpoints/t_imovel_unidade_endpoint.py index ed93a93..006e57d 100644 --- a/packages/v1/administrativo/endpoints/t_imovel_unidade_endpoint.py +++ b/packages/v1/administrativo/endpoints/t_imovel_unidade_endpoint.py @@ -40,10 +40,10 @@ async def index(imovel_id: int, current_user: dict = Depends(get_current_user)): async def show(imovel_unidade_id : int, current_user: dict = Depends(get_current_user)): # Cria o schema com os dados recebidos - t_imovel_unidade_schema = TImovelUnidadeIdSchema(imovel_unidade_id=imovel_unidade_id) + t_imovel_unidade_id_schema = TImovelUnidadeIdSchema(imovel_unidade_id=imovel_unidade_id) # Busca um registro de t_imovel_unidade específico pelo ID - response = t_imovel_unidade_controller.show(t_imovel_unidade_schema) + response = t_imovel_unidade_controller.show(t_imovel_unidade_id_schema) # Retorna os dados localizados return response @@ -54,10 +54,10 @@ async def show(imovel_unidade_id : int, current_user: dict = Depends(get_current status_code=status.HTTP_201_CREATED, summary='Cadastra um registro de t_imovel_unidade', response_description='Cadastra um registro de t_imovel_unidade') -async def save(t_imovel_unidade_schema: TImovelUnidadeSaveSchema, current_user: dict = Depends(get_current_user)): +async def save(t_imovel_unidade_save_schema: TImovelUnidadeSaveSchema, current_user: dict = Depends(get_current_user)): # Efetua o cadastro no banco de dados - response = t_imovel_unidade_controller.save(t_imovel_unidade_schema) + response = t_imovel_unidade_controller.save(t_imovel_unidade_save_schema) # Retorna os dados localizados return response @@ -68,10 +68,13 @@ async def save(t_imovel_unidade_schema: TImovelUnidadeSaveSchema, current_user: status_code=status.HTTP_200_OK, summary='Atualiza um registro de t_imovel_unidade', response_description='Atualiza um registro de t_imovel_unidade') -async def update(imovel_unidade_id: int, t_imovel_unidade_schema: TImovelUnidadeUpdateSchema, current_user: dict = Depends(get_current_user)): +async def update(imovel_unidade_id: int, t_imovel_unidade_update_schema: TImovelUnidadeUpdateSchema, current_user: dict = Depends(get_current_user)): + + # Adiciona o ID do registro ao schema + t_imovel_unidade_update_schema.imovel_unidade_id = imovel_unidade_id # Efetua a atualização dos dados - response = t_imovel_unidade_controller.update(imovel_unidade_id, t_imovel_unidade_schema) + response = t_imovel_unidade_controller.update(t_imovel_unidade_update_schema) # Retorna os dados localizados return response @@ -84,10 +87,10 @@ async def update(imovel_unidade_id: int, t_imovel_unidade_schema: TImovelUnidade async def delete(imovel_unidade_id: int, current_user: dict = Depends(get_current_user)): # Cria o schema com os dados recebidos - t_imovel_unidade_schema = TImovelUnidadeIdSchema(imovel_unidade_id=imovel_unidade_id) + t_imovel_unidade_id_schema = TImovelUnidadeIdSchema(imovel_unidade_id=imovel_unidade_id) # Efetua a exclusão do registro de t_imovel_unidade - response = t_imovel_unidade_controller.delete(t_imovel_unidade_schema) + response = t_imovel_unidade_controller.delete(t_imovel_unidade_id_schema) # Retorna os dados localizados return response \ No newline at end of file diff --git a/packages/v1/administrativo/repositories/t_imovel/t_imovel_delete_repository.py b/packages/v1/administrativo/repositories/t_imovel/t_imovel_delete_repository.py index 4487653..4511044 100644 --- a/packages/v1/administrativo/repositories/t_imovel/t_imovel_delete_repository.py +++ b/packages/v1/administrativo/repositories/t_imovel/t_imovel_delete_repository.py @@ -19,6 +19,7 @@ class TImovelDeleteRepository(BaseRepository): O resultado da operação de exclusão. """ try: + # Montagem do sql sql = """ DELETE FROM T_IMOVEL TI WHERE TI.IMOVEL_ID = :imovelId """ @@ -34,6 +35,7 @@ class TImovelDeleteRepository(BaseRepository): return response except Exception as e: + # Informa que houve uma falha na exclusão raise HTTPException( status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, diff --git a/packages/v1/administrativo/repositories/t_imovel/t_imovel_index_repository.py b/packages/v1/administrativo/repositories/t_imovel/t_imovel_index_repository.py index f7a7c10..d6a9a60 100644 --- a/packages/v1/administrativo/repositories/t_imovel/t_imovel_index_repository.py +++ b/packages/v1/administrativo/repositories/t_imovel/t_imovel_index_repository.py @@ -15,14 +15,18 @@ class TImovelIndexRepository(BaseRepository): Uma lista de dicionários contendo os dados dos registros. """ # Montagem do SQL - sql = """ SELECT TI.*, GTBB.DESCRICAO AS GTBB_DESCRICAO FROM T_IMOVEL TI - JOIN G_TB_BAIRRO GTBB ON TI.TB_BAIRRO_ID = GTBB.TB_BAIRRO_ID - WHERE TI.TIPO_CLASSE = :tipoClasse """ + sql = """ SELECT TI.*, + GTBB.DESCRICAO AS GTBB_DESCRICAO + FROM T_IMOVEL TI + JOIN G_TB_BAIRRO GTBB ON TI.TB_BAIRRO_ID = GTBB.TB_BAIRRO_ID + WHERE TI.TIPO_CLASSE = :tipoClasse """ params = { "tipoClasse": t_imovel_index_schema.tipo_classe } + print(params) + # Execução do sql response = self.fetch_all(sql, params) diff --git a/packages/v1/administrativo/repositories/t_imovel_unidade/t_imovel_unidade_delete_repository.py b/packages/v1/administrativo/repositories/t_imovel_unidade/t_imovel_unidade_delete_repository.py index 55cf69d..393e279 100644 --- a/packages/v1/administrativo/repositories/t_imovel_unidade/t_imovel_unidade_delete_repository.py +++ b/packages/v1/administrativo/repositories/t_imovel_unidade/t_imovel_unidade_delete_repository.py @@ -8,7 +8,7 @@ class TImovelUnidadeDeleteRepository(BaseRepository): t_censec_qualidade. """ - def execute(self, t_imovel_unidade_schema: TImovelUnidadeIdSchema): + def execute(self, t_imovel_unidade_id_schema: TImovelUnidadeIdSchema): """ Executa a consulta SQL para remover um registro pelo ID. @@ -24,7 +24,7 @@ class TImovelUnidadeDeleteRepository(BaseRepository): # Preenchimento de parâmetros params = { - "imovel_unidade_id": t_imovel_unidade_schema.imovel_unidade_id + "imovel_unidade_id": t_imovel_unidade_id_schema.imovel_unidade_id } # Execução do sql diff --git a/packages/v1/administrativo/repositories/t_imovel_unidade/t_imovel_unidade_save_repository.py b/packages/v1/administrativo/repositories/t_imovel_unidade/t_imovel_unidade_save_repository.py index 901c437..537b9c2 100644 --- a/packages/v1/administrativo/repositories/t_imovel_unidade/t_imovel_unidade_save_repository.py +++ b/packages/v1/administrativo/repositories/t_imovel_unidade/t_imovel_unidade_save_repository.py @@ -1,6 +1,6 @@ from fastapi import HTTPException, status from abstracts.repository import BaseRepository -from packages.v1.administrativo.schemas.t_imovel_unidade_schema import TUnidadeImovelUnidadeSchema +from packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeSaveSchema class TImovelUnidadeSaveRepository(BaseRepository): @@ -8,12 +8,12 @@ class TImovelUnidadeSaveRepository(BaseRepository): Repositório para a operação de salvamento de um novo registro na tabela t_t_imovel_unidade. """ - def execute(self, t_imovel_unidade_schema: TUnidadeImovelUnidadeSchema): + def execute(self, t_imovel_unidade_save_schema: TImovelUnidadeSaveSchema): """ Executa a operação de salvamento no banco de dados. Args: - t_imovel_unidade_schema (TUnidadeImovelUnidadeSchema): O esquema com os dados a serem salvos. + t_imovel_unidade_save_schema (TUnidadeImovelUnidadeSchema): O esquema com os dados a serem salvos. Returns: O registro recém-criado. @@ -107,41 +107,41 @@ class TImovelUnidadeSaveRepository(BaseRepository): # Preenchimento dos parâmetros # ---------------------------------------------------- params = { - 'imovel_unidade_id': t_imovel_unidade_schema.imovel_unidade_id, - 'imovel_id': t_imovel_unidade_schema.imovel_id, - 'numero_unidade': t_imovel_unidade_schema.numero_unidade, - 'quadra': t_imovel_unidade_schema.quadra, - 'area': t_imovel_unidade_schema.area, - 'superquadra': t_imovel_unidade_schema.superquadra, - 'conjunto': t_imovel_unidade_schema.conjunto, - 'bloco': t_imovel_unidade_schema.bloco, - 'area_descritiva': t_imovel_unidade_schema.area_descritiva, - 'caracteristica': t_imovel_unidade_schema.caracteristica, - 'reserva_florestal': t_imovel_unidade_schema.reserva_florestal, - 'geo_referenciamento': t_imovel_unidade_schema.geo_referenciamento, - 'logradouro': t_imovel_unidade_schema.logradouro, - 'tb_tipologradouro_id': t_imovel_unidade_schema.tb_tipologradouro_id, - 'selecionado': t_imovel_unidade_schema.selecionado, - 'complemento': t_imovel_unidade_schema.complemento, - 'tipo_imovel': t_imovel_unidade_schema.tipo_imovel, - 'tipo_construcao': t_imovel_unidade_schema.tipo_construcao, - 'texto': t_imovel_unidade_schema.texto, - 'numero_edificacao': t_imovel_unidade_schema.numero_edificacao, - 'iptu': t_imovel_unidade_schema.iptu, - 'ccir': t_imovel_unidade_schema.ccir, - 'nirf': t_imovel_unidade_schema.nirf, - 'lote': t_imovel_unidade_schema.lote, - 'torre': t_imovel_unidade_schema.torre, - 'nomeloteamento': t_imovel_unidade_schema.nomeloteamento, - 'nomecondominio': t_imovel_unidade_schema.nomecondominio, - 'numero': t_imovel_unidade_schema.numero, - 'cnm_numero': t_imovel_unidade_schema.cnm_numero, - 'imovel_publico_uniao': t_imovel_unidade_schema.imovel_publico_uniao, - 'spu_rip': t_imovel_unidade_schema.spu_rip, - 'cat': t_imovel_unidade_schema.cat, - 'inscricao_municipal': t_imovel_unidade_schema.inscricao_municipal, - 'cib': t_imovel_unidade_schema.cib, - 'area_construida': t_imovel_unidade_schema.area_construida, + 'imovel_unidade_id': t_imovel_unidade_save_schema.imovel_unidade_id, + 'imovel_id': t_imovel_unidade_save_schema.imovel_id, + 'numero_unidade': t_imovel_unidade_save_schema.numero_unidade, + 'quadra': t_imovel_unidade_save_schema.quadra, + 'area': t_imovel_unidade_save_schema.area, + 'superquadra': t_imovel_unidade_save_schema.superquadra, + 'conjunto': t_imovel_unidade_save_schema.conjunto, + 'bloco': t_imovel_unidade_save_schema.bloco, + 'area_descritiva': t_imovel_unidade_save_schema.area_descritiva, + 'caracteristica': t_imovel_unidade_save_schema.caracteristica, + 'reserva_florestal': t_imovel_unidade_save_schema.reserva_florestal, + 'geo_referenciamento': t_imovel_unidade_save_schema.geo_referenciamento, + 'logradouro': t_imovel_unidade_save_schema.logradouro, + 'tb_tipologradouro_id': t_imovel_unidade_save_schema.tb_tipologradouro_id, + 'selecionado': t_imovel_unidade_save_schema.selecionado, + 'complemento': t_imovel_unidade_save_schema.complemento, + 'tipo_imovel': t_imovel_unidade_save_schema.tipo_imovel, + 'tipo_construcao': t_imovel_unidade_save_schema.tipo_construcao, + 'texto': t_imovel_unidade_save_schema.texto, + 'numero_edificacao': t_imovel_unidade_save_schema.numero_edificacao, + 'iptu': t_imovel_unidade_save_schema.iptu, + 'ccir': t_imovel_unidade_save_schema.ccir, + 'nirf': t_imovel_unidade_save_schema.nirf, + 'lote': t_imovel_unidade_save_schema.lote, + 'torre': t_imovel_unidade_save_schema.torre, + 'nomeloteamento': t_imovel_unidade_save_schema.nomeloteamento, + 'nomecondominio': t_imovel_unidade_save_schema.nomecondominio, + 'numero': t_imovel_unidade_save_schema.numero, + 'cnm_numero': t_imovel_unidade_save_schema.cnm_numero, + 'imovel_publico_uniao': t_imovel_unidade_save_schema.imovel_publico_uniao, + 'spu_rip': t_imovel_unidade_save_schema.spu_rip, + 'cat': t_imovel_unidade_save_schema.cat, + 'inscricao_municipal': t_imovel_unidade_save_schema.inscricao_municipal, + 'cib': t_imovel_unidade_save_schema.cib, + 'area_construida': t_imovel_unidade_save_schema.area_construida, } # Execução do sql diff --git a/packages/v1/administrativo/repositories/t_imovel_unidade/t_imovel_unidade_show_repository.py b/packages/v1/administrativo/repositories/t_imovel_unidade/t_imovel_unidade_show_repository.py index 67f085b..efb1d95 100644 --- a/packages/v1/administrativo/repositories/t_imovel_unidade/t_imovel_unidade_show_repository.py +++ b/packages/v1/administrativo/repositories/t_imovel_unidade/t_imovel_unidade_show_repository.py @@ -7,7 +7,7 @@ class TImovelUnidadeShowRepository(BaseRepository): Repositório para a operação de exibição de um registro na tabela t_censec_qualidade. """ - def execute(self, t_imovel_unidade_schema: TImovelUnidadeIdSchema): + def execute(self, t_imovel_unidade_id_schema: TImovelUnidadeIdSchema): """ Busca um registro específico de CENSEC_QUALIDADE pelo ID. @@ -22,11 +22,11 @@ class TImovelUnidadeShowRepository(BaseRepository): """ try: # Montagem do SQL - sql = "SELECT * FROM T_IMOVEL_UNIDADE WHERE IMOVEL_UNIDADE_ID = :imovel_unidade_Id" + sql = "SELECT * FROM T_IMOVEL_UNIDADE WHERE IMOVEL_UNIDADE_ID = :imovel_unidade_id" # Preenchimento de parâmetros params = { - 'imovel_unidade_Id': t_imovel_unidade_schema.imovel_unidade_id + 'imovel_unidade_id': t_imovel_unidade_id_schema.imovel_unidade_id } # Execução do SQL diff --git a/packages/v1/administrativo/repositories/t_imovel_unidade/t_imovel_unidade_update_repository.py b/packages/v1/administrativo/repositories/t_imovel_unidade/t_imovel_unidade_update_repository.py index 6d497fd..a0ea936 100644 --- a/packages/v1/administrativo/repositories/t_imovel_unidade/t_imovel_unidade_update_repository.py +++ b/packages/v1/administrativo/repositories/t_imovel_unidade/t_imovel_unidade_update_repository.py @@ -7,7 +7,7 @@ class TImovelUnidadeUpdateRepository(BaseRepository): Repositório para a operação de atualização na tabela T_CENSEC_QUALIDADE. """ - def execute(self, t_imovel_unidade_id : int, t_imovel_unidade_schema: TImovelUnidadeUpdateSchema): + def execute(self, t_imovel_unidade_update_schema: TImovelUnidadeUpdateSchema): """ Executa a atualização de um registro na tabela. @@ -66,7 +66,7 @@ class TImovelUnidadeUpdateRepository(BaseRepository): # Monta dinamicamente os campos presentes no schema for attr, column in field_map.items(): - value = getattr(t_imovel_unidade_schema, attr, None) + value = getattr(t_imovel_unidade_update_schema, attr, None) if value is not None: updates.append(f"{column} = :{attr}") params[attr] = value @@ -79,7 +79,7 @@ class TImovelUnidadeUpdateRepository(BaseRepository): ) # ID obrigatório - params["t_imovel_unidade_id"] = t_imovel_unidade_id + params["t_imovel_unidade_id"] = t_imovel_unidade_update_schema.imovel_unidade_id # Monta o SQL dinâmico sql = f""" diff --git a/packages/v1/administrativo/schemas/t_imovel_schema.py b/packages/v1/administrativo/schemas/t_imovel_schema.py index 3b28018..927b261 100644 --- a/packages/v1/administrativo/schemas/t_imovel_schema.py +++ b/packages/v1/administrativo/schemas/t_imovel_schema.py @@ -30,7 +30,7 @@ class TImovelSchema(BaseModel): # Schema base # ---------------------------------------------------- class TImovelIndexSchema(BaseModel): - tipo_classe: str = None + tipo_classe: int = None class Config: from_attributes = True @@ -100,6 +100,7 @@ class TImovelSaveSchema(BaseModel): # Schema para atualização de IMÓVEL (PUT) # ---------------------------------------------------- class TImovelUpdateSchema(BaseModel): + imovel_id: int = None tipo_classe: Optional[str] = None tipo_registro: Optional[str] = None data_registro: Optional[datetime] = None diff --git a/packages/v1/administrativo/schemas/t_imovel_unidade_schema.py b/packages/v1/administrativo/schemas/t_imovel_unidade_schema.py index 872c004..eb32efe 100644 --- a/packages/v1/administrativo/schemas/t_imovel_unidade_schema.py +++ b/packages/v1/administrativo/schemas/t_imovel_unidade_schema.py @@ -71,6 +71,7 @@ class TImovelUnidadeIdSchema(BaseModel): # ---------------------------------------------------- class TImovelUnidadeSaveSchema(BaseModel): imovel_id: int + imovel_unidade_id: Optional[int] = None numero_unidade: str area: float logradouro: str @@ -152,6 +153,7 @@ class TImovelUnidadeSaveSchema(BaseModel): # Schema para atualização de unidade (PUT) # ---------------------------------------------------- class TImovelUnidadeUpdateSchema(BaseModel): + imovel_unidade_id: Optional[int] = None imovel_id: Optional[int] = None numero_unidade: Optional[str] = None area: Optional[float] = None @@ -189,42 +191,5 @@ class TImovelUnidadeUpdateSchema(BaseModel): cib: Optional[str] = None area_construida: Optional[float] = None - # Sanitiza campos textuais - @field_validator( - 'numero_unidade', 'quadra', 'superquadra', 'conjunto', 'bloco', - 'area_descritiva', 'caracteristica', 'reserva_florestal', 'geo_referenciamento', - 'logradouro', 'selecionado', 'complemento', 'numero_edificacao', - 'iptu', 'ccir', 'nirf', 'lote', 'torre', 'nomeloteamento', 'nomecondominio', - 'cnm_numero', 'imovel_publico_uniao', 'spu_rip', 'cat', 'inscricao_municipal', 'cib' - ) - def sanitize_fields(cls, v): - if v: - return Text.sanitize_input(v) - return v - - # Valida campo BLOB - @field_validator('texto') - def validate_blob(cls, v): - if v is not None and not isinstance(v, bytes): - raise ValueError('O campo TEXTO deve ser do tipo bytes.') - return v - - # Garante que ao menos um campo seja enviado - @model_validator(mode='after') - def validate_partial_update(self): - if not any([ - self.imovel_id, self.numero_unidade, self.area, self.logradouro, - self.tb_tipologradouro_id, self.texto, self.quadra, self.superquadra, - self.conjunto, self.bloco, self.area_descritiva, self.caracteristica, - self.reserva_florestal, self.geo_referenciamento, self.selecionado, - self.complemento, self.tipo_imovel, self.tipo_construcao, self.numero_edificacao, - self.iptu, self.ccir, self.nirf, self.lote, self.torre, self.nomeloteamento, - self.nomecondominio, self.numero, self.cnm_numero, self.imovel_publico_uniao, - self.spu_rip, self.cat, self.inscricao_municipal, self.cib, self.area_construida - ]): - return self - - raise HTTPException( - status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, - detail="Pelo menos um campo deve ser fornecido para a atualização." - ) + class Config: + from_attributes = True \ No newline at end of file diff --git a/packages/v1/administrativo/services/t_imovel/go/t_imovel_save_service.py b/packages/v1/administrativo/services/t_imovel/go/t_imovel_save_service.py index 6b559aa..8ea0806 100644 --- a/packages/v1/administrativo/services/t_imovel/go/t_imovel_save_service.py +++ b/packages/v1/administrativo/services/t_imovel/go/t_imovel_save_service.py @@ -22,13 +22,14 @@ class TImovelSaveService: def execute(self, t_imovel_save_schema: TImovelSaveSchema): # Verifica se precisa gerar o ID de sequência + # Coluna primária ajustada if not t_imovel_save_schema.imovel_id: # Crio um objeto de sequencia sequencia_schema = GSequenciaSchema() # Define os dados para atualizar a sequencia - sequencia_schema.tabela = 'T_IMOVEL' + sequencia_schema.tabela = 'T_IMOVEL' # Nome da tabela ajustado # Busco a sequência atualizada generate = GenerateService() @@ -37,10 +38,11 @@ class TImovelSaveService: sequencia = generate.execute(sequencia_schema) # Atualiza os dados da chave primária - t_imovel_save_schema.imovel_id = sequencia.sequencia + t_imovel_save_schema.imovel_id = sequencia.sequencia # Coluna primária ajustada # Instanciamento de ações + # Ação já é importada como SaveAction t_imovel_save_action = TImovelSaveAction() # Retorna o resultado da operação - return t_imovel_save_action.execute(t_imovel_save_schema) \ No newline at end of file + return t_imovel_save_action.execute(t_imovel_save_schema) # Nome do parâmetro ajustado \ No newline at end of file diff --git a/packages/v1/administrativo/services/t_imovel/go/t_imovel_show_service.py b/packages/v1/administrativo/services/t_imovel/go/t_imovel_show_service.py index 2e41c5d..053fd3f 100644 --- a/packages/v1/administrativo/services/t_imovel/go/t_imovel_show_service.py +++ b/packages/v1/administrativo/services/t_imovel/go/t_imovel_show_service.py @@ -1,28 +1,28 @@ -from api.packages.v1.administrativo.actions.t_imovel_unidade.t_imovel_unidade_show_action import TImovelUnidadeShowAction -from api.packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeIdSchema +from api.packages.v1.administrativo.actions.t_imovel.t_imovel_show_action import TImovelShowAction +from api.packages.v1.administrativo.schemas.t_imovel_schema import TImovelIdSchema from fastapi import HTTPException, status -class TImovelUnidadeShowService: +class TImovelShowService: """ Serviço responsável por encapsular a lógica de negócio para a operação de busca de um registro na tabela t_censec_qualidade. """ - def execute(self, t_imovel_unidade_id_schema: TImovelUnidadeIdSchema): + def execute(self, t_imovel_id_schema: TImovelIdSchema): """ Executa a operação de busca no banco de dados. Args: - t_imovel_unidade_schema (TCensecQualidadeIdSchema): O esquema com o ID a ser buscado. + t_imovel_schema (TCensecQualidadeIdSchema): O esquema com o ID a ser buscado. Returns: O resultado da busca. """ # Instanciamento da ação - t_imovel_unidade_show_action = TImovelUnidadeShowAction() + t_imovel_show_action = TImovelShowAction() # Executa a ação em questão - data = t_imovel_unidade_show_action.execute(t_imovel_unidade_id_schema) + data = t_imovel_show_action.execute(t_imovel_id_schema) if not data: # Retorna uma exceção diff --git a/packages/v1/administrativo/services/t_imovel/go/t_imovel_update_service.py b/packages/v1/administrativo/services/t_imovel/go/t_imovel_update_service.py index 2179000..f9b2cd5 100644 --- a/packages/v1/administrativo/services/t_imovel/go/t_imovel_update_service.py +++ b/packages/v1/administrativo/services/t_imovel/go/t_imovel_update_service.py @@ -1,25 +1,25 @@ -from api.packages.v1.administrativo.actions.t_imovel_unidade.t_imovel_unidade_update_action import TImovelUnidadeUpdateAction -from api.packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeUpdateSchema +from api.packages.v1.administrativo.actions.t_imovel.t_imovel_update_action import TImovelUpdateAction +from api.packages.v1.administrativo.schemas.t_imovel_schema import TImovelUpdateSchema -class TImovelUnidadeUpdateService: +class TImovelUpdateService: """ Serviço para a operação de atualização de um registro na tabela t_censec_qualidade. """ - def execute(self, t_imovel_unidade_update_schema: TImovelUnidadeUpdateSchema): + def execute(self, t_imovel_update_schema: TImovelUpdateSchema): """ Executa a operação de atualização no banco de dados. Args: - t_imovel_unidade_schema (TCensecQualidadeUpdateSchema): O esquema com os dados a serem atualizados. + t_imovel_schema (TCensecQualidadeUpdateSchema): O esquema com os dados a serem atualizados. Returns: O resultado da operação de atualização. """ # Instanciamento de ações - t_imovel_unidade_update_action = TImovelUnidadeUpdateAction() + t_imovel_update_action = TImovelUpdateAction() # Retorna o resultado da operação - return t_imovel_unidade_update_action.execute(t_imovel_unidade_update_schema) \ No newline at end of file + return t_imovel_update_action.execute(t_imovel_update_schema) \ No newline at end of file diff --git a/packages/v1/administrativo/services/t_imovel_unidade/go/t_imovel_unidade_delete_service.py b/packages/v1/administrativo/services/t_imovel_unidade/go/t_imovel_unidade_delete_service.py index 8bc6a1a..346d76e 100644 --- a/packages/v1/administrativo/services/t_imovel_unidade/go/t_imovel_unidade_delete_service.py +++ b/packages/v1/administrativo/services/t_imovel_unidade/go/t_imovel_unidade_delete_service.py @@ -8,7 +8,7 @@ class TImovelUnidadeDeleteService: de exclusão de um registro na tabela t_censec_qualidade. """ - def execute(self, t_imovel_unidade_schema: TImovelUnidadeIdSchema): + def execute(self, t_imovel_unidade_id_schema: TImovelUnidadeIdSchema): """ Executa a operação de exclusão do registro no banco de dados. @@ -22,7 +22,7 @@ class TImovelUnidadeDeleteService: t_imovel_unidade_delete = TImovelUnidadeDeleteAction() # Executa a ação em questão - data = t_imovel_unidade_delete.execute(t_imovel_unidade_schema) + data = t_imovel_unidade_delete.execute(t_imovel_unidade_id_schema) # Retorno da informação return data \ No newline at end of file diff --git a/packages/v1/administrativo/services/t_imovel_unidade/go/t_imovel_unidade_save_service.py b/packages/v1/administrativo/services/t_imovel_unidade/go/t_imovel_unidade_save_service.py index 659162c..1817e9c 100644 --- a/packages/v1/administrativo/services/t_imovel_unidade/go/t_imovel_unidade_save_service.py +++ b/packages/v1/administrativo/services/t_imovel_unidade/go/t_imovel_unidade_save_service.py @@ -1,6 +1,6 @@ from actions.dynamic_import.dynamic_import import DynamicImport from api.packages.v1.administrativo.actions.t_imovel_unidade.t_imovel_unidade_save_action import TImovelUnidadeSaveAction -from api.packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeSchema +from api.packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeSaveSchema, TImovelUnidadeSchema from packages.v1.sequencia.schemas.g_sequencia import GSequenciaSchema from packages.v1.sequencia.services.g_sequencia.generate_service import GenerateService from fastapi import HTTPException, status @@ -19,19 +19,16 @@ class TImovelUnidadeSaveService: pass # Cadastra o novo CENSEC_QUALIDADE - def execute(self, t_imovel_unidade_schema: TImovelUnidadeSchema): - - # Armazena possíveis erros - errors = [] + def execute(self, t_imovel_unidade_save_schema: TImovelUnidadeSaveSchema): # Verifica se precisa gerar o ID de sequência - if not t_imovel_unidade_schema.imovel_unidade_id: + if not t_imovel_unidade_save_schema.imovel_unidade_id: # Crio um objeto de sequencia sequencia_schema = GSequenciaSchema() # Define os dados para atualizar a sequencia - sequencia_schema.tabela = 'T_CENSEC_QUALIDADE' + sequencia_schema.tabela = 'T_IMOVEL_UNIDADE' # Busco a sequência atualizada generate = GenerateService() @@ -40,10 +37,10 @@ class TImovelUnidadeSaveService: sequencia = generate.execute(sequencia_schema) # Atualiza os dados da chave primária - t_imovel_unidade_schema.imovel_unidade_id = sequencia.sequencia + t_imovel_unidade_save_schema.imovel_unidade_id = sequencia.sequencia # Instanciamento de ações t_imovel_unidade_save_action = TImovelUnidadeSaveAction() # Retorna o resultado da operação - return t_imovel_unidade_save_action.execute(t_imovel_unidade_schema) \ No newline at end of file + return t_imovel_unidade_save_action.execute(t_imovel_unidade_save_schema) \ No newline at end of file