Skip to content
This repository was archived by the owner on May 16, 2019. It is now read-only.

Commit a6606d0

Browse files
committed
Merge pull request #231 from cpacia/master
Database refactor
2 parents 53959d3 + c67f135 commit a6606d0

File tree

13 files changed

+1120
-885
lines changed

13 files changed

+1120
-885
lines changed

api/restapi.py

Lines changed: 26 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@ def _setContentDispositionAndSend(file_path, extension, content_type):
125125
request.finish()
126126

127127
if "hash" in request.args and len(request.args["hash"][0]) == 40:
128-
if self.db.HashMap().get_file(request.args["hash"][0]) is not None:
129-
image_path = self.db.HashMap().get_file(request.args["hash"][0])
128+
if self.db.filemap.get_file(request.args["hash"][0]) is not None:
129+
image_path = self.db.filemap.get_file(request.args["hash"][0])
130130
else:
131131
image_path = DATA_FOLDER + "cache/" + request.args["hash"][0]
132132
if not os.path.exists(image_path) and "guid" in request.args:
@@ -208,7 +208,7 @@ def get_node(node):
208208
request.write(json.dumps({}))
209209
request.finish()
210210
else:
211-
temp_handle = self.db.ProfileStore().get_temp_handle()
211+
temp_handle = self.db.profile.get_temp_handle()
212212
parse_profile(p, None if temp_handle == "" else temp_handle)
213213
return server.NOT_DONE_YET
214214

@@ -249,7 +249,7 @@ def get_node(node):
249249
request.finish()
250250
self.kserver.resolve(unhexlify(request.args["guid"][0])).addCallback(get_node)
251251
else:
252-
ser = self.db.ListingsStore().get_proto()
252+
ser = self.db.listings.get_proto()
253253
if ser is not None:
254254
l = objects.Listings()
255255
l.ParseFromString(ser)
@@ -289,7 +289,7 @@ def get_node(node):
289289
request.finish()
290290
self.kserver.resolve(unhexlify(request.args["guid"][0])).addCallback(get_node)
291291
else:
292-
ser = self.db.FollowData().get_followers()
292+
ser = self.db.follow.get_followers()
293293
if ser is not None:
294294
f = objects.Followers()
295295
f.ParseFromString(ser)
@@ -330,7 +330,7 @@ def get_node(node):
330330
request.finish()
331331
self.kserver.resolve(unhexlify(request.args["guid"][0])).addCallback(get_node)
332332
else:
333-
ser = self.db.FollowData().get_following()
333+
ser = self.db.follow.get_following()
334334
if ser is not None:
335335
f = objects.Following()
336336
f.ParseFromString(ser)
@@ -503,7 +503,7 @@ def get_node(node):
503503
self.kserver.resolve(unhexlify(request.args["guid"][0])).addCallback(get_node)
504504
else:
505505
try:
506-
with open(self.db.HashMap().get_file(request.args["id"][0]), "r") as filename:
506+
with open(self.db.filemap.get_file(request.args["id"][0]), "r") as filename:
507507
contract = json.loads(filename.read(), object_pairs_hook=OrderedDict)
508508
parse_contract(contract)
509509
except Exception:
@@ -573,7 +573,7 @@ def set_contract(self, request):
573573
def delete_contract(self, request):
574574
try:
575575
if "id" in request.args:
576-
file_path = self.db.HashMap().get_file(request.args["id"][0])
576+
file_path = self.db.filemap.get_file(request.args["id"][0])
577577
with open(file_path, 'r') as filename:
578578
contract = json.load(filename, object_pairs_hook=OrderedDict)
579579
c = Contract(self.db, contract=contract)
@@ -608,9 +608,8 @@ def shutdown(self, request):
608608
request.finish()
609609
return server.NOT_DONE_YET
610610
else:
611-
vendor_store = self.db.VendorStore()
612611
for vendor in self.protocol.vendors.values():
613-
vendor_store.save_vendor(vendor.id.encode("hex"), vendor.getProto().SerializeToString())
612+
self.db.vendors.save_vendor(vendor.id.encode("hex"), vendor.getProto().SerializeToString())
614613
PortMapper().clean_my_mappings(self.kserver.node.port)
615614
self.protocol.shutdown()
616615
reactor.stop()
@@ -734,21 +733,21 @@ def upload_image(self, request):
734733
hash_value = digest(img).encode("hex")
735734
with open(DATA_FOLDER + "store/media/" + hash_value, 'wb') as outfile:
736735
outfile.write(img)
737-
self.db.HashMap().insert(hash_value, DATA_FOLDER + "store/media/" + hash_value)
736+
self.db.filemap.insert(hash_value, DATA_FOLDER + "store/media/" + hash_value)
738737
ret.append(hash_value)
739738
elif "avatar" in request.args:
740739
avi = request.args["avatar"][0].decode("base64")
741740
hash_value = digest(avi).encode("hex")
742741
with open(DATA_FOLDER + "store/avatar", 'wb') as outfile:
743742
outfile.write(avi)
744-
self.db.HashMap().insert(hash_value, DATA_FOLDER + "store/avatar")
743+
self.db.filemap.insert(hash_value, DATA_FOLDER + "store/avatar")
745744
ret.append(hash_value)
746745
elif "header" in request.args:
747746
hdr = request.args["header"][0].decode("base64")
748747
hash_value = digest(hdr).encode("hex")
749748
with open(DATA_FOLDER + "store/header", 'wb') as outfile:
750749
outfile.write(hdr)
751-
self.db.HashMap().insert(hash_value, DATA_FOLDER + "store/header")
750+
self.db.filemap.insert(hash_value, DATA_FOLDER + "store/header")
752751
ret.append(hash_value)
753752
request.write(json.dumps({"success": True, "image_hashes": ret}, indent=4))
754753
request.finish()
@@ -790,7 +789,7 @@ def respond(success):
790789
@authenticated
791790
def set_settings(self, request):
792791
try:
793-
settings = self.db.Settings()
792+
settings = self.db.settings
794793
resolver = RESOLVER if "resolver" not in request.args or request.args["resolver"][0] == "" \
795794
else request.args["resolver"][0]
796795
if self.protocol.testnet:
@@ -831,7 +830,7 @@ def set_settings(self, request):
831830
@GET('^/api/v1/settings')
832831
@authenticated
833832
def get_settings(self, request):
834-
settings = self.db.Settings().get()
833+
settings = self.db.settings.get()
835834
if settings is None:
836835
request.write(json.dumps({}, indent=4))
837836
request.finish()
@@ -861,10 +860,9 @@ def get_settings(self, request):
861860
"network_connection": nat_type
862861
}
863862
mods = []
864-
mods_db = self.db.ModeratorStore()
865863
try:
866864
for guid in json.loads(settings[11]):
867-
info = mods_db.get_moderator(guid)
865+
info = self.db.moderators.get_moderator(guid)
868866
if info is not None:
869867
m = {
870868
"guid": guid,
@@ -913,7 +911,7 @@ def get_routing_table(self, request):
913911
@GET('^/api/v1/get_notifications')
914912
@authenticated
915913
def get_notifications(self, request):
916-
notifications = self.db.NotificationStore().get_notifications()
914+
notifications = self.db.notifications.get_notifications()
917915
limit = int(request.args["limit"][0]) if "limit" in request.args else len(notifications)
918916
notification_list = []
919917
for n in notifications[len(notifications) - limit:]:
@@ -939,7 +937,7 @@ def get_notifications(self, request):
939937
def mark_notification_as_read(self, request):
940938
try:
941939
for notif_id in request.args["id"]:
942-
self.db.NotificationStore().mark_as_read(notif_id)
940+
self.db.notifications.mark_as_read(notif_id)
943941
request.write(json.dumps({"success": True}, indent=4))
944942
request.finish()
945943
return server.NOT_DONE_YET
@@ -965,7 +963,7 @@ def get_response(num):
965963
@GET('^/api/v1/get_chat_messages')
966964
@authenticated
967965
def get_chat_messages(self, request):
968-
messages = self.db.MessageStore().get_messages(request.args["guid"][0], "CHAT")
966+
messages = self.db.messages.get_messages(request.args["guid"][0], "CHAT")
969967
limit = int(request.args["limit"][0]) if "limit" in request.args else len(messages)
970968
start = int(request.args["start"][0]) if "start" in request.args else 0
971969
message_list = []
@@ -988,7 +986,7 @@ def get_chat_messages(self, request):
988986
@GET('^/api/v1/get_chat_conversations')
989987
@authenticated
990988
def get_chat_conversations(self, request):
991-
messages = self.db.MessageStore().get_conversations()
989+
messages = self.db.messages.get_conversations()
992990
request.setHeader('content-type', "application/json")
993991
request.write(str(bleach.clean(json.dumps(messages, indent=4), tags=ALLOWED_TAGS)))
994992
request.finish()
@@ -998,7 +996,7 @@ def get_chat_conversations(self, request):
998996
@authenticated
999997
def mark_chat_message_as_read(self, request):
1000998
try:
1001-
self.db.MessageStore().mark_as_read(request.args["guid"][0])
999+
self.db.messages.mark_as_read(request.args["guid"][0])
10021000
request.write(json.dumps({"success": True}, indent=4))
10031001
request.finish()
10041002
return server.NOT_DONE_YET
@@ -1010,7 +1008,7 @@ def mark_chat_message_as_read(self, request):
10101008
@GET('^/api/v1/get_sales')
10111009
@authenticated
10121010
def get_sales(self, request):
1013-
sales = self.db.Sales().get_all()
1011+
sales = self.db.sales.get_all()
10141012
sales_list = []
10151013
for sale in sales:
10161014
sale_json = {
@@ -1033,7 +1031,7 @@ def get_sales(self, request):
10331031
@GET('^/api/v1/get_purchases')
10341032
@authenticated
10351033
def get_purchases(self, request):
1036-
purchases = self.db.Purchases().get_all()
1034+
purchases = self.db.purchases.get_all()
10371035
purchases_list = []
10381036
for purchase in purchases:
10391037
purchase_json = {
@@ -1212,7 +1210,7 @@ def release_funds(self, request):
12121210
@GET('^/api/v1/get_cases')
12131211
@authenticated
12141212
def get_cases(self, request):
1215-
cases = self.db.Cases().get_all()
1213+
cases = self.db.cases.get_all()
12161214
cases_list = []
12171215
for case in cases:
12181216
purchase_json = {
@@ -1237,7 +1235,7 @@ def get_cases(self, request):
12371235
@authenticated
12381236
def order_messages(self, request):
12391237
message_list = []
1240-
messages = self.db.MessageStore().get_order_messages(request.args["order_id"][0])
1238+
messages = self.db.messages.get_order_messages(request.args["order_id"][0])
12411239
for m in messages:
12421240
if m[0] is not None:
12431241
message_json = {
@@ -1281,10 +1279,10 @@ def get_node(node):
12811279
else:
12821280
ratings = []
12831281
if "contract_id" in request.args and request.args["contract_id"][0] != "":
1284-
for rating in self.db.Ratings().get_listing_ratings(request.args["contract_id"][0]):
1282+
for rating in self.db.ratings.get_listing_ratings(request.args["contract_id"][0]):
12851283
ratings.append(json.loads(rating[0]))
12861284
else:
1287-
for rating in self.db.Ratings().get_all_ratings():
1285+
for rating in self.db.ratings.get_all_ratings():
12881286
ratings.append(json.loads(rating[0]))
12891287
request.setHeader('content-type', "application/json")
12901288
request.write(str(bleach.clean(json.dumps(ratings, indent=4), tags=ALLOWED_TAGS)))

api/ws.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -78,18 +78,19 @@ def handle_response(metadata, node):
7878
self.factory.mserver.get_user_metadata(node).addCallback(handle_response, node)
7979

8080
def get_moderators(self, message_id):
81-
m = self.factory.db.ModeratorStore()
8281

8382
def parse_response(moderators):
8483
if moderators is not None:
85-
m.clear_all()
84+
self.factory.db.moderators.clear_all()
8685

8786
def parse_profile(profile, node):
8887
if profile is not None:
8988
# TODO: should check signatures here before entering in database
90-
m.save_moderator(node.id.encode("hex"), node.pubkey, profile.bitcoin_key.public_key,
91-
profile.bitcoin_key.signature, profile.name, profile.avatar_hash,
92-
profile.moderation_fee, profile.handle, profile.short_description)
89+
self.factory.db.moderators.save_moderator(node.id.encode("hex"), node.pubkey,
90+
profile.bitcoin_key.public_key,
91+
profile.bitcoin_key.signature, profile.name,
92+
profile.avatar_hash, profile.moderation_fee,
93+
profile.handle, profile.short_description)
9394
moderator = {
9495
"id": message_id,
9596
"moderator":
@@ -105,7 +106,7 @@ def parse_profile(profile, node):
105106
}
106107
self.transport.write(str(bleach.clean(json.dumps(moderator, indent=4), tags=ALLOWED_TAGS)))
107108
else:
108-
m.delete_moderator(node.id)
109+
self.factory.db.moderators.delete_moderator(node.id)
109110
for mod in moderators:
110111
try:
111112
val = objects.Value()
@@ -184,9 +185,9 @@ def send_message(self, message_id, guid, handle, message, subject, message_type,
184185

185186
enc_key = nacl.signing.VerifyKey(unhexlify(recipient_key)).to_curve25519_public_key().encode()
186187

187-
self.factory.db.MessageStore().save_message(guid, handle, unhexlify(recipient_key), subject,
188-
message_type.upper(), message, time.time(), "", "", True,
189-
message_id)
188+
self.factory.db.messages.save_message(guid, handle, unhexlify(recipient_key), subject,
189+
message_type.upper(), message, time.time(), "", "", True,
190+
message_id)
190191

191192
def send(node_to_send):
192193
n = node_to_send if node_to_send is not None else Node(unhexlify(guid))
@@ -234,7 +235,7 @@ def parse_results(values):
234235
(n.relayAddress.ip, n.relayAddress.port),
235236
n.natType, n.vendor)
236237
if n.guid == KeyChain(self.factory.db).guid:
237-
proto = self.factory.db.ListingsStore().get_proto()
238+
proto = self.factory.db.listings.get_proto()
238239
l = Listings()
239240
l.ParseFromString(proto)
240241
for listing in l.listing:

0 commit comments

Comments
 (0)