Пример #1
0
def test_queries_all(db):
    db.purge_tables()
    assert db.table('t').insert({
        'int': 1,
        'chars': 'abcd'
    }) == {
        'id': 1,
        'chars': 'abcd',
        'int': 1
    }
    assert db.table('t').insert({
        'int': 2,
        'chars': 'ac'
    }) == {
        'id': 2,
        'chars': 'ac',
        'int': 2
    }
    assert db.table('t').insert({
        'int': 3,
        'chars': 'x',
        'char2': 'abcd'
    }) == {
        'id': 3,
        'chars': 'x',
        'char2': 'abcd',
        'int': 3
    }

    assert len(db.table('t').search(Query()['chars'].all(['d']))) == 1
    assert len(db.table('t').search(Query()['chars'].all(['c']))) == 2
    assert len(db.table('t').search(Query()['chars'].all(['acd']))) == 0
    assert len(db.table('t').search(Query()['chars'].all('acd'))) == 1
Пример #2
0
def test_queries_matches_ignore_case(db):
    db.purge_tables()
    assert db.table('t').insert({
        'int': 1,
        'chars': 'abcd'
    }) == {
        'id': 1,
        'chars': 'abcd',
        'int': 1
    }
    assert db.table('t').insert({
        'int': 2,
        'chars': 'ac'
    }) == {
        'id': 2,
        'chars': 'ac',
        'int': 2
    }

    assert len(
        db.table('t').search(
            Query()['chars'].matches_ignore_case('aBcd'))) == 1
    assert len(
        db.table('t').search(
            Query()['chars'].matches_ignore_case('abcc'))) == 0
    assert len(
        db.table('t').search(Query()['chars'].matches_ignore_case('Ab'))) == 1
Пример #3
0
def test_queries_search_ignore_case(db):
    db.purge_tables()
    assert db.table('t').insert({
        'int': 1,
        'chars': 'abcd'
    }) == {
        'id': 1,
        'chars': 'abcd',
        'int': 1
    }
    assert db.table('t').insert({
        'int': 2,
        'chars': 'ac'
    }) == {
        'id': 2,
        'chars': 'ac',
        'int': 2
    }

    assert len(
        db.table('t').search(Query()['chars'].search_ignore_case('Cd'))) == 1
    assert len(db.table('t').search(
        Query()['chars'].search_ignore_case('D'))) == 1
    assert len(db.table('t').search(
        Query()['chars'].search_ignore_case('a'))) == 2
    assert len(
        db.table('t').search(Query()['chars'].search_ignore_case('aBcd'))) == 1
    assert len(
        db.table('t').search(Query()['chars'].search_ignore_case('bcda'))) == 0
Пример #4
0
def test_queries_query(db):
    assert len(db.table('t').search(Query().char == 'a')) == 1
    assert len(db.table('t').search(Query().char == 'b')) == 1
    assert len(
        db.table('t').search((Query().char == 'c') & (Query().int == 1))) == 1
    assert len(
        db.table('t').search((Query().char == 'c')
                             | (Query().char == 'a'))) == 2
    assert len(
        db.table('t').search((Query()['char'] == 'c')
                             & (Query()['int'] == 1))) == 1
    assert len(
        db.table('t').search((Query()['char'] == 'c')
                             | (Query()['char'] == 'a'))) == 2
Пример #5
0
def post_to_space(objectset, database, logdb, bot_token, room_id):
    sql_query = Query()
    for item in objectset:
        incident_id_db = item["IncidentId"]
        last_updated_db = item["LastUpdated"]
        entry_exist = database.search((sql_query.IncidentId == incident_id_db))

        #If entry is missing in the database. Insert into database and send to Webex.
        if not entry_exist:
            sendrespone = send_it(bot_token, room_id, item)
            msg_id = sendrespone.json()
            msg_id = msg_id["id"]
            item['msgId'] = msg_id
            database.insert(item)

            logdb.insert(
                log.log("New insert on object with incidentID of: " +
                        incident_id_db))
        else:
            new_entries = database.search(
                (sql_query.IncidentId == incident_id_db)
                & (sql_query.LastUpdated < last_updated_db))

            #Update new entries that have newer lastUpdated and send to Webex.
            if new_entries:
                database.update(item, where('IncidentId') == incident_id_db)
                send_it(bot_token, room_id, item)

                logdb.insert(
                    log.log("New update on object with incidentID of: " +
                            incident_id_db))
Пример #6
0
async def on_voice_state_update(before, after):

    if str(before.voice_channel) == "None":
        print(after.name + " joined " + str(after.voice_channel))
        getdata = tb.search(Query().uid == after.id)
        try:
            result_checkforuser = getdata[0]['uid']
        except:
            db.table('stats').insert({'name': after.name, 'time': 0, 'uid': after.id })
        try:
            getstartpoint = getdata[0]['time']
            print('Startpoint is ' + str(getstartpoint))
        except:
            print("error 1. No start point")
        def countlifepersecond():
            global t

            getnewdata = tb.search(Query().uid == after.id)
            getnewstartpoint = getnewdata[0]['time']
            timetoaddit = getnewstartpoint
            timetoaddit += 1
            print(str(timetoaddit) + ' ' + str(after.name))
            final_time = timetoaddit
            tb.update({'time': final_time}, where('time') == getnewstartpoint )
            t = threading.Timer(1, countlifepersecond)
            t.start()
        countlifepersecond()

    elif str(after.voice_channel) == "None":
        t.cancel()
        print(after.name + " left " + str(before.voice_channel))
    else:
        return
Пример #7
0
        def countlifepersecond():
            global t

            getnewdata = tb.search(Query().uid == after.id)
            getnewstartpoint = getnewdata[0]['time']
            timetoaddit = getnewstartpoint
            timetoaddit += 1
            print(str(timetoaddit) + ' ' + str(after.name))
            final_time = timetoaddit
            tb.update({'time': final_time}, where('time') == getnewstartpoint )
            t = threading.Timer(1, countlifepersecond)
            t.start()
Пример #8
0
def remove_stale_records(objectset, database, logdb):
    sql_query = Query()
    for i in database.all():
        inc_id = i["IncidentId"]
        #entry_in_db = filter(lambda x: x['IncidentId'] == inc_id, objectset)
        entry_in_db = [i for i in objectset if i['IncidentId'] == inc_id]
        entry_in_db = list(entry_in_db)

        if not entry_in_db:
            database.remove(sql_query.IncidentId == inc_id)

            logdb.insert(
                log.log("New remove on object with incidentID of: " + inc_id))
Пример #9
0
def test_queries_all_in_list(db):
    db.purge_tables()
    assert db.table('t').insert({
        'int': 1,
        'charList': ['abcd', 'a']
    }) == {
        'id': 1,
        'charList': ['abcd', 'a'],
        'int': 1
    }
    assert db.table('t').insert({
        'int': 2,
        'charList': ['ac']
    }) == {
        'id': 2,
        'charList': ['ac'],
        'int': 2
    }

    assert len(db.table('t').search(Query()['charList'].all(['abcd']))) == 1
    assert len(db.table('t').search(Query()['charList'].all(['a']))) == 1
    assert len(db.table('t').search(Query()['charList'].all(['ac']))) == 1
    assert len(db.table('t').search(Query()['charList'].all('abcd'))) == 0
    assert len(db.table('t').search(Query()['charList'].all('ac'))) == 0
Пример #10
0
def get_search():
    return Query(), recordsTable
Пример #11
0
https://tinydb.readthedocs.io/en/latest/
https://github.com/harryho/flata
https://blog.ruanbekker.com/blog/2018/04/15/experimenting-with-python-and-flata-the-lightweight-document-orientated-database/
"""

metadata_file = 'metadata.json'
data_file = 'public/data.js'
database_file = 'database.json'
DATETIME_FORMAT = '%Y.%m.%dT%H:%M:%S%z'

# FlataDB
from flata import Flata, Query, where
from flata.storages import JSONStorage

db = Flata(database_file, storage=JSONStorage)
q = Query()

# Init
metadata_uid = 1
metadataTable = db.table('metadata', id_field='uid')
recordsTable = db.table('records', id_field='uid')


def get_db():
    return db


# So we don't need to write strings
category = 'category'
sub_category = 'sub_category'
producer = 'producer'
Пример #12
0
 def __init__(self, table_name: str, id_field: str = "id"):
     self.db = self.setup(table_name, id_field)
     self.q = Query()
Пример #13
0
 def __init__(self):
     self.db = self.setup("users")
     self.q = Query()