DocDoeAI / app /schemas /source.py
asnannp's picture
deploy: sync backend to Space root (learn-lesson HF cache fix)
6515ef9
Raw
History Blame Contribute Delete
1.9 kB
from __future__ import annotations
from datetime import datetime
from typing import Literal
from pydantic import BaseModel, ConfigDict, Field
SourceType = Literal[
"pdf",
"image",
"syllabus_text",
"chapter_text",
"pyq_paper",
"notes",
"link",
]
MAX_SOURCE_TITLE_CHARS = 240
MAX_SOURCE_TEXT_CHARS = 200_000
MAX_SOURCE_METADATA_CHARS = 120
class SourceTextCreate(BaseModel):
title: str = Field(min_length=1, max_length=MAX_SOURCE_TITLE_CHARS)
text: str = Field(min_length=1, max_length=MAX_SOURCE_TEXT_CHARS)
source_type: SourceType = "syllabus_text"
subject: str | None = Field(default=None, max_length=MAX_SOURCE_METADATA_CHARS)
chapter: str | None = Field(default=None, max_length=MAX_SOURCE_METADATA_CHARS)
syllabus: str | None = Field(default=None, max_length=MAX_SOURCE_METADATA_CHARS)
class SourceUpdate(BaseModel):
title: str | None = Field(default=None, min_length=1, max_length=MAX_SOURCE_TITLE_CHARS)
text: str | None = Field(default=None, min_length=1, max_length=MAX_SOURCE_TEXT_CHARS)
subject: str | None = Field(default=None, max_length=MAX_SOURCE_METADATA_CHARS)
chapter: str | None = Field(default=None, max_length=MAX_SOURCE_METADATA_CHARS)
syllabus: str | None = Field(default=None, max_length=MAX_SOURCE_METADATA_CHARS)
class SourceRead(BaseModel):
id: str
user_id: str
title: str
source_type: str
status: str
file_name: str | None = None
file_type: str | None = None
subject: str | None = None
chapter: str | None = None
syllabus: str | None = None
word_count: int = 0
chunk_count: int = 0
preview_text: str = ""
extraction_error: str | None = None
created_at: datetime
updated_at: datetime
model_config = ConfigDict(from_attributes=True)
class SourceList(BaseModel):
sources: list[SourceRead] = Field(default_factory=list)