change schema
This commit is contained in:
@@ -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 = []
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user