Update BookProgress model and schemas
Updated book progress model in anticipation of the KOReader sync feature. Renamed properties: - renamed "progress" to "percentage" - renamed "pdf_loc" to "pdf_page" - renamed "epub_loc" to "epub_cfi" New properties: - "epub_xpointer", marks the location of an epub in KOReader - "device", the device type that updated the progress - "device_id", the id of the device that updated the progress
This commit is contained in:
@@ -14,7 +14,11 @@ class BookProgress(BigIntAuditBase):
|
||||
book_id: Mapped[int] = mapped_column(
|
||||
ForeignKey("books.id", ondelete="cascade"), nullable=False
|
||||
)
|
||||
epub_loc: Mapped[Optional[str]]
|
||||
pdf_loc: Mapped[Optional[int]]
|
||||
progress: Mapped[float]
|
||||
|
||||
epub_cfi: Mapped[Optional[str]]
|
||||
epub_xpointer: Mapped[Optional[str]]
|
||||
pdf_page: Mapped[Optional[int]]
|
||||
percentage: Mapped[float]
|
||||
completed: Mapped[Optional[bool]]
|
||||
device: Mapped[Optional[str]] # Device that updated the progress
|
||||
device_id: Mapped[Optional[str]]
|
||||
|
||||
@@ -161,14 +161,20 @@ class BookMetadataUpdate(BaseModel):
|
||||
|
||||
|
||||
class BookProgressCreate(BaseModel):
|
||||
progress: float
|
||||
epub_loc: str | None = None
|
||||
pdf_loc: int | None = None
|
||||
percentage: float
|
||||
epub_cfi: str | None = None
|
||||
epub_xpointer: str | None = None
|
||||
pdf_page: int | None = None
|
||||
completed: bool | None = None
|
||||
device_type: str | None = None
|
||||
device_id: str | None = None
|
||||
|
||||
|
||||
class BookProgressRead(BaseModel):
|
||||
progress: float
|
||||
epub_loc: str | None = None
|
||||
pdf_loc: int | None = None
|
||||
percentage: float
|
||||
epub_cfi: str | None = None
|
||||
epub_xpointer: str | None = None
|
||||
pdf_page: int | None = None
|
||||
completed: bool | None = False
|
||||
device_type: str | None = None
|
||||
device_id: str | None = None
|
||||
|
||||
@@ -79,8 +79,8 @@
|
||||
await fetch(`/api/books/progress/${bookId}`, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({
|
||||
progress: currentProgress,
|
||||
epub_loc: currentLocation,
|
||||
percentage: currentProgress,
|
||||
epub_cfi: currentLocation,
|
||||
completed: currentProgress === 1
|
||||
})
|
||||
});
|
||||
|
||||
@@ -38,9 +38,9 @@
|
||||
: ''}"
|
||||
/>
|
||||
</a>
|
||||
{#if book.progress?.progress && !selected && !darkened}
|
||||
{#if book.progress?.percentage && !selected && !darkened}
|
||||
<Progress
|
||||
value={book.progress.progress}
|
||||
value={book.progress.percentage}
|
||||
max={1}
|
||||
class="mt-[-8px] h-1 rounded {book.progress.completed
|
||||
? '[&>div]:bg-green-600'
|
||||
|
||||
@@ -68,9 +68,9 @@
|
||||
class="h-full w-full overflow-hidden rounded object-cover"
|
||||
/>
|
||||
|
||||
{#if book?.progress?.progress}
|
||||
{#if book?.progress?.percentage}
|
||||
<Progress
|
||||
value={book?.progress.progress}
|
||||
value={book?.progress.percentage}
|
||||
max={1}
|
||||
color={book?.progress.completed ? 'bg-green-600' : 'bg-yellow-500'}
|
||||
class="mt-[-8px] h-2 rounded {book?.progress.completed
|
||||
|
||||
Reference in New Issue
Block a user