from typing import Optional, List from sqlalchemy.orm import Session from app.crud.base import CRUDBase from app.models.claim import Claim from app.schemas.claim import ClaimCreate, ClaimUpdate class CRUDClaim(CRUDBase[Claim, ClaimCreate, ClaimUpdate]): def get_by_claim_number(self, db: Session, *, claim_number: str) -> Optional[Claim]: return db.query(Claim).filter(Claim.claim_number == claim_number).first() def get_by_policy(self, db: Session, *, policy_id: int, skip: int = 0, limit: int = 100) -> List[Claim]: return db.query(Claim).filter(Claim.policy_id == policy_id).offset(skip).limit(limit).all() def create(self, db: Session, *, obj_in: ClaimCreate) -> Claim: db_obj = Claim( claim_number=obj_in.claim_number, policy_id=obj_in.policy_id, incident_date=obj_in.incident_date, description=obj_in.description, claim_amount=obj_in.claim_amount, status=obj_in.status, settlement_amount=obj_in.settlement_amount, settlement_date=obj_in.settlement_date ) db.add(db_obj) db.commit() db.refresh(db_obj) return db_obj claim = CRUDClaim(Claim)