wrolpi/modules/docs/schema.py
Roland aefc7b1def
Add Docs module for searching and organizing PDFs and EPUBs
Create a new Docs module that consolidates PDF and eBook handling into a
unified system with subjects and authors support. This replaces the
separate PDF/eBook modelers with a single Doc model backed by an
alembic migration (rename ebook to doc).

Key changes:
- New modules/docs package with models, API, extractors, and lib
- Subject and author metadata extraction with case-insensitive
  normalization for cleaner PDF metadata
- Frontend Docs pages with AuthorsPage, SubjectsPage using
  CollectionTable, and doc card deletion
- Global search integration for subjects and authors
- Generic collection item count support
- Frontend file card metadata adjusted to match collection sort
- Bump yt-dlp version
2026-03-20 14:17:06 -06:00

43 lines
1 KiB
Python

import dataclasses
from typing import Optional
@dataclasses.dataclass
class DocSearchRequest:
search_str: Optional[str] = None
author: Optional[str] = None
subject: Optional[str] = None
language: Optional[str] = None
mimetype: Optional[str] = None
tag_names: Optional[list] = dataclasses.field(default_factory=list)
order_by: Optional[str] = 'published_datetime'
limit: int = 20
offset: int = 0
@dataclasses.dataclass
class DocSearchResponse:
file_groups: list = dataclasses.field(default_factory=list)
totals: dict = dataclasses.field(default_factory=dict)
@dataclasses.dataclass
class DocStatistics:
doc_count: int = 0
epub_count: int = 0
pdf_count: int = 0
other_count: int = 0
total_size: int = 0
author_count: int = 0
subject_count: int = 0
@dataclasses.dataclass
class DocStatisticsResponse:
statistics: dict = dataclasses.field(default_factory=dict)
@dataclasses.dataclass
class DocFileFormatRequest:
name: str = ''
model_tag: str = 'docs'