fix(): Ajuste na listagem de ato_principal - Aplicando descriptografia nos dados

This commit is contained in:
Kenio 2025-11-04 15:43:10 -03:00
parent 7148de104b
commit 0102a2ba8c

View file

@ -15,7 +15,7 @@ class IndexRepository:
# Cria a sessão dentro do repositório # Cria a sessão dentro do repositório
db = SessionLocal() db = SessionLocal()
try: try:
# Executa a query com descriptografia de campos sensíveis # Executa a query
result = db.query( result = db.query(
AtoPrincipal.ato_principal_id, AtoPrincipal.ato_principal_id,
AtoPrincipal.origem_ato_principal_id, AtoPrincipal.origem_ato_principal_id,
@ -44,28 +44,8 @@ class IndexRepository:
AtoPrincipal.updated_at, AtoPrincipal.updated_at,
).all() ).all()
# Lista final com conversão segura # Converte os models SQLAlchemy em schemas Pydantic
data = [] data = [AtoPrincipalSchema.model_validate(obj) for obj in result]
for obj in result:
# Transforma a Row em dicionário mutável
row = dict(obj._mapping)
# Decodifica os campos criptografados (se não forem None)
for field in [
"nome_civil_ato",
"nome_serventuario_praticou_ato",
"inteiro_teor",
]:
value = row.get(field)
if isinstance(value, (bytes, bytearray)):
try:
row[field] = value.decode("utf-8")
except UnicodeDecodeError:
# Evita quebrar se o conteúdo não for UTF-8 válido
row[field] = None
# Valida via schema Pydantic
data.append(AtoPrincipalSchema.model_validate(row))
return data return data