from typing import Optional, List from sqlalchemy.orm import Session from app.crud.base import CRUDBase from app.models.policy import Policy from app.schemas.policy import PolicyCreate, PolicyUpdate class CRUDPolicy(CRUDBase[Policy, PolicyCreate, PolicyUpdate]): def get_by_policy_number(self, db: Session, *, policy_number: str) -> Optional[Policy]: return db.query(Policy).filter(Policy.policy_number == policy_number).first() def get_by_customer(self, db: Session, *, customer_id: int, skip: int = 0, limit: int = 100) -> List[Policy]: return db.query(Policy).filter(Policy.customer_id == customer_id).offset(skip).limit(limit).all() def create(self, db: Session, *, obj_in: PolicyCreate) -> Policy: db_obj = Policy( policy_number=obj_in.policy_number, customer_id=obj_in.customer_id, policy_type=obj_in.policy_type, status=obj_in.status, start_date=obj_in.start_date, end_date=obj_in.end_date, premium_amount=obj_in.premium_amount, coverage_amount=obj_in.coverage_amount, deductible_amount=obj_in.deductible_amount, description=obj_in.description ) db.add(db_obj) db.commit() db.refresh(db_obj) return db_obj policy = CRUDPolicy(Policy)