Example #1
0
from module.database import style
from module.database import DatabaseBackend


class StorageMethods(object):
    @style.queue
    def setStorage(db, identifier, key, value):
        db.c.execute("SELECT id FROM storage WHERE identifier=? AND key=?", (identifier, key))
        if db.c.fetchone() is not None:
            db.c.execute("UPDATE storage SET value=? WHERE identifier=? AND key=?", (value, identifier, key))
        else:
            db.c.execute("INSERT INTO storage (identifier, key, value) VALUES (?, ?, ?)", (identifier, key, value))

    @style.queue
    def getStorage(db, identifier, key=None):
        if key is not None:
            db.c.execute("SELECT value FROM storage WHERE identifier=? AND key=?", (identifier, key))
            row = db.c.fetchone()
            if row is not None:
                return row[0]
        else:
            db.c.execute("SELECT key, value FROM storage WHERE identifier=?", (identifier,))
            return {row[0]: row[1] for row in db.c}

    @style.queue
    def delStorage(db, identifier, key):
        db.c.execute("DELETE FROM storage WHERE identifier=? AND key=?", (identifier, key))


DatabaseBackend.registerSub(StorageMethods)
Example #2
0
# -*- coding: utf-8 -*-

from module.database import queue, async
from module.database import DatabaseBackend


class AccountMethods:
    @queue
    def loadAccounts(db):
        db.c.execute(
            'SELECT plugin, loginname, activated, password, options FROM accounts;'
        )
        return db.c.fetchall()

    @async
    def saveAccounts(db, data):
        db.c.executemany(
            'INSERT INTO accounts(plugin, loginname, activated, password, options) VALUES(?,?,?,?,?)',
            data)

    @async
    def removeAccount(db, plugin, loginname):
        db.c.execute('DELETE FROM accounts WHERE plugin=? AND loginname=?',
                     (plugin, loginname))


DatabaseBackend.registerSub(AccountMethods)
Example #3
0
            (str(pid), ))
        return [r[0] for r in self.c]

    @style.queue
    def deleteFinished(self):
        self.c.execute("DELETE FROM links WHERE status IN (0, 4)")
        self.c.execute(
            "DELETE FROM packages WHERE NOT EXISTS(SELECT 1 FROM links WHERE packages.id=links.package)"
        )

    @style.queue
    def restartFailed(self):
        self.c.execute(
            "UPDATE links SET status=3, error='' WHERE status IN (6, 8, 9)")

    @style.queue
    def findDuplicates(self, id, folder, filename):
        """ checks if filename exists with different id and same package """
        self.c.execute(
            "SELECT l.plugin FROM links as l INNER JOIN packages as p ON l.package=p.id AND p.folder=? WHERE l.id!=? AND l.status=0 AND l.name=?",
            (folder, id, filename))
        return self.c.fetchone()

    @style.queue
    def purgeLinks(self):
        self.c.execute("DELETE FROM links;")
        self.c.execute("DELETE FROM packages;")


DatabaseBackend.registerSub(FileMethods)
Example #4
0
                (value, identifier, key))
        else:
            db.c.execute(
                "INSERT INTO storage (identifier, key, value) VALUES (?, ?, ?)",
                (identifier, key, value))

    @style.queue
    def getStorage(db, identifier, key=None):
        if key is not None:
            db.c.execute(
                "SELECT value FROM storage WHERE identifier=? AND key=?",
                (identifier, key))
            row = db.c.fetchone()
            if row is not None:
                return row[0]
        else:
            db.c.execute("SELECT key, value FROM storage WHERE identifier=?",
                         (identifier, ))
            d = {}
            for row in db.c:
                d[row[0]] = row[1]
            return d

    @style.queue
    def delStorage(db, identifier, key):
        db.c.execute("DELETE FROM storage WHERE identifier=? AND key=?",
                     (identifier, key))


DatabaseBackend.registerSub(StorageMethods)
Example #5
0
# -*- coding: utf-8 -*-

from module.database import queue, async
from module.database import DatabaseBackend

class AccountMethods:

    @queue
    def loadAccounts(db):
        db.c.execute('SELECT plugin, loginname, activated, password, options FROM accounts;')
        return db.c.fetchall()

    @async
    def saveAccounts(db, data):
        db.c.executemany('INSERT INTO accounts(plugin, loginname, activated, password, options) VALUES(?,?,?,?,?)', data)

    @async
    def removeAccount(db, plugin, loginname):
        db.c.execute('DELETE FROM accounts WHERE plugin=? AND loginname=?', (plugin, loginname))

DatabaseBackend.registerSub(AccountMethods)
Example #6
0
    @style.queue
    def restartFailed(self):
        self.c.execute("UPDATE links SET status=3,error='' WHERE status IN (6, 8, 9)")

    @style.queue
    def findDuplicates(self, id, folder, filename):
        """ checks if filename exists with different id and same package """
        self.c.execute("SELECT l.plugin FROM links as l INNER JOIN packages as p ON l.package=p.id AND p.folder=? WHERE l.id!=? AND l.status=0 AND l.name=?", (folder, id, filename))
        return self.c.fetchone()

    @style.queue
    def purgeLinks(self):
        self.c.execute("DELETE FROM links;")
        self.c.execute("DELETE FROM packages;")

DatabaseBackend.registerSub(FileMethods)

if __name__ == "__main__":

    pypath = "."
    _ = lambda x: x
    
    db = FileHandler(None)

    #p = PyFile(db, 5)
    #sleep(0.1)

    a = time()

    #print db.addPackage("package", "folder" , 1)