Esempio n. 1
0
def migrate_note_full():
    # sqlite to leveldb
    db = xtables.get_note_table()
    content_db = xtables.get_note_content_table()
    for item in db.select():
        note_key = build_note_full_key(item.id)
        ldb_value = dbutil.get(note_key)
        # 如果存在需要比较修改时间
        if ldb_value and item.mtime >= ldb_value.mtime:
            build_full_note(item, content_db)
            dbutil.put(note_key, item)

        if ldb_value is None:
            build_full_note(item, content_db)
            dbutil.put(note_key, item)

    # old key to new key
    for item in dbutil.prefix_iter("note.full:"):
        new_key = build_note_full_key(item.id)
        new_value = dbutil.get(new_key)
        if new_value and item.mtime >= new_value.mtime:
            dbutil.put(new_key, item)

        if new_value is None:
            dbutil.put(new_key, item)

    return "迁移完成!"
Esempio n. 2
0
def fill_note_info(files):
    db = xtables.get_note_table()
    for file in files:
        if file.category == "note":
            parent = xutils.call("note.get_by_id", file.parent_id)
            if parent is not None:
                file.parent_name = parent.name
Esempio n. 3
0
def batch_query_sqlite(id_list):
    db = xtables.get_note_table()
    result = db.select(where="id IN $id_list", vars=dict(id_list=id_list))
    dict_result = dict()
    for item in result:
        dict_result[item.id] = item
    return dict_result
Esempio n. 4
0
def fill_note_info(files):
    db = xtables.get_note_table()
    for file in files:
        if file.category == "note":
            parent = db.select_one(where=dict(id=file.parent_id))
            if parent is not None:
                file.parent_name = parent.name
Esempio n. 5
0
def rdb_list_note(creator, parent_id, offset, limit):
    db = xtables.get_note_table()
    where_sql = "parent_id=$parent_id AND is_deleted=0 AND (creator=$creator OR is_public=1)"
    files = db.select(where=where_sql,
                      vars=dict(parent_id=parent_id,
                                is_deleted=0,
                                creator=creator),
                      order="name",
                      limit=limit,
                      offset=offset)
    return files
Esempio n. 6
0
def migrate_note_recent():
    recent_list = dbutil.prefix_iter("note_recent", include_key=True)
    for key, item in recent_list:
        dbutil.delete(key)

    db = xtables.get_note_table()
    for item in dbutil.prefix_iter("note_tiny"):
        if item.type != "group":
            dbutil.zadd("note_recent:%s" % item.creator, item.mtime, item.id)
        if item.is_public:
            dbutil.zadd("note_recent:public", item.mtime, item.id)
    return "迁移完成!"
Esempio n. 7
0
def count_note(creator, parent_id):
    if xconfig.DB_ENGINE == "sqlite":
        db = xtables.get_note_table()
        where_sql = "parent_id=$parent_id AND is_deleted=0 AND (creator=$creator OR is_public=1)"
        amount    = db.count(where = where_sql,
                    vars=dict(parent_id=parent_id, creator=creator))
        return amount
    else:
        # TODO 添加索引优化
        def list_note_func(key, value):
            if value.is_deleted:
                return False
            if value.type == "group":
                return False
            return (value.is_public or value.creator == creator) and str(value.parent_id) == str(parent_id)

        return dbutil.prefix_count("note_tiny", list_note_func)
Esempio n. 8
0
def get_note_table():
    try:
        return xtables.get_note_table()
    except:
        # note table is not inited
        return None
Esempio n. 9
0
def query_note_name(id):
    db = xtables.get_note_table()
    result = db.select_first(what="name", where=dict(id=id))
    if result:
        return result.name
    return None