change schema

This commit is contained in:
Thomas Peetz
2025-04-23 22:54:37 +02:00
parent 4709e431b7
commit cb0fa3f728
10 changed files with 69 additions and 62 deletions
+8
View File
@@ -19,6 +19,14 @@ class ComicDetailsResponse(BaseModel):
volumes: List[str]
works: Dict[str, List[str]]
def get_short_info(comic: Comic) -> ComicResponse:
reponse = ComicResponse(
id=comic.id,
title=comic.title,
completed=(comic.completed == 1)
)
return reponse
def get_comic_details(comic: Comic) -> ComicDetailsResponse | None:
volumes = []
+19 -2
View File
@@ -1,3 +1,4 @@
from datetime import datetime
from uuid import UUID
from src.schema.media import MediaFile
@@ -22,7 +23,23 @@ def get_file_details(mediafile: MediaFile) -> MediaFileResponse | None:
file_name=mediafile.file_name,
cloud_link=mediafile.cloud_link,
url=str(mediafile.url),
review=mediafile.review,
should_download=mediafile.should_download)
review=(mediafile.review == 1),
should_download=(mediafile.should_download == 1))
print(f"id: {mediafile.id}: review: {response.review} <- {mediafile.review}")
print(f"id: {mediafile.id}: download: {response.should_download} <- {mediafile.should_download}")
return response
def set_file(model: MediaFileResponse, mediafile: MediaFile) -> None:
mediafile.file_name = model.file_name
mediafile.cloud_link = model.cloud_link
mediafile.url = model.url
mediafile.title = model.title
mediafile.last_modified_date = datetime.now()
if model.review:
mediafile.review = 1
else:
mediafile.review = 0
if model.should_download:
mediafile.should_download = 1
else:
mediafile.should_download = 0
+5 -4
View File
@@ -3,7 +3,7 @@ from typing import List
from fastapi import APIRouter, HTTPException, status
from sqlalchemy import select
from src.models.comics.comic import ComicResponse, ComicDetailsResponse, get_comic_details
from src.models.comics.comic import ComicResponse, ComicDetailsResponse, get_comic_details, get_short_info
from src.models.comics.artist import ArtistCreation, ArtistDetailResponse, ArtistResponse, get_artist_details
from src.routers import SessionDep
from src.schema.comic import Comic, Artist
@@ -16,11 +16,12 @@ router = APIRouter(
@router.get("/comics")
def get_all_comics(db: SessionDep) -> list[ComicResponse]:
results: list[ComicResponse] = []
def get_all_comics(db: SessionDep) -> List[ComicResponse]:
results: List[ComicResponse] = []
comics = db.scalars(select(Comic)).all()
for comic in comics:
results.append(ComicResponse(id=comic.id, title=comic.title, completed=(comic.completed == 1)))
response = get_short_info(comic)
results.append(response)
return results
@router.get("/comics/{comic_id}", response_model=ComicDetailsResponse)
+10 -35
View File
@@ -1,11 +1,10 @@
from datetime import datetime
from typing import List
from uuid import uuid4, UUID
from uuid import UUID
from fastapi import APIRouter, status, HTTPException
from sqlalchemy import select, Sequence
from src.models.media.file import MediaFileResponse, Link, get_file_details
from src.models.media.file import MediaFileResponse, Link, get_file_details, set_file
from src.routers import SessionDep
from src.schema.media import MediaFile
@@ -21,13 +20,7 @@ def update_titles(db: SessionDep) -> list[MediaFileResponse]:
for mediafile in files:
mediafile.update_title()
db.add(mediafile)
response = MediaFileResponse(id=mediafile.id,
title=mediafile.title,
file_name=mediafile.file_name,
cloud_link=mediafile.cloud_link,
url=str(mediafile.url),
review=mediafile.review,
should_download=mediafile.should_download)
response = get_file_details(mediafile)
results.append(response)
db.commit()
return results
@@ -38,19 +31,13 @@ def get_all_files(db: SessionDep, review: bool = False, download: bool = False)
results: list[MediaFileResponse] = []
files: Sequence[MediaFile]
if review:
files = db.query(MediaFile).filter(MediaFile.review == review).all()
files = db.query(MediaFile).filter(MediaFile.review == 1).all()
elif download:
files = db.query(MediaFile).filter(MediaFile.should_download == download).all()
files = db.query(MediaFile).filter(MediaFile.should_download == 1).all()
else:
files = db.scalars(select(MediaFile)).all()
for mediafile in files:
response = MediaFileResponse(id=mediafile.id,
title=mediafile.title,
file_name=mediafile.file_name,
cloud_link=mediafile.cloud_link,
url=str(mediafile.url),
review=mediafile.review,
should_download=mediafile.should_download)
response = get_file_details(mediafile)
results.append(response)
return results
@@ -67,13 +54,7 @@ def update_file(file_id: UUID, db: SessionDep, info: MediaFileResponse) -> Media
mediaFile = db.get(MediaFile, file_id)
if not mediaFile:
raise HTTPException(status_code=404, detail="MediaFile could not be found")
mediaFile.file_name = info.file_name
mediaFile.cloud_link = info.cloud_link
mediaFile.url = info.url
mediaFile.title = info.title
mediaFile.last_modified_date = datetime.now()
mediaFile.review = info.review
mediaFile.should_download = info.should_download
set_file(info, mediaFile)
db.add(mediaFile)
db.commit()
return info
@@ -85,17 +66,11 @@ def add_file(new_link: Link, db: SessionDep) -> MediaFileResponse:
try:
mediaFile: MediaFile = MediaFile()
setattr(mediaFile, "url", new_link.url)
setattr(mediaFile, "review", True)
setattr(mediaFile, "should_download", True)
setattr(mediaFile, "review", 1)
setattr(mediaFile, "should_download", 1)
db.add(mediaFile)
db.commit()
except:
raise HTTPException(status_code=409, detail="Link duplicate")
response = MediaFileResponse(id=uuid4(),
title=mediaFile.title,
file_name=mediaFile.file_name,
cloud_link=mediaFile.cloud_link,
url=new_link.url,
review=mediaFile.review,
should_download=mediaFile.should_download)
response = get_file_details(mediaFile)
return response