61 lines
2.2 KiB
Python
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
|