Skip to content

Commit 8cd7e30

Browse files
authored
Merge pull request #50 from AdamMcAdamson/develop
Refactor and fix borrower API
2 parents bf89ba2 + 0cdc31b commit 8cd7e30

File tree

3 files changed

+28
-21
lines changed

3 files changed

+28
-21
lines changed

HeliumDB.db

0 Bytes
Binary file not shown.

borrower.py

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import sqlite3 as sql
2+
from flask import request
3+
from flask_restful import Resource
4+
5+
from consts import DB_FILE, SEARCH_PAGE_SIZE, CHECKOUT_LIMIT
6+
7+
class BorrowerCreate(Resource):
8+
9+
def post(self):
10+
args = {'ssn':request.args.get('ssn', ''), 'bname':request.args.get('name', ''), 'address':request.args.get('address', ''), 'phone':request.args.get('phone', 'NULL')}
11+
12+
with sql.connect(DB_FILE) as conn:
13+
conn.row_factory = sql.Row
14+
c = conn.cursor()
15+
16+
# Check for existing SSN and return useful error if it already exists
17+
if c.execute("SELECT * FROM BORROWER WHERE Ssn = :ssn", args).fetchone():
18+
return {"message": "Only one borrower card per person. Ssn must be unique."}, 409
19+
20+
# Create borrower
21+
command = "INSERT INTO BORROWER (Ssn, Bname, Address, Phone) VALUES (:ssn, :bname, :address, :phone);"
22+
c.execute(command, args)
23+
24+
card_id = c.execute("SELECT Card_id FROM BORROWER WHERE Ssn = :ssn", args).fetchone()["Card_id"]
25+
return {"message": "Borrower Successfully Created. Card ID: " + 'ID{:0>6}'.format(str(card_id)) + ".", "card_id_str": 'ID{:0>6}'.format(str(card_id)), "card_id_num": card_id}, 200

main.py

+3-21
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from consts import DB_FILE
77
from book import Search, Checkout, Checkin
88
from fines import FinesAll, FinesUpdate, FinesPayment
9+
from borrower import BorrowerCreate
910

1011
app = Flask(__name__)
1112
api = Api(app)
@@ -24,27 +25,6 @@ def style(path):
2425
def scripts(path):
2526
return send_from_directory('./public/scripts', path)
2627

27-
# @TODO: Move to Own File
28-
@app.route('/borrower/create', methods=['POST'])
29-
def create_borrower():
30-
31-
args = {'ssn':request.args.get('ssn', ''), 'bname':request.args.get('bname', ''), 'address':request.args.get('address', ''), 'phone':request.args.get('phone', 'NULL')}
32-
33-
with sql.connect(DB_FILE) as conn:
34-
conn.row_factory = sql.Row
35-
c = conn.cursor()
36-
37-
# Check for existing SSN and return useful error if it already exists
38-
if c.execute("SELECT * FROM BORROWER WHERE Ssn = :ssn", args).fetchone():
39-
return {"message": "Only one borrower card per person. Ssn must be unique."}, 409
40-
41-
# Create borrower
42-
command = "INSERT INTO BORROWER (Ssn, Bname, Address, Phone) VALUES (:ssn, :bname, :address, :phone);"
43-
c.execute(command, args)
44-
45-
card_id = c.execute("SELECT Card_id FROM BORROWER WHERE Ssn = :ssn", args).fetchone()["Card_id"]
46-
return {"message": "Borrower Successfully Created. Card ID: " + 'ID{:0>6}'.format(str(card_id)) + ".", "card_id_str": 'ID{:0>6}'.format(str(card_id)), "card_id_num": card_id}, 200
47-
4828

4929
# Endpoints
5030
api.add_resource(Search, '/book/search', endpoint='search')
@@ -59,6 +39,8 @@ def create_borrower():
5939

6040
api.add_resource(FinesPayment, '/fines/payment', endpoint='fines_payment')
6141

42+
api.add_resource(BorrowerCreate, '/borrower/create', endpoint='borrower_create')
43+
6244
if __name__ == '__main__':
6345

6446
# DB reset command line argument

0 commit comments

Comments
 (0)