Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. import json
  2. from constants import DB_FILE
  3.  
  4.  
  5. class Database:
  6. def __init__(self):
  7. self.values = {}
  8. self.file_name = DB_FILE
  9.  
  10. def __getitem__(self, info):
  11. if type(info) is tuple:
  12. key, default = info
  13. else:
  14. key = info
  15. default = Database()
  16.  
  17. if key not in self.values:
  18. self.values[key] = default
  19.  
  20. return self.values[key]
  21.  
  22. def __setitem__(self, key, value):
  23. if type(key) is tuple:
  24. key = key[0]
  25.  
  26. self.values[key] = value
  27.  
  28. def pack(self):
  29. packed = {}
  30.  
  31. for key, value in self.values.items():
  32. if type(value) is Database:
  33. packed[key] = value.pack()
  34. else:
  35. packed[key] = value
  36.  
  37. return packed
  38.  
  39. def unpack(self, values):
  40. self.values = {}
  41.  
  42. for key, value in values.items():
  43. if type(value) is dict:
  44. self.values[key] = Database()
  45. self.values[key].unpack(value)
  46. else:
  47. self.values[key] = value
  48.  
  49. def save(self):
  50. json.dump(self.pack(), open(self.file_name, 'w'), indent=2)
  51.  
  52. def load(self):
  53. try:
  54. values = json.load(open(self.file_name, 'r'))
  55. self.unpack(values)
  56. except:
  57. values = {}
  58.  
  59. def __str__(self):
  60. return json.dumps(self.pack())
  61.  
  62. def __repr__(self):
  63. return str(self.pack())
  64.  
  65.  
  66. database = Database()
  67. database.load()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement