56 lines
953 B
Python
56 lines
953 B
Python
from pydantic import BaseModel
|
|
from datetime import datetime
|
|
|
|
|
|
class BookOut(BaseModel):
|
|
id: str
|
|
filename: str
|
|
title: str | None
|
|
author: str | None
|
|
language: str
|
|
char_count: int
|
|
status: str
|
|
created_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class BookDetailOut(BookOut):
|
|
chapter_count: int = 0
|
|
segment_count: int = 0
|
|
|
|
|
|
class ChapterOut(BaseModel):
|
|
id: str
|
|
book_id: str
|
|
order_idx: int
|
|
title: str | None
|
|
level: int
|
|
heading_path: str | None
|
|
cfi_start: str | None
|
|
cfi_end: str | None
|
|
char_count: int
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class SegmentOut(BaseModel):
|
|
id: str
|
|
chapter_id: str
|
|
book_id: str
|
|
order_idx: int
|
|
text: str
|
|
char_count: int
|
|
cfi: str | None
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class ParseStatus(BaseModel):
|
|
book_id: str
|
|
status: str
|
|
title: str | None
|
|
char_count: int |