Files
library/main.py

77 lines
1.8 KiB
Python

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()
@app.get('/')
async def root():
return {"message": "Hello World"}
@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}
@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 info