from typing import Optional from sqlalchemy.orm import Session from app.crud.base import CRUDBase from app.models.customer import Customer from app.schemas.customer import CustomerCreate, CustomerUpdate class CRUDCustomer(CRUDBase[Customer, CustomerCreate, CustomerUpdate]): def get_by_email(self, db: Session, *, email: str) -> Optional[Customer]: return db.query(Customer).filter(Customer.email == email).first() def create(self, db: Session, *, obj_in: CustomerCreate) -> Customer: # Create a dict without policies (which are handled separately) db_obj = Customer( first_name=obj_in.first_name, last_name=obj_in.last_name, email=obj_in.email, phone_number=obj_in.phone_number, address=obj_in.address, date_of_birth=obj_in.date_of_birth ) db.add(db_obj) db.commit() db.refresh(db_obj) return db_obj customer = CRUDCustomer(Customer)