Source code for lalandre_core.models.subdivisions

"""Pydantic model for hierarchical subdivisions inside one act."""

from datetime import datetime
from typing import Optional

from pydantic import BaseModel, ConfigDict, Field

from .types import SubdivisionType


[docs] class Subdivisions(BaseModel): """Represent one structured subdivision extracted from an act.""" model_config = ConfigDict(from_attributes=True) id: Optional[int] = Field(default=None, description="Primary key") act_id: int = Field(..., description="Foreign key to acts") version_id: Optional[int] = Field(default=None, description="Foreign key to versions") parent_id: Optional[int] = Field(default=None, description="Parent subdivision ID") subdivision_type: SubdivisionType = Field(..., description="Type of subdivision") number: Optional[str] = Field(default=None, max_length=50, description="Subdivision number") title: Optional[str] = Field(default=None, description="Title") content: str = Field(..., description="Content text") content_hash: Optional[str] = Field( default=None, max_length=64, description="SHA-256 hash of content for change detection" ) sequence_order: int = Field(..., gt=0, description="Sequence order") hierarchy_path: str = Field(..., description="Hierarchy path") depth: int = Field(default=0, ge=0, description="Depth in hierarchy") created_at: Optional[datetime] = Field(default=None, description="Creation timestamp")