42 lines
1.0 KiB
Python
42 lines
1.0 KiB
Python
from __future__ import annotations
|
|
|
|
from sqlalchemy import select
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.modules.clients.association_models import ClientAssociation
|
|
|
|
|
|
def get_active_association(db: Session, client_id: int):
|
|
stmt = (
|
|
select(ClientAssociation)
|
|
.where(ClientAssociation.client_id == client_id)
|
|
.limit(1)
|
|
)
|
|
return db.execute(stmt).scalar_one_or_none()
|
|
|
|
|
|
def ensure_active_association(db: Session, client_id: int):
|
|
row = get_active_association(db, client_id)
|
|
if row:
|
|
return row
|
|
|
|
row = ClientAssociation(
|
|
client_id=client_id,
|
|
association_type="firm",
|
|
created_source="system_admin",
|
|
)
|
|
db.add(row)
|
|
db.commit()
|
|
db.refresh(row)
|
|
return row
|
|
|
|
|
|
def update_association_fields(db: Session, client_id: int, **fields):
|
|
row = ensure_active_association(db, client_id)
|
|
for key, value in fields.items():
|
|
if hasattr(row, key):
|
|
setattr(row, key, value)
|
|
db.add(row)
|
|
db.commit()
|
|
db.refresh(row)
|
|
return row |