-
Notifications
You must be signed in to change notification settings - Fork 4
/
db.py
69 lines (53 loc) · 1.56 KB
/
db.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
from tinydb import TinyDB, Query
import os
import uuid
import base64
from datetime import datetime, timezone
DB_LOCATION = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'db.json')
db = TinyDB(DB_LOCATION)
Creation = Query()
def _get_now():
return str(datetime.now(timezone.utc).isoformat())
def create_request_token():
key = str(uuid.uuid4())
d = str(_get_now())
entry = {
'key': key,
'status': 'pending',
'token_addr': None,
'token_abi': None,
'created': d,
'updated': d,
'version': 0
}
print('create request token: ' + key)
db.insert(entry)
return entry
def has_token(key):
res = db.search(Creation.key == key)
return len(res) > 0
def get_token(key):
res = db.search(Creation.key == key)
if len(res) > 0:
return res[0]
else:
return None
def update_token(key, status=None, token_addr=None, token_abi=None):
results = db.search(Creation.key == key)
if results:
token = results[0]
change = False
if status:
token['status'] = status
change = True
if token_addr:
token['token_addr'] = token_addr
change = True
if token_abi:
token['token_abi'] = base64.b64encode(token_abi.encode()).decode('utf-8')
change = True
if change:
token['updated'] = _get_now()
token['version'] = int(token['version']) + 1
print('updated request token: ' + key)
db.update(token, Creation.key == key)