62 lines
1.2 KiB
Python
62 lines
1.2 KiB
Python
|
|
import uuid
|
||
|
|
from datetime import datetime
|
||
|
|
|
||
|
|
from pydantic import BaseModel, ConfigDict
|
||
|
|
|
||
|
|
|
||
|
|
class DomainCreate(BaseModel):
|
||
|
|
slug: str
|
||
|
|
name: str
|
||
|
|
description: str | None = None
|
||
|
|
|
||
|
|
|
||
|
|
class DomainUpdate(BaseModel):
|
||
|
|
name: str | None = None
|
||
|
|
description: str | None = None
|
||
|
|
status: str | None = None
|
||
|
|
|
||
|
|
|
||
|
|
class DomainRename(BaseModel):
|
||
|
|
new_slug: str
|
||
|
|
new_name: str
|
||
|
|
|
||
|
|
|
||
|
|
class RepoStub(BaseModel):
|
||
|
|
model_config = ConfigDict(from_attributes=True)
|
||
|
|
id: uuid.UUID
|
||
|
|
slug: str
|
||
|
|
name: str
|
||
|
|
local_path: str | None = None
|
||
|
|
remote_url: str | None = None
|
||
|
|
status: str
|
||
|
|
|
||
|
|
|
||
|
|
class DomainRead(BaseModel):
|
||
|
|
model_config = ConfigDict(from_attributes=True)
|
||
|
|
id: uuid.UUID
|
||
|
|
slug: str
|
||
|
|
name: str
|
||
|
|
description: str | None = None
|
||
|
|
status: str
|
||
|
|
created_at: datetime
|
||
|
|
updated_at: datetime
|
||
|
|
|
||
|
|
|
||
|
|
class DomainDetail(DomainRead):
|
||
|
|
"""Domain with entity counts and repo list."""
|
||
|
|
topic_count: int = 0
|
||
|
|
workstream_count: int = 0
|
||
|
|
ep_count: int = 0
|
||
|
|
td_count: int = 0
|
||
|
|
repos: list[RepoStub] = []
|
||
|
|
|
||
|
|
|
||
|
|
class DomainSummary(BaseModel):
|
||
|
|
"""Lightweight domain stats for the state summary."""
|
||
|
|
slug: str
|
||
|
|
name: str
|
||
|
|
repo_count: int = 0
|
||
|
|
active_workstream_count: int = 0
|
||
|
|
ep_count: int = 0
|
||
|
|
td_count: int = 0
|