31 lines
1.2 KiB
Python
31 lines
1.2 KiB
Python
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) |