from __future__ import annotations
from datetime import datetime
from enum import Enum
from typing import List, Optional
from pydantic import BaseModel, Field
class EntryRange(str, Enum):
daily = "daily"
weekly = "weekly"
class ExportFormat(str, Enum):
json = "json"
csv = "csv"
class CreateEntryRequest(BaseModel):
description: str = Field(..., min_length=1)
tags: List[str] = Field(default_factory=list)
class EntryResponse(BaseModel):
id: str
description: str
createdAt: datetime
tags: List[str] = Field(default_factory=list)
summary: str
model_config = {
"from_attributes": True,
}
class CreateEntryResponse(BaseModel):
id: str
createdAt: datetime
summary: str
class SearchEntriesResponse(BaseModel):
items: List[EntryResponse]
class ExportEntriesResponse(BaseModel):
items: List[EntryResponse]
class CreateTagRequest(BaseModel):
name: str = Field(..., min_length=1, max_length=128)
description: Optional[str] = Field(default=None, max_length=255)
class TagResponse(BaseModel):
name: str
description: Optional[str] = None
createdAt: datetime
model_config = {
"from_attributes": True,
}
class TagListResponse(BaseModel):
items: List[TagResponse]
class SummaryItem(BaseModel):
tag: Optional[str]
count: int
class SummaryResponse(BaseModel):
items: List[SummaryItem]
class ReminderStatusResponse(BaseModel):
hasEntryToday: bool