-
Notifications
You must be signed in to change notification settings - Fork 0
/
CRUDmodule.py
87 lines (75 loc) · 3.02 KB
/
CRUDmodule.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
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
# This module initiates the MongoClient authentication, and
# defines the Create(), Read(), Update(), and Delete() and handles possible errors
# READ() is used in the DB Dashboard in order to populate Database data
# CREATE(), UPDATE(), and DELETE() can only be run from the command line locally in order to confirm user authentication to alter database records
from pymongo import MongoClient
from bson.objectid import ObjectId
from bson.json_util import dumps
class AnimalShelter(object):
""" CRUD operations for Animal collection in MongoDB """
def __init__(self, username, password):
# Initializing the MongoClient
self.client = MongoClient('mongodb://' + username + ":" + password + '@localhost:27017')
self.database = self.client['AAC']
""" CREATE """
def create(self, data):
#check parameters are not empty
if data:
result = self.database.animals.insert_one(data)
else:
raise Exception("ERROR: Nothing to save, because data parameter is empty")
#check the record was found
if result:
print("The following data was added to the database: ")
return result
else:
raise Exception("ERROR: Failed to insert document")
""" READ """
def read(self, data):
# data = {key : value}
#check for search parameters (defaults to findAll method, otherwise)
if data:
result = self.database.animals.find(data)
else:
result = self.database.animals.findAll()
#check if any records were found, else push error
if result:
return result
else:
raise Exception("ERROR: No results for chosen search parameter.")
""" UPDATE """
def update(self, data, newData):
#check data parameters are not empty
if data is None:
raise Exception("ERROR: Nothing updated, no search ID specified")
elif newData is None:
raise Exception("ERROR: Nothing updated, no update parameter specified")
else:
result = self.database.animals.findOneAndUpdate(data, { "$set": newData })
#check the record was found
if result:
print("The following record was updated: ")
#returns true
return result
else:
raise Exception("ERROR: Nothing updated, search parameter not found")
#returns false
return result
""" DELETE """
def delete(self, data):
#check data parameter not empty
if data:
result = self.database.animals.delete(data)
else:
raise Exception("ERROR: Nothing to delete")
#check the record was found
if result:
print("Delete Successful")
#returns True
return result
else:
raise Exception("ERROR: Requested record was not found")
#returns False
return result
if __name__=='__main__':
app.run(debug=True)