forked from Salisbury-University/biomez-backend
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver2.py
More file actions
107 lines (96 loc) · 3.04 KB
/
server2.py
File metadata and controls
107 lines (96 loc) · 3.04 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
from flask import Flask, request, jsonify
from pymongo import MongoClient
from pymongo.errors import DuplicateKeyError
from bson.objectid import ObjectId
from flask_cors import CORS
import yaml
app = Flask(__name__)
config = yaml.safe_load(open('db.yaml'))
client = MongoClient(config['uri'])
db = client['biomez']
CORS(app)
@app.errorhandler(404)
def resource_not_found(e):
return jsonify(error=str(e)), 404
@app.errorhandler(DuplicateKeyError)
def resource_not_found(e):
return jsonify(error=f"Duplicate key error."), 400
@app.route('/records', methods=['POST', 'GET'])
def data():
# POST record to db
if request.method == 'POST':
body = request.json
articleName = body['articleName']
authorName = body['authorName']
doi = body['doi']
db['records'].insert_one({
"articleName": articleName,
"authorName": authorName,
"doi": doi
})
return jsonify({
'status': 'Record added successfully',
'articleName': articleName,
'authorName': authorName,
'doi': doi
})
# GET record from db
if request.method == 'GET':
allData = db['records'].find()
dataJson = []
for data in allData:
id = data['_id']
articleName = data['articleName']
authorName = data['authorName']
doi = data['doi']
dataDict = {
'_id': str(ObjectId(id)),
'articleName': articleName,
'authorName': authorName,
'doi': doi
}
dataJson.append(dataDict)
print(dataJson)
return jsonify(dataJson)
@app.route('/records/<id>', methods=['GET', 'DELETE', 'PUT'])
def onedata(id):
# GET record by id
if request.method == 'GET':
data = db['records'].find_one({'_id': ObjectId(id)})
id = data['_id']
articleName = data['articleName']
authorName = data['authorName']
doi = data['doi']
dataDict = {
'_id': str(ObjectId(id)),
'articleName': articleName,
'authorName': authorName,
'doi': doi
}
print(dataDict)
return jsonify(dataDict)
# DELETE record
if request.method == 'DELETE':
db['records'].delete_one({'_id': ObjectId(id)})
print('\n # Deletion successful # \n')
return jsonify({'status': 'Record (id: ' + id + ') is deleted!'})
# UPDATE record by id
if request.method == 'PUT':
body = request.json
articleName = body['articleName']
authorName = body['authorName']
doi = body['doi']
db['records'].update_one(
{'_id': ObjectId(id)},
{
"$set": {
"articleName": articleName,
"authorName": authorName,
"doi": doi
}
}
)
return jsonify({'status': 'Record updated successfully'})
if __name__ == '__main__':
app.debug = True
app.run()