from datetime import datetime
from typing import Optional
from uuid import UUID
from pydantic import BaseModel
from shared.abstractions.graph import Community, Entity, Relationship
from shared.api.models.base import PaginatedR2RResult, R2RResults
WrappedEntityResponse = R2RResults[Entity]
WrappedEntitiesResponse = PaginatedR2RResult[list[Entity]]
WrappedRelationshipResponse = R2RResults[Relationship]
WrappedRelationshipsResponse = PaginatedR2RResult[list[Relationship]]
WrappedCommunityResponse = R2RResults[Community]
WrappedCommunitiesResponse = PaginatedR2RResult[list[Community]]
class GraphResponse(BaseModel):
id: UUID
collection_id: UUID
name: str
description: Optional[str]
status: str
created_at: datetime
updated_at: datetime
document_ids: list[UUID]
# Graph Responses
WrappedGraphResponse = R2RResults[GraphResponse]
WrappedGraphsResponse = PaginatedR2RResult[list[GraphResponse]]