api-admim/app/scripts/initialize_pessoa.py

61 lines
2.2 KiB
Python

from app.database.models import ComercialFisica
from app.database.session import sessionmanager
from sqlalchemy import select
from sqlalchemy.orm import selectinload
async def add_or_update_person(session, model, filters, data):
print("Executando add_or_update_person...")
# Usando selectinload para evitar carregamento preguiçoso inesperado
result = await session.execute(
select(model).options(selectinload("*")).filter_by(**filters)
)
entity = result.scalars().first()
if not entity:
print("Nenhuma pessoa encontrada com os filtros fornecidos. Criando nova pessoa.")
entity = model(**data)
session.add(entity)
else:
print("Pessoa já existente encontrada. Atualizando informações.")
for key, value in data.items():
setattr(entity, key, value)
return entity
async def initialize_person():
print("Iniciando processo de criação/atualização de pessoa...")
async with sessionmanager.session() as session:
# Dados da pessoa
pessoa_data = {
"pessoa_telefone": "00000000000", # Exemplo de telefone
"pessoa_celular": "00000000000", # Exemplo de celular
"pessoa_email": "admin@sonora.com", # Exemplo de email
"pessoa_status": True,
"pessoa_tipo": "1", # Tipo especificado
"fisica_nome": "Admin", # Nome da pessoa
"fisica_cpf": "00000000000", # Exemplo de CPF
"fisica_genero": "O", # Gênero
"fisica_rg": "1.234.567", # Exemplo de RG
}
print("Dados da pessoa para criação/atualização:", pessoa_data)
# Criando ou atualizando a pessoa
pessoa = await add_or_update_person(
session, ComercialFisica, {"pessoa_email": pessoa_data["pessoa_email"]}, pessoa_data
)
print("Pessoa criada ou atualizada, realizando commit...")
# Confirmando alterações no banco
await session.commit()
# Garantindo que os dados estão totalmente carregados
await session.refresh(pessoa)
# Retornando o UUID da pessoa
print(f"Pessoa criada com UUID: {pessoa.uuid}")
return pessoa