[MVPTN-18] feat(CRUD): Cria endpoints funcionais de timovel e timovelUnidade

This commit is contained in:
Keven Willian Pereira de Souza 2025-10-07 11:58:12 -03:00
parent a7978d385e
commit 588a8dc156
22 changed files with 160 additions and 183 deletions

View file

@ -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)
response = t_imovel_delete_repository.execute(t_imovel_id_schema)
return response

View file

@ -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)
return t_imovel_unidade_delete_repository.execute(t_imovel_unidade_id_schema)

View file

@ -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

View file

@ -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

View file

@ -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)
return t_imovel_unidade_update_repository.execute(t_imovel_unidade_update_schema)

View file

@ -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

View file

@ -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)
}

View file

@ -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

View file

@ -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

View file

@ -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,

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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"""

View file

@ -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

View file

@ -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

View file

@ -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)
return t_imovel_save_action.execute(t_imovel_save_schema) # Nome do parâmetro ajustado

View file

@ -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

View file

@ -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)
return t_imovel_update_action.execute(t_imovel_update_schema)

View file

@ -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

View file

@ -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)
return t_imovel_unidade_save_action.execute(t_imovel_unidade_save_schema)