fix(Update): Ajusta a maneira de realizar o update
This commit is contained in:
parent
349350b03e
commit
88fd24c6b8
1 changed files with 17 additions and 79 deletions
|
|
@ -1,4 +1,5 @@
|
|||
from abstracts.repository import BaseRepository
|
||||
from api.actions.data.prepare_update_data import prepare_update_data
|
||||
from packages.v1.administrativo.schemas.t_imovel_unidade_schema import TImovelUnidadeUpdateSchema
|
||||
from fastapi import HTTPException, status
|
||||
|
||||
|
|
@ -22,88 +23,25 @@ class TImovelUnidadeUpdateRepository(BaseRepository):
|
|||
HTTPException: Se o registro não for encontrado ou ocorrer um erro na atualização.
|
||||
"""
|
||||
try:
|
||||
# Dicionário de mapeamento: atributo → coluna SQL
|
||||
field_map = {
|
||||
"imovel_unidade_id" : "IMOVEL_UNIDADE_ID",
|
||||
"imovel_id" : "IMOVEL_ID",
|
||||
"numero_unidade" : "NUMERO_UNIDADE",
|
||||
"quadra" : "QUADRA",
|
||||
"area" : "AREA",
|
||||
"superquadra" : "SUPERQUADRA",
|
||||
"conjunto" : "CONJUNTO",
|
||||
"bloco" : "BLOCO",
|
||||
"area_descritiva" : "AREA_DESCRITIVA",
|
||||
"caracteristica" : "CARACTERISTICA",
|
||||
"reserva_florestal" : "RESERVA_FLORESTAL",
|
||||
"geo_referenciamento" : "GEO_REFERENCIAMENTO",
|
||||
"logradouro" : "LOGRADOURO",
|
||||
"tb_tipologradouro_id" : "TB_TIPOLOGRADOURO_ID",
|
||||
"selecionado" : "SELECIONADO",
|
||||
"complemento" : "COMPLEMENTO",
|
||||
"tipo_imovel" : "TIPO_IMOVEL",
|
||||
"tipo_construcao" : "TIPO_CONSTRUCAO",
|
||||
"texto" : "TEXTO",
|
||||
"numero_edificacao" : "NUMERO_EDIFICACAO",
|
||||
"iptu" : "IPTU",
|
||||
"ccir" : "CCIR",
|
||||
"nirf" : "NIRF",
|
||||
"lote" : "LOTE",
|
||||
"torre" : "TORRE",
|
||||
"nomeloteamento" : "NOMELOTEAMENTO",
|
||||
"nomecondominio" : "NOMECONDOMINIO",
|
||||
"numero" : "NUMERO",
|
||||
"cnm_numero" : "CNM_NUMERO",
|
||||
"imovel_publico_uniao" : "IMOVEL_PUBLICO_UNIAO",
|
||||
"spu_rip" : "SPU_RIP",
|
||||
"cat" : "CAT",
|
||||
"inscricao_municipal" : "INSCRICAO_MUNICIPAL",
|
||||
"cib" : "CIB",
|
||||
"area_construida" : "AREA_CONSTRUIDA",
|
||||
}
|
||||
|
||||
params, update_columns = prepare_update_data(
|
||||
t_imovel_unidade_update_schema,
|
||||
exclude_fields=["imovel_unidade_id"],
|
||||
id_field="imovel_unidade_id"
|
||||
)
|
||||
|
||||
# Lista de campos que serão atualizados
|
||||
updates = []
|
||||
params = {}
|
||||
|
||||
# Monta dinamicamente os campos presentes no schema
|
||||
for attr, column in field_map.items():
|
||||
value = getattr(t_imovel_unidade_update_schema, attr, None)
|
||||
if value is not None:
|
||||
updates.append(f"{column} = :{attr}")
|
||||
params[attr] = value
|
||||
|
||||
# Nenhum campo a atualizar?
|
||||
if not updates:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_400_BAD_REQUEST,
|
||||
detail="Nenhum campo válido foi enviado para atualização."
|
||||
)
|
||||
|
||||
# ID obrigatório
|
||||
params["t_imovel_unidade_id"] = t_imovel_unidade_update_schema.imovel_unidade_id
|
||||
|
||||
# Monta o SQL dinâmico
|
||||
sql = f"""
|
||||
UPDATE T_IMOVEL_UNIDADE
|
||||
SET {', '.join(updates)}
|
||||
WHERE IMOVEL_UNIDADE_ID = :t_imovel_unidade_id
|
||||
RETURNING *;
|
||||
"""
|
||||
UPDATE T_IMOVEL_UNIDADE
|
||||
SET {update_columns}
|
||||
WHERE IMOVEL_UNIDADE_ID = :imovel_unidade_id
|
||||
RETURNING IMOVEL_UNIDADE_ID
|
||||
"""
|
||||
|
||||
# Executa o update
|
||||
response = self.run_and_return(sql, params)
|
||||
|
||||
# Executa a query
|
||||
result = self.run_and_return(sql, params)
|
||||
|
||||
if not result:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail="Nenhuma unidade de imóvel encontrada para o ID informado."
|
||||
)
|
||||
|
||||
return result
|
||||
|
||||
except HTTPException:
|
||||
# Deixa HTTPException original passar direto
|
||||
raise
|
||||
return response
|
||||
|
||||
except Exception as e:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue