api-admim/app/database/formatar_retorno_bd.py

77 lines
3.1 KiB
Python

def format_itens_equipamentos(data):
"""
Formata os dados dos itens de equipamentos em um formato específico.
Retorna o formato:
[
{
"equipamento_nome": "string",
"tipo_equipamento_nome": "string",
"setor_nome": "string",
"uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"itens": [
{
"itens_equipamentos_ns": "string",
"itens_equipamentos_patrimonio": "string",
"itens_equipamentos_data_compra": "2024-11-15",
"itens_equipamentos_prazo_garantia": "2024-11-15",
"itens_equipamentos_voltagem": "0",
"itens_equipamentos_valor_aquisicao": 1,
"itens_equipamentos_rfid_uid": "stringst",
"uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"itens_equipamentos_manutencao": true/false,
}
]
}
]
"""
formatted_response = []
# Mapeia os dados em uma estrutura agrupada
for item in data:
equipamento = item.relacao_equipamento
tipo_equipamento = equipamento.relacao_tipo_equipamento
setor = tipo_equipamento.relacao_setor
# Procura se já existe uma entrada para o equipamento
equipamento_entry = next(
(entry for entry in formatted_response if entry["equipamento_uuid"] == equipamento.uuid),
None
)
# Cria uma nova entrada caso não exista
if not equipamento_entry:
equipamento_entry = {
"equipamento_nome": equipamento.equipamento_nome,
"equipamento_uuid": equipamento.uuid,
"equipamento_fk_tipo_equipamento": equipamento.fk_tipo_equipamento_uuid,
"tipo_equipamento_nome": tipo_equipamento.tipo_equipamento_nome,
"tipo_equipamento_uuid": tipo_equipamento.uuid,
"tipo_equipamento_fk_setor": tipo_equipamento.fk_setor_uuid,
"setor_nome": setor.setor_nome,
"setor_uuid": setor.uuid,
"itens": []
}
formatted_response.append(equipamento_entry)
# Adiciona o item à lista de itens do equipamento
equipamento_entry["itens"].append({
"itens_equipamentos_ns": item.itens_equipamentos_ns,
"itens_equipamentos_patrimonio": item.itens_equipamentos_patrimonio,
"itens_equipamentos_data_compra": item.itens_equipamentos_data_compra,
"itens_equipamentos_prazo_garantia": item.itens_equipamentos_prazo_garantia,
"itens_equipamentos_voltagem": item.itens_equipamentos_voltagem,
"itens_equipamentos_valor_aquisicao": item.itens_equipamentos_valor_aquisicao,
"itens_equipamentos_rfid_uid": item.itens_equipamentos_rfid_uid,
"itens_equipamentos_manutencao": item.itens_equipamentos_manutencao,
"uuid": item.uuid
})
return formatted_response
# Dicionário de mapeamento para os formatadores
formatters_map = {
"itens_equipamentos": format_itens_equipamentos,
# Adicione outros formatadores aqui conforme necessário
}