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(
|
book_id: Mapped[int] = mapped_column(
|
||||||
ForeignKey("books.id", ondelete="cascade"), nullable=False
|
ForeignKey("books.id", ondelete="cascade"), nullable=False
|
||||||
)
|
)
|
||||||
epub_loc: Mapped[Optional[str]]
|
|
||||||
pdf_loc: Mapped[Optional[int]]
|
epub_cfi: Mapped[Optional[str]]
|
||||||
progress: Mapped[float]
|
epub_xpointer: Mapped[Optional[str]]
|
||||||
|
pdf_page: Mapped[Optional[int]]
|
||||||
|
percentage: Mapped[float]
|
||||||
completed: Mapped[Optional[bool]]
|
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):
|
class BookProgressCreate(BaseModel):
|
||||||
progress: float
|
percentage: float
|
||||||
epub_loc: str | None = None
|
epub_cfi: str | None = None
|
||||||
pdf_loc: int | None = None
|
epub_xpointer: str | None = None
|
||||||
|
pdf_page: int | None = None
|
||||||
completed: bool | None = None
|
completed: bool | None = None
|
||||||
|
device_type: str | None = None
|
||||||
|
device_id: str | None = None
|
||||||
|
|
||||||
|
|
||||||
class BookProgressRead(BaseModel):
|
class BookProgressRead(BaseModel):
|
||||||
progress: float
|
percentage: float
|
||||||
epub_loc: str | None = None
|
epub_cfi: str | None = None
|
||||||
pdf_loc: int | None = None
|
epub_xpointer: str | None = None
|
||||||
|
pdf_page: int | None = None
|
||||||
completed: bool | None = False
|
completed: bool | None = False
|
||||||
|
device_type: str | None = None
|
||||||
|
device_id: str | None = None
|
||||||
|
|||||||
@@ -79,8 +79,8 @@
|
|||||||
await fetch(`/api/books/progress/${bookId}`, {
|
await fetch(`/api/books/progress/${bookId}`, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
progress: currentProgress,
|
percentage: currentProgress,
|
||||||
epub_loc: currentLocation,
|
epub_cfi: currentLocation,
|
||||||
completed: currentProgress === 1
|
completed: currentProgress === 1
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -38,9 +38,9 @@
|
|||||||
: ''}"
|
: ''}"
|
||||||
/>
|
/>
|
||||||
</a>
|
</a>
|
||||||
{#if book.progress?.progress && !selected && !darkened}
|
{#if book.progress?.percentage && !selected && !darkened}
|
||||||
<Progress
|
<Progress
|
||||||
value={book.progress.progress}
|
value={book.progress.percentage}
|
||||||
max={1}
|
max={1}
|
||||||
class="mt-[-8px] h-1 rounded {book.progress.completed
|
class="mt-[-8px] h-1 rounded {book.progress.completed
|
||||||
? '[&>div]:bg-green-600'
|
? '[&>div]:bg-green-600'
|
||||||
|
|||||||
@@ -68,9 +68,9 @@
|
|||||||
class="h-full w-full overflow-hidden rounded object-cover"
|
class="h-full w-full overflow-hidden rounded object-cover"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{#if book?.progress?.progress}
|
{#if book?.progress?.percentage}
|
||||||
<Progress
|
<Progress
|
||||||
value={book?.progress.progress}
|
value={book?.progress.percentage}
|
||||||
max={1}
|
max={1}
|
||||||
color={book?.progress.completed ? 'bg-green-600' : 'bg-yellow-500'}
|
color={book?.progress.completed ? 'bg-green-600' : 'bg-yellow-500'}
|
||||||
class="mt-[-8px] h-2 rounded {book?.progress.completed
|
class="mt-[-8px] h-2 rounded {book?.progress.completed
|
||||||
|
|||||||
Reference in New Issue
Block a user