51 lines
1.3 KiB
Python
51 lines
1.3 KiB
Python
import enum
|
|
import uuid
|
|
from datetime import datetime
|
|
from typing import Optional
|
|
|
|
from pydantic import BaseModel, ConfigDict
|
|
|
|
from app.schemas.user import UserDisplay
|
|
|
|
|
|
class DocumentVersionStatus(str, enum.Enum):
|
|
DRAFT = "DRAFT"
|
|
SUBMITTED = "SUBMITTED"
|
|
APPROVED = "APPROVED"
|
|
EFFECTIVE = "EFFECTIVE"
|
|
SUPERSEDED = "SUPERSEDED"
|
|
ARCHIVED = "ARCHIVED"
|
|
WITHDRAWN = "WITHDRAWN"
|
|
|
|
|
|
class DocumentVersionSummary(BaseModel):
|
|
id: uuid.UUID
|
|
version_no: str
|
|
status: DocumentVersionStatus
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
|
|
class DocumentVersionRead(BaseModel):
|
|
id: uuid.UUID
|
|
document_id: uuid.UUID
|
|
version_no: str
|
|
parent_version_id: Optional[uuid.UUID] = None
|
|
derived_from_version_id: Optional[uuid.UUID] = None
|
|
status: DocumentVersionStatus
|
|
effective_at: Optional[datetime] = None
|
|
superseded_at: Optional[datetime] = None
|
|
file_uri: str
|
|
file_hash: str
|
|
file_size: int
|
|
mime_type: Optional[str] = None
|
|
change_summary: Optional[str] = None
|
|
created_by: Optional[uuid.UUID] = None
|
|
created_by_user: Optional[UserDisplay] = None
|
|
submitted_at: Optional[datetime] = None
|
|
approved_at: Optional[datetime] = None
|
|
withdrawn_at: Optional[datetime] = None
|
|
created_at: datetime
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|