Started adding database logic. Can now add book to shelf and get list of books that are checked in.
This commit is contained in:
63
main.py
63
main.py
@@ -1,6 +1,38 @@
|
||||
from fastapi import FastAPI, Form
|
||||
from isbnlib import meta
|
||||
from sqlalchemy import create_engine, Column, Integer, String, TEXT
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
|
||||
# Declare Base and setup tables
|
||||
Base = declarative_base()
|
||||
|
||||
|
||||
class User(Base):
|
||||
__tablename__ = 'User'
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
Username = Column(String(50))
|
||||
FirstName = Column(String(50))
|
||||
LastName = Column(String(50))
|
||||
Email = Column(String(50))
|
||||
|
||||
|
||||
class Book(Base):
|
||||
__tablename__ = 'Book'
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
userid = Column(Integer)
|
||||
Title = Column(TEXT)
|
||||
Author = Column(TEXT)
|
||||
|
||||
|
||||
# Connect to database and establish a session
|
||||
engine = create_engine('mysql+pymysql://library:jdSCAd6KEqfbpzh9NT4x@db.dandembinski.com:3306/Library')
|
||||
engine.connect()
|
||||
|
||||
Session = sessionmaker(bind=engine)
|
||||
session = Session()
|
||||
|
||||
# Initialize FastAPI and setup routes
|
||||
app = FastAPI()
|
||||
|
||||
|
||||
@@ -9,17 +41,36 @@ async def root():
|
||||
return {"message": "Hello World"}
|
||||
|
||||
|
||||
@app.post('/checkin/{isbn}')
|
||||
async def checkin(isbn):
|
||||
return{"Checked in": isbn}
|
||||
@app.post('/checkin/')
|
||||
async def checkin(isbn: str = Form(...)):
|
||||
info = await getMeta(isbn)
|
||||
session.add(Book(userid=1, Title=info['Title'], Author=info['Authors']))
|
||||
session.commit()
|
||||
return {"Checked in": info['Title']}
|
||||
|
||||
|
||||
@app.get('/checkout/{isbn}')
|
||||
async def checkout(isbn):
|
||||
return{"Checked Out": isbn}
|
||||
async def checkout(isbn):
|
||||
return {"Checked Out": isbn}
|
||||
|
||||
|
||||
@app.get('/getbooks/{userid}')
|
||||
async def getbooks(userid):
|
||||
books = []
|
||||
result = session.query(Book).filter(Book.userid == userid)
|
||||
|
||||
for each in result:
|
||||
books.append(each)
|
||||
|
||||
return books
|
||||
|
||||
|
||||
@app.post('/lookup')
|
||||
async def lookup(isbn: str = Form(...)):
|
||||
info = await getMeta(isbn)
|
||||
return {"Title": info['Title']}
|
||||
|
||||
|
||||
async def getMeta(isbn):
|
||||
info = meta(isbn, service='wiki')
|
||||
return{"Title": info['Title']}
|
||||
return info
|
||||
|
||||
Reference in New Issue
Block a user