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")