-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
53 lines (39 loc) · 1.26 KB
/
main.py
File metadata and controls
53 lines (39 loc) · 1.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import uvicorn
import os
from fastapi import FastAPI
from fastapi_sqlalchemy import DBSessionMiddleware, db
from dotenv import load_dotenv
from schema import Book as SchemaBook
from schema import Author as SchemaAuthor
from models import Book
from models import Book as ModelBook
from models import Author
from models import Author as ModelAuthor
load_dotenv(".env")
app = FastAPI()
app.add_middleware(DBSessionMiddleware, db_url=os.environ["DATABASE_URL"])
@app.get("/")
async def root():
return {"message": "Hello World!!!"}
@app.post("/add-book/", response_model=SchemaBook)
def add_book(book: SchemaBook):
db_book = ModelBook(title=book.title, rating=book.rating, author_id=book.author_id)
db.session.add(db_book)
db.session.commit()
return db_book
@app.post("/add-author/", response_model=SchemaAuthor)
def add_author(author: SchemaAuthor):
db_author = ModelAuthor(name=author.name, age=author.age)
db.session.add(db_author)
db.session.commit()
return db_author
@app.get("/books/")
def get_books():
books = db.session.query(Book).all()
return books
@app.get("/authors/")
def get_books():
authors = db.session.query(Author).all()
return authors
#if __name__ == "__main__":
# uvicorn.run(app, host="0.0.0.0", port=8000)