forked from pyload/pyload
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathConfigDatabase.py
More file actions
56 lines (42 loc) · 1.55 KB
/
ConfigDatabase.py
File metadata and controls
56 lines (42 loc) · 1.55 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
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from pyload.database import DatabaseMethods, queue, async
class ConfigMethods(DatabaseMethods):
@async
def saveConfig(self, plugin, config, user=None):
if user is None: user = -1
self.c.execute('INSERT INTO settings(plugin, config, user) VALUES(?,?,?)', (plugin, config, user))
@queue
def loadConfig(self, plugin, user=None):
if user is None: user = -1
self.c.execute('SELECT config FROM settings WHERE plugin=? AND user=?', (plugin, user))
r = self.c.fetchone()
return r[0] if r else ""
@async
def deleteConfig(self, plugin, user=None):
if user is None:
self.c.execute('DELETE FROM settings WHERE plugin=?', (plugin, ))
else:
self.c.execute('DELETE FROM settings WHERE plugin=? AND user=?', (plugin, user))
@queue
def loadAllConfigs(self):
self.c.execute('SELECT user, plugin, config FROM settings')
configs = {}
for r in self.c:
if r[0] in configs:
configs[r[0]][r[1]] = r[2]
else:
configs[r[0]] = {r[1]: r[2]}
return configs
@queue
def loadConfigsForUser(self, user=None):
if user is None: user = -1
self.c.execute('SELECT plugin, config FROM settings WHERE user=?', (user,))
configs = {}
for r in self.c:
configs[r[0]] = r[1]
return configs
@async
def clearAllConfigs(self):
self.c.execute('DELETE FROM settings')
ConfigMethods.register()