33 lines
1.3 KiB
Python
33 lines
1.3 KiB
Python
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) |