-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdatabase.py
More file actions
79 lines (65 loc) · 2.08 KB
/
database.py
File metadata and controls
79 lines (65 loc) · 2.08 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
import route
import math
def insert_blank_toilet(collection, location, genders, facilities):
new_toilet = {
'location': location,
'quality': 0.0,
'reviews': 0,
'genders': genders,
'toilet': facilities[0],
'urinal': facilities[1],
'sink': facilities[2],
}
collection.insert_one(new_toilet)
def insert_toilet(collection, location, quality, genders, facilities):
new_toilet = {
'location': location,
'quality': quality,
'reviews': 1,
'genders': genders,
'toilet': facilities[0],
'urinal': facilities[1],
'sink': facilities[2],
}
collection.insert_one(new_toilet)
def edit_location(collection, tid, new_location, genders, facilities):
collection.update_one({'_id': tid},
{ "$set": {
'location': new_location,
'genders': genders,
'toilet': facilities[0],
'urinal': facilities[1],
'sink': facilities[2],
}
})
def add_review(collection, tid, quality):
toilet = collection.find_one({'toiletId': int(tid)})
q = toilet['quality']
r = toilet['reviews']
toilet['quality'] = (q * r + quality) / (r + 1)
toilet['reviews'] += 1
collection.replace_one({'toiletId': tid}, toilet)
def find_closest_toilet(collection, location):
min_length = math.inf
min_route = []
for document in collection.find({}):
coords = (float(document['location'][0]), float(document['location'][1]))
r, r_length = route.fastest_route((location[0],location[1]), coords)
print(r_length)
if r_length < min_length:
min_length = r_length
min_route = r
return min_route
def read_locations(coll):
f=open("data.txt", "r")
for line in f:
l = line[:-1].split(",")
insert_blank_toilet(
coll,
l,
['True', 'True', 'null'],
['2', '2', 'sink'],
)
def get_id_from_location(coll, locat):
t = collection.find_one({'location': locat})
return t['toiletid']