-
Notifications
You must be signed in to change notification settings - Fork 44
/
Copy pathmain.py
61 lines (43 loc) · 1.43 KB
/
main.py
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
54
55
56
57
58
59
60
61
import os
import uvicorn
from dotenv import load_dotenv
from fastapi import FastAPI
from fastapi_sqlalchemy import DBSessionMiddleware, db
from models import Author
from models import Author as ModelAuthor
from models import Book
from models import Book as ModelBook
from schema import Author as SchemaAuthor
from schema import Book as SchemaBook
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.post("/user/", response_model=SchemaUser)
# def create_user(user: SchemaUser):
# db_user = ModelUser(
# first_name=user.first_name, last_name=user.last_name, age=user.age
# )
# db.session.add(db_user)
# db.session.commit()
# return db_user
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)