|  | 
| 4 | 4 | from sqlmodel import Session, select | 
| 5 | 5 | 
 | 
| 6 | 6 | from app.core.security import get_password_hash, verify_password | 
| 7 |  | -from app.models import Item, ItemCreate, User, UserCreate, UserUpdate | 
|  | 7 | +from app.models import Item, ItemCreate, User, UserCreate, UserUpdate, Patient, PatientCreate, MenuCreate, MenuUpdate, Menu | 
| 8 | 8 | 
 | 
| 9 | 9 | 
 | 
| 10 | 10 | def create_user(*, session: Session, user_create: UserCreate) -> User: | 
| @@ -52,3 +52,67 @@ def create_item(*, session: Session, item_in: ItemCreate, owner_id: uuid.UUID) - | 
| 52 | 52 |     session.commit() | 
| 53 | 53 |     session.refresh(db_item) | 
| 54 | 54 |     return db_item | 
|  | 55 | + | 
|  | 56 | + | 
|  | 57 | + | 
|  | 58 | + | 
|  | 59 | +def create_patient(*, session: Session,patient_in: PatientCreate, owner_id: uuid.UUID) -> Patient: | 
|  | 60 | +    db_obj = Patient.model_validate(patient_in, update={"owner_id": owner_id}) | 
|  | 61 | + | 
|  | 62 | +    session.add(db_obj) | 
|  | 63 | +    session.commit() | 
|  | 64 | +    session.refresh(db_obj) | 
|  | 65 | +    return db_obj | 
|  | 66 | + | 
|  | 67 | +def update_patient_password(*, session: Session,db_patient: Patient, user_in: UserUpdate) -> Any: | 
|  | 68 | +    patient_data = user_in.model_dump(exclude_unset=True) | 
|  | 69 | +    extra_data = {} | 
|  | 70 | +    if "password" in patient_data: | 
|  | 71 | +        password = patient_data["password"] | 
|  | 72 | +        hashed_password = get_password_hash(password) | 
|  | 73 | +        extra_data["hashed_password"] = hashed_password | 
|  | 74 | +    db_patient.sqlmodel_update(patient_data, update=extra_data) | 
|  | 75 | +    session.add(db_patient) | 
|  | 76 | +    session.commit() | 
|  | 77 | +    session.refresh(db_patient) | 
|  | 78 | +    return db_patient | 
|  | 79 | + | 
|  | 80 | + | 
|  | 81 | + | 
|  | 82 | + | 
|  | 83 | +def update_patient_info(*, session: Session,db_patient: Patient, patient_in: UserUpdate) -> Any: | 
|  | 84 | +    patient_data = patient_in.model_dump(exclude_unset=True) | 
|  | 85 | +    extra_data = {} | 
|  | 86 | +    if "password" in patient_data: | 
|  | 87 | +        password = patient_data["password"] | 
|  | 88 | +        hashed_password = get_password_hash(password) | 
|  | 89 | +        extra_data["hashed_password"] = hashed_password | 
|  | 90 | +    db_patient.sqlmodel_update(patient_data, update=extra_data) | 
|  | 91 | +    session.add(db_patient) | 
|  | 92 | +    session.commit() | 
|  | 93 | +    session.refresh(db_patient) | 
|  | 94 | +    return db_patient | 
|  | 95 | + | 
|  | 96 | + | 
|  | 97 | + | 
|  | 98 | +def get_patient_by_email(*, session: Session, email: str) -> User | None: | 
|  | 99 | +    statement = select(Patient).where(Patient.email == email) | 
|  | 100 | +    session_patient = session.exec(statement).first() | 
|  | 101 | +    return session_patient | 
|  | 102 | + | 
|  | 103 | +def create_menu(*, session: Session,menu_create: MenuCreate) -> Menu: | 
|  | 104 | +    db_obj = Menu.model_validate( | 
|  | 105 | +        menu_create | 
|  | 106 | +    ) | 
|  | 107 | +    session.add(db_obj) | 
|  | 108 | +    session.commit() | 
|  | 109 | +    session.refresh(db_obj) | 
|  | 110 | +    return db_obj | 
|  | 111 | + | 
|  | 112 | + | 
|  | 113 | + | 
|  | 114 | + | 
|  | 115 | + | 
|  | 116 | + | 
|  | 117 | + | 
|  | 118 | + | 
0 commit comments