from datetime import date, datetime, timedelta from pydantic import BaseModel, Field from cbh.core.database import MongoBaseModel, MongoSerializableModel class ValidityMixin(BaseModel): validFrom: date | None = None validTo: date | None = None def days_until_expiry(self, on_date: date) -> int | None: if self.validTo is None: return None return (self.validTo - on_date).days class FileRef(MongoSerializableModel): fileName: str storagePath: str contentType: str | None = None sizeBytes: int | None = None datetimeInserted: datetime = Field(default_factory=datetime.now) class CacheEntryModel(MongoBaseModel): namespace: str key: str value: dict | list | str | int | float | bool | None = None deletedAt: datetime | None = Field( default_factory=lambda: datetime.now() + timedelta(days=1), exclude=True, ) datetimeInserted: datetime = Field(default_factory=datetime.now)