dokumentation.py

Code Hygiene Score: 95

Keine Issues gefunden.

Dependencies 9

Klassen 2

Code

"""Domain Entities für MCP-Docs Server."""

from dataclasses import dataclass, field
from datetime import datetime
from enum import Enum
from typing import Any, Dict, Optional


class DocStatus(str, Enum):
    """Dokumentations-Status-Werte."""

    DRAFT = "draft"
    PUBLISHED = "published"
    ARCHIVED = "archived"


@dataclass
class Dokumentation:
    """Dokumentation-Entity für Datenbank."""

    id: Optional[int] = None
    parent_id: Optional[int] = None
    slug: str = ""
    path: str = ""
    title: str = ""
    description: Optional[str] = None
    content: str = ""
    status: DocStatus = DocStatus.DRAFT
    sort_order: int = 0
    depth: int = 0
    created_at: datetime = field(default_factory=datetime.now)
    updated_at: datetime = field(default_factory=datetime.now)

    def to_dict(self) -> Dict[str, Any]:
        """Vollständige Darstellung."""
        return {
            "id": self.id,
            "parent_id": self.parent_id,
            "slug": self.slug,
            "path": self.path,
            "title": self.title,
            "description": self.description,
            "content": self.content,
            "status": (
                self.status.value if isinstance(self.status, DocStatus) else self.status
            ),
            "sort_order": self.sort_order,
            "depth": self.depth,
            "created_at": self.created_at.isoformat() if self.created_at else None,
            "updated_at": self.updated_at.isoformat() if self.updated_at else None,
        }

    def to_dict_compact(self) -> Dict[str, Any]:
        """Kompakte Darstellung für Listen (Token-sparend, ohne content)."""
        return {
            "id": self.id,
            "parent_id": self.parent_id,
            "path": self.path,
            "title": self.title,
            "status": (
                self.status.value if isinstance(self.status, DocStatus) else self.status
            ),
            "depth": self.depth,
        }
← Übersicht Graph