33 lines
1.3 KiB
Python
33 lines
1.3 KiB
Python
from sqlalchemy import Column, Integer, String, DateTime, Float, ForeignKey, Enum
|
|
from sqlalchemy.orm import relationship
|
|
from sqlalchemy.sql import func
|
|
import enum
|
|
|
|
from app.db.base import Base
|
|
|
|
class ClaimStatus(str, enum.Enum):
|
|
SUBMITTED = "submitted"
|
|
UNDER_REVIEW = "under_review"
|
|
APPROVED = "approved"
|
|
DENIED = "denied"
|
|
PAID = "paid"
|
|
CLOSED = "closed"
|
|
|
|
class Claim(Base):
|
|
__tablename__ = "claims"
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
claim_number = Column(String, unique=True, index=True, nullable=False)
|
|
policy_id = Column(Integer, ForeignKey("policies.id"), nullable=False)
|
|
incident_date = Column(DateTime, nullable=False)
|
|
report_date = Column(DateTime, nullable=False, server_default=func.now())
|
|
description = Column(String, nullable=False)
|
|
claim_amount = Column(Float, nullable=False)
|
|
status = Column(Enum(ClaimStatus), default=ClaimStatus.SUBMITTED, nullable=False)
|
|
settlement_amount = Column(Float, nullable=True)
|
|
settlement_date = Column(DateTime, nullable=True)
|
|
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
|
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
|
|
|
|
# Relationships
|
|
policy = relationship("Policy", back_populates="claims") |