diff --git a/kontor-api/src/apis/base.py b/kontor-api/src/apis/base.py index d580159..66bc23d 100644 --- a/kontor-api/src/apis/base.py +++ b/kontor-api/src/apis/base.py @@ -34,7 +34,7 @@ from src.apis.version1.tysc import ( from src.core.security import get_current_user_from_token from src.apis.version1.user import assignment, permission, profile, token -from src.apis.version1.bookshelf import article +from src.apis.version1.bookshelf import article, publisher, book, author, articleauthor, bookauthor api_router = APIRouter(prefix="/api") api_router.include_router( @@ -169,6 +169,36 @@ api_router.include_router( tags=["bookshelf"], dependencies=[Depends(get_current_user_from_token)], ) +api_router.include_router( + publisher.router, + prefix="/bookshelf", + tags=["bookshelf"], + dependencies=[Depends(get_current_user_from_token)], +) +api_router.include_router( + book.router, + prefix="/bookshelf", + tags=["bookshelf"], + dependencies=[Depends(get_current_user_from_token)], +) +api_router.include_router( + author.router, + prefix="/bookshelf", + tags=["bookshelf"], + dependencies=[Depends(get_current_user_from_token)], +) +api_router.include_router( + articleauthor.router, + prefix="/bookshelf", + tags=["bookshelf"], + dependencies=[Depends(get_current_user_from_token)], +) +api_router.include_router( + bookauthor.router, + prefix="/bookshelf", + tags=["bookshelf"], + dependencies=[Depends(get_current_user_from_token)], +) api_router.include_router( profile.router, prefix="/user", diff --git a/kontor-api/src/apis/version1/bookshelf/articleauthor.py b/kontor-api/src/apis/version1/bookshelf/articleauthor.py new file mode 100644 index 0000000..8ebb982 --- /dev/null +++ b/kontor-api/src/apis/version1/bookshelf/articleauthor.py @@ -0,0 +1,19 @@ +from typing import List + +from fastapi import APIRouter + +from src.db.models.bookshelf import ArticleAuthor +from src.db.session import SessionDep +from src.schema.bookshelf.articleauthor import ArticleAuthorResponse, to_response + +router = APIRouter() + + +@router.get("/articleauthors", response_model=List[ArticleAuthorResponse]) +def get_all_artists(db: SessionDep) -> List[ArticleAuthorResponse]: + results: List[ArticleAuthorResponse] = [] + articleauthors = db.query(ArticleAuthor).all() + for articleauthor in articleauthors: + response = to_response(articleauthor) + results.append(response) + return results diff --git a/kontor-api/src/apis/version1/bookshelf/author.py b/kontor-api/src/apis/version1/bookshelf/author.py new file mode 100644 index 0000000..79f2287 --- /dev/null +++ b/kontor-api/src/apis/version1/bookshelf/author.py @@ -0,0 +1,19 @@ +from typing import List + +from fastapi import APIRouter + +from src.db.models.bookshelf import Author +from src.db.session import SessionDep +from src.schema.bookshelf.author import AuthorResponse, to_response + +router = APIRouter() + + +@router.get("/authors", response_model=List[AuthorResponse]) +def get_all_artists(db: SessionDep) -> List[AuthorResponse]: + results: List[AuthorResponse] = [] + authors = db.query(Author).all() + for author in authors: + response = to_response(author) + results.append(response) + return results diff --git a/kontor-api/src/apis/version1/bookshelf/book.py b/kontor-api/src/apis/version1/bookshelf/book.py new file mode 100644 index 0000000..5c12f16 --- /dev/null +++ b/kontor-api/src/apis/version1/bookshelf/book.py @@ -0,0 +1,19 @@ +from typing import List + +from fastapi import APIRouter + +from src.db.models.bookshelf import Book +from src.db.session import SessionDep +from src.schema.bookshelf.book import BookResponse, to_response + +router = APIRouter() + + +@router.get("/books", response_model=List[BookResponse]) +def get_all_artists(db: SessionDep) -> List[BookResponse]: + results: List[BookResponse] = [] + books = db.query(Book).all() + for book in books: + response = to_response(book) + results.append(response) + return results diff --git a/kontor-api/src/apis/version1/bookshelf/bookauthor.py b/kontor-api/src/apis/version1/bookshelf/bookauthor.py new file mode 100644 index 0000000..8ecc856 --- /dev/null +++ b/kontor-api/src/apis/version1/bookshelf/bookauthor.py @@ -0,0 +1,19 @@ +from typing import List + +from fastapi import APIRouter + +from src.db.models.bookshelf import BookAuthor +from src.db.session import SessionDep +from src.schema.bookshelf.bookauthor import BookAuthorResponse, to_response + +router = APIRouter() + + +@router.get("/bookauthors", response_model=List[BookAuthorResponse]) +def get_all_artists(db: SessionDep) -> List[BookAuthorResponse]: + results: List[BookAuthorResponse] = [] + bookauthors = db.query(BookAuthor).all() + for bookauthor in bookauthors: + response = to_response(bookauthor) + results.append(response) + return results diff --git a/kontor-api/src/apis/version1/bookshelf/publisher.py b/kontor-api/src/apis/version1/bookshelf/publisher.py new file mode 100644 index 0000000..74859ad --- /dev/null +++ b/kontor-api/src/apis/version1/bookshelf/publisher.py @@ -0,0 +1,19 @@ +from typing import List + +from fastapi import APIRouter + +from src.db.models.bookshelf import BookshelfPublisher +from src.db.session import SessionDep +from src.schema.bookshelf.publisher import PublisherResponse, to_response + +router = APIRouter() + + +@router.get("/publishers", response_model=List[PublisherResponse]) +def get_all_artists(db: SessionDep) -> List[PublisherResponse]: + results: List[PublisherResponse] = [] + publishers = db.query(BookshelfPublisher).all() + for publisher in publishers: + response = to_response(publisher) + results.append(response) + return results diff --git a/kontor-api/src/schema/bookshelf/articleauthor.py b/kontor-api/src/schema/bookshelf/articleauthor.py new file mode 100644 index 0000000..622b475 --- /dev/null +++ b/kontor-api/src/schema/bookshelf/articleauthor.py @@ -0,0 +1,25 @@ +from datetime import datetime + +from pydantic import BaseModel + +from src.db.models.bookshelf import ArticleAuthor + + +class ArticleAuthorResponse(BaseModel): + id: str + created_date: datetime + last_modified_date: datetime + version: int + article_id: str + author_id: str + +def to_response(articleauthor: ArticleAuthor) -> ArticleAuthorResponse: + response: ArticleAuthorResponse = ArticleAuthorResponse( + id=articleauthor.id, + created_date=articleauthor.created_date, + last_modified_date=articleauthor.last_modified_date, + version=articleauthor.version, + article_id=articleauthor.article_id, + author_id=articleauthor.author_id + ) + return response diff --git a/kontor-api/src/schema/bookshelf/author.py b/kontor-api/src/schema/bookshelf/author.py new file mode 100644 index 0000000..32ca13a --- /dev/null +++ b/kontor-api/src/schema/bookshelf/author.py @@ -0,0 +1,25 @@ +from datetime import datetime + +from pydantic import BaseModel + +from src.db.models.bookshelf import Author + + +class AuthorResponse(BaseModel): + id: str + created_date: datetime + last_modified_date: datetime + version: int + first_name: str + last_name: str + +def to_response(author: Author) -> AuthorResponse: + response: AuthorResponse = AuthorResponse( + id=author.id, + created_date=author.created_date, + last_modified_date=author.last_modified_date, + version=author.version, + first_name=author.first_name, + last_name=author.last_name + ) + return response diff --git a/kontor-api/src/schema/bookshelf/book.py b/kontor-api/src/schema/bookshelf/book.py new file mode 100644 index 0000000..355d56c --- /dev/null +++ b/kontor-api/src/schema/bookshelf/book.py @@ -0,0 +1,29 @@ +from datetime import datetime + +from pydantic import BaseModel + +from src.db.models.bookshelf import Book + + +class BookResponse(BaseModel): + id: str + created_date: datetime + last_modified_date: datetime + version: int + isbn: str + title: str + year: int + publisher_id: str + +def to_response(book: Book) -> BookResponse: + response: BookResponse = BookResponse( + id=book.id, + created_date=book.created_date, + last_modified_date=book.last_modified_date, + version=book.version, + isbn=book.isbn, + title=book.title, + year=book.year, + publisher_id=book.publisher_id + ) + return response diff --git a/kontor-api/src/schema/bookshelf/bookauthor.py b/kontor-api/src/schema/bookshelf/bookauthor.py new file mode 100644 index 0000000..a92606d --- /dev/null +++ b/kontor-api/src/schema/bookshelf/bookauthor.py @@ -0,0 +1,25 @@ +from datetime import datetime + +from pydantic import BaseModel + +from src.db.models.bookshelf import BookAuthor + + +class BookAuthorResponse(BaseModel): + id: str + created_date: datetime + last_modified_date: datetime + version: int + author_id: str + book_id: str + +def to_response(bookauthor: BookAuthor) -> BookAuthorResponse: + response: BookAuthorResponse = BookAuthorResponse( + id=bookauthor.id, + created_date=bookauthor.created_date, + last_modified_date=bookauthor.last_modified_date, + version=bookauthor.version, + author_id=bookauthor.author_id, + book_id=bookauthor.book_id + ) + return response diff --git a/kontor-api/src/schema/bookshelf/publisher.py b/kontor-api/src/schema/bookshelf/publisher.py new file mode 100644 index 0000000..51292e1 --- /dev/null +++ b/kontor-api/src/schema/bookshelf/publisher.py @@ -0,0 +1,23 @@ +from datetime import datetime + +from pydantic import BaseModel + +from src.db.models.bookshelf import BookshelfPublisher + + +class PublisherResponse(BaseModel): + id: str + created_date: datetime + last_modified_date: datetime + version: int + name: str + +def to_response(publisher: BookshelfPublisher) -> PublisherResponse: + response: PublisherResponse = PublisherResponse( + id=publisher.id, + created_date=publisher.created_date, + last_modified_date=publisher.last_modified_date, + version=publisher.version, + name=publisher.name + ) + return response