summaryrefslogtreecommitdiffstats
path: root/module/database
diff options
context:
space:
mode:
Diffstat (limited to 'module/database')
-rw-r--r--module/database/DatabaseBackend.py34
-rw-r--r--module/database/FileDatabase.py38
2 files changed, 28 insertions, 44 deletions
diff --git a/module/database/DatabaseBackend.py b/module/database/DatabaseBackend.py
index 6373120ff..516aa981f 100644
--- a/module/database/DatabaseBackend.py
+++ b/module/database/DatabaseBackend.py
@@ -301,13 +301,10 @@ class DatabaseBackend(Thread):
self.c.execute(
'CREATE TABLE IF NOT EXISTS "collector" ('
- '"url" TEXT NOT NULL, '
- '"name" TEXT NOT NULL, '
- '"plugin" TEXT DEFAULT "BasePlugin" NOT NULL, '
- '"size" INTEGER DEFAULT 0 NOT NULL, '
- '"status" INTEGER DEFAULT 3 NOT NULL, '
- '"packagename" TEXT DEFAULT "" NOT NULL, '
- 'PRIMARY KEY (url, packagename) ON CONFLICT REPLACE'
+ '"owner" INTEGER NOT NULL, '
+ '"data" TEXT NOT NULL, '
+ 'FOREIGN KEY(owner) REFERENCES users(uid)'
+ 'PRIMARY KEY(owner) ON CONFLICT REPLACE'
') '
)
@@ -322,25 +319,27 @@ class DatabaseBackend(Thread):
self.c.execute(
'CREATE TABLE IF NOT EXISTS "users" ('
- '"id" INTEGER PRIMARY KEY AUTOINCREMENT, '
+ '"uid" INTEGER PRIMARY KEY AUTOINCREMENT, '
'"name" TEXT NOT NULL, '
'"email" TEXT DEFAULT "" NOT NULL, '
'"password" TEXT NOT NULL, '
'"role" INTEGER DEFAULT 0 NOT NULL, '
'"permission" INTEGER DEFAULT 0 NOT NULL, '
'"folder" TEXT DEFAULT "" NOT NULL, '
- '"ratio" INTEGER DEFAULT -1 NOT NULL, '
- '"limit" INTEGER DEFAULT -1 NOT NULL, '
+ '"traffic" INTEGER DEFAULT -1 NOT NULL, '
+ '"dllimit" INTEGER DEFAULT -1 NOT NULL, '
'"template" TEXT DEFAULT "default" NOT NULL, '
- '"user" INTEGER DEFAULT -1 NOT NULL, '
- 'FOREIGN KEY(user) REFERENCES users(id)'
+ '"user" INTEGER DEFAULT -1 NOT NULL, ' # set by trigger to self
+ 'FOREIGN KEY(user) REFERENCES users(uid)'
')'
)
+ self.c.execute('CREATE INDEX IF NOT EXISTS "username_index" ON users(name)')
+
self.c.execute(
'CREATE TRIGGER IF NOT EXISTS "insert_user" AFTER INSERT ON "users"'
'BEGIN '
- 'UPDATE users SET user = new.id '
+ 'UPDATE users SET user = new.uid, folder=new.name '
'WHERE rowid = new.rowid;'
'END'
)
@@ -350,7 +349,7 @@ class DatabaseBackend(Thread):
'"plugin" TEXT NOT NULL, '
'"owner" INTEGER NOT NULL, '
'"configuration" TEXT NOT NULL, '
- 'FOREIGN KEY(owner) REFERENCES users(id), '
+ 'FOREIGN KEY(owner) REFERENCES users(uid), '
'PRIMARY KEY (plugin, owner) ON CONFLICT REPLACE'
')'
)
@@ -359,12 +358,13 @@ class DatabaseBackend(Thread):
'CREATE TABLE IF NOT EXISTS "accounts" ('
'"plugin" TEXT NOT NULL, '
'"loginname" TEXT NOT NULL, '
+ '"owner", INTEGER NOT NULL, '
'"activated" INTEGER DEFAULT 1, '
'"password" TEXT DEFAULT "", '
+ '"shared" INTEGER DEFAULT 0, '
'"options" TEXT DEFAULT "", '
-# '"owner" INTEGER NOT NULL, ' TODO: shared, owner attribute
-# 'FOREIGN KEY(owner) REFERENCES users(id)'
- 'PRIMARY KEY (plugin, loginname) ON CONFLICT REPLACE'
+ 'FOREIGN KEY(owner) REFERENCES users(uid)'
+ 'PRIMARY KEY (plugin, loginname, owner) ON CONFLICT REPLACE'
')'
)
diff --git a/module/database/FileDatabase.py b/module/database/FileDatabase.py
index 19dca84c7..b783d15d9 100644
--- a/module/database/FileDatabase.py
+++ b/module/database/FileDatabase.py
@@ -85,36 +85,20 @@ class FileMethods(DatabaseMethods):
(order, package))
@async
- def addCollector(self, plugin, package, data):
- """ fill collector, data as (name, size, status,[ hash,] url) list """
- if data and len(data[0]) == 4:
- data = [(r[0], r[1], r[2], r[3], plugin, package) for r in data]
- else:
- data = [(r[0], r[1], r[2], r[4], plugin, package) for r in data]
-
- self.c.executemany("INSERT INTO collector(name, size, status, url, plugin, packagename) VALUES (?,?,?,?,?,?)",
- data)
-
- @async
- def deleteCollector(self, package=None, url=None):
- qry = 'DELETE FROM collector'
- if package:
- self.c.execute(qry + " WHERE packagename=?", (package,))
- elif url:
- self.c.execute(qry + " WHERE url=?", (url,))
- else:
- self.c.execute(qry)
+ def saveCollector(self, owner, data):
+ """ simply save the json string to database """
+ self.c.execute("INSERT INTO collector(owner, data) VALUES (?,?)", (owner, data))
@queue
- def getCollector(self, package=None):
- """ get collector data, optionally filtered by package """
- qry = 'SELECT url, name, plugin, size, status, packagename FROM collector'
- if package:
- self.c.execute(qry + " WHERE packagename=?", (package,))
- else:
- self.c.execute(qry)
+ def retrieveCollector(self, owner):
+ """ retrieve the saved string """
+ self.c.execute('SELECT data FROM collector owner=?', (owner,))
+ return self.c.fetchone()[0]
- return [LinkStatus(*r) for r in self.c]
+ @async
+ def deleteCollector(self, owner):
+ """ drop saved user collector """
+ self.c.execute('DELETE FROM collector WHERE owner=?', (owner,))
@queue
def getAllFiles(self, package=None, search=None, unfinished=False):