| 84 | |
| 85 | |
| 86 | class DB(object): |
| 87 | |
| 88 | def __init__(self, plugin): |
| 89 | self.plugin = plugin |
| 90 | |
| 91 | def store(self, key, value): |
| 92 | """ |
| 93 | Saves a value persistently to the database |
| 94 | """ |
| 95 | entry = json.dumps(value, ensure_ascii=False).encode('base64') |
| 96 | self.plugin.pyload.db.setStorage(self.plugin.classname, key, entry) |
| 97 | |
| 98 | def retrieve(self, key=None, default=None): |
| 99 | """ |
| 100 | Retrieves saved value or dict of all saved entries if key is None |
| 101 | """ |
| 102 | entry = self.plugin.pyload.db.getStorage(self.plugin.classname, key) |
| 103 | |
| 104 | if key: |
| 105 | if entry is None: |
| 106 | value = default |
| 107 | else: |
| 108 | value = json.loads(entry.decode('base64')) |
| 109 | else: |
| 110 | if not entry: |
| 111 | value = default |
| 112 | else: |
| 113 | value = dict((k, json.loads(v.decode('base64'))) |
| 114 | for k, v in value.items()) |
| 115 | |
| 116 | return value |
| 117 | |
| 118 | def delete(self, key): |
| 119 | """ |
| 120 | Delete entry in db |
| 121 | """ |
| 122 | self.plugin.pyload.db.delStorage(self.plugin.classname, key) |
| 123 | self.plugin.pyload.db.commit() |
| 124 | |
| 125 | |
| 126 | class Expose(object): |