Spaces:
Running
Running
File size: 738 Bytes
7deddcc 3c93625 7deddcc | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | from fastapi import HTTPException
from sqlalchemy.orm import Session
from app.db.models_family import FamilyMember
def get_or_assign_member(db: Session, family_code: str, user_id: int) -> FamilyMember:
# Try already linked member
fm = db.query(FamilyMember).filter(
FamilyMember.family_code == family_code,
FamilyMember.user_id == user_id
).first()
if fm:
return fm
# Assign to empty member slot
fm = db.query(FamilyMember).filter(
FamilyMember.family_code == family_code,
FamilyMember.user_id.is_(None)
).first()
if not fm:
raise HTTPException(400, "No available member slot")
fm.user_id = user_id
db.commit()
db.refresh(fm)
return fm |