163 lines
3.8 KiB
Python
163 lines
3.8 KiB
Python
import uuid
|
|
import time
|
|
|
|
class LocalDB:
|
|
def __init__(self):
|
|
self.users = {}
|
|
self.categories = {}
|
|
self.records = {}
|
|
|
|
def reset(self):
|
|
for k, v in list(self.users.items()):
|
|
if v == "test1":
|
|
del self.users[k]
|
|
|
|
for k, v in list(self.categories.items()):
|
|
if v == "test2":
|
|
del self.categories[k]
|
|
|
|
def get_users(self):
|
|
return self.users
|
|
|
|
def get_user(self, uid):
|
|
if uid in self.users:
|
|
return {
|
|
'uuid': uid,
|
|
'name': self.users[uid]
|
|
}
|
|
else:
|
|
return {}
|
|
|
|
def add_user(self, name):
|
|
if not name:
|
|
return {}
|
|
|
|
if name in set(self.users.values()):
|
|
return {}
|
|
|
|
new_uuid = uuid.uuid4().hex
|
|
self.users[new_uuid] = name
|
|
return {
|
|
'uuid': new_uuid,
|
|
'name': name
|
|
}
|
|
|
|
def del_user(self, uid):
|
|
if uid in self.users:
|
|
name = self.users[uid]
|
|
del self.users[uid]
|
|
return {
|
|
'uuid': uid,
|
|
'name': name
|
|
}
|
|
else:
|
|
return {}
|
|
|
|
def get_category(self, uid):
|
|
if uid in self.categories:
|
|
return {
|
|
'uuid': uid,
|
|
'name': self.categories[uid]
|
|
}
|
|
else:
|
|
return {}
|
|
|
|
def add_category(self, name):
|
|
if not name:
|
|
return {}
|
|
|
|
if name in set(self.categories.values()):
|
|
return {}
|
|
|
|
new_uuid = uuid.uuid4().hex
|
|
self.categories[new_uuid] = name
|
|
return {
|
|
'uuid': new_uuid,
|
|
'name': name
|
|
}
|
|
|
|
def del_category(self, uid):
|
|
if uid in self.categories:
|
|
name = self.categories[uid]
|
|
del self.categories[uid]
|
|
return {
|
|
'uuid': uid,
|
|
'name': name
|
|
}
|
|
else:
|
|
return {}
|
|
|
|
def get_record(self, uid):
|
|
if uid in self.records:
|
|
r = self.records[uid]
|
|
|
|
return {
|
|
'uuid': uid,
|
|
'user_id': r['user_id'],
|
|
'cat_id': r['cat_id'],
|
|
'date': r['date'],
|
|
'amount': r['amount']
|
|
}
|
|
else:
|
|
return {}
|
|
|
|
def filter_records(self, filters):
|
|
results = []
|
|
|
|
for k, v in self.records.items():
|
|
if 'user_id' in filters and v['user_id'] != filters['user_id']:
|
|
continue
|
|
|
|
if 'cat_id' in filters and v['cat_id'] != filters['cat_id']:
|
|
continue
|
|
|
|
results.append({
|
|
'uuid': k,
|
|
'user_id': v['user_id'],
|
|
'cat_id': v['cat_id'],
|
|
'date': v['date'],
|
|
'amount': v['amount']
|
|
})
|
|
|
|
return results
|
|
|
|
def add_record(self, user_id, cat_id, amount):
|
|
if user_id not in self.users:
|
|
return {}
|
|
|
|
if cat_id not in self.categories:
|
|
return {}
|
|
|
|
new_uuid = uuid.uuid4().hex
|
|
|
|
self.records[new_uuid] = {
|
|
'user_id': user_id,
|
|
'cat_id': cat_id,
|
|
'date': time.time(),
|
|
'amount': amount
|
|
}
|
|
|
|
return {
|
|
'uuid': new_uuid,
|
|
'user_id': user_id,
|
|
'cat_id': cat_id,
|
|
'date': time.time(),
|
|
'amount': amount
|
|
}
|
|
|
|
def del_record(self, uid):
|
|
if uid in self.records:
|
|
r = self.records[uid]
|
|
|
|
del self.records[uid]
|
|
|
|
return {
|
|
'uuid': uid,
|
|
'user_id': r['user_id'],
|
|
'cat_id': r['cat_id'],
|
|
'date': r['date'],
|
|
'amount': r['amount']
|
|
}
|
|
else:
|
|
return {}
|