Ejemplo n.º 1
0
def build_index():
    # 先删除老的索引
    for key, value in dbutil.prefix_iter("note_tiny:", include_key=True):
        dbutil.delete(key)

    # old key to new key
    for item in dbutil.prefix_iter("note_full:"):
        put_note_tiny(item)

    migrate_note_recent()
    return "迁移完成!"
Ejemplo n.º 2
0
def migrate_note_recent():
    recent_list = dbutil.prefix_iter("note_recent", include_key=True)
    for key, item in recent_list:
        dbutil.delete(key)

    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 "迁移完成!"
Ejemplo n.º 3
0
def migrate_note_tags():
    db = xtables.get_file_tag_table()
    count = 0
    for item in db.select():
        note_id = item.file_id
        creator = item.user
        note_key = build_note_full_key(note_id)
        note = dbutil.get(note_key)
        if note != None:
            tag_set = set()
            if note.tags != None:
                tag_set.update(note.tags)
            tag_set.add(item.name)
            note.tags = list(tag_set)

            # 更新入库
            dbutil.put(note_key, note)
            put_note_tiny(note)
            count += 1

    for item in dbutil.prefix_iter("note_tiny"):
        note_id = str(item.id)
        note_tag_key = "note_tags:%s:%s" % (item.creator, note_id)
        note_tag = dbutil.get(note_tag_key)
        if note_tag is None and item.tags != None:
            dbutil.put(note_tag_key, Storage(note_id=note_id, tags=item.tags))
            count += 1

    return "迁移完成,标签数量: %s" % count
Ejemplo n.º 4
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 "迁移完成!"
Ejemplo n.º 5
0
def find_visit_log(user_name, url):
    for key, log in dbutil.prefix_iter("plugin_visit_log:%s" % user_name,
                                       include_key=True):
        if log.url == url:
            log.key = key
            return log
    return None
Ejemplo n.º 6
0
def list_comments(note_id):
    comments = []
    for key, value in dbutil.prefix_iter("note_comment:%s" % note_id,
                                         reverse=True,
                                         include_key=True):
        comment = value
        comment['id'] = key
        comments.append(comment)
    return comments
Ejemplo n.º 7
0
def migrate_note_full():
    # sqlite to leveldb
    db = get_note_table()
    if db:
        migrate_note_from_db()

    # 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 "迁移完成!"
Ejemplo n.º 8
0
def migrate_note_history():
    # sqlite to kv
    db = xtables.get_note_history_table()
    for item in db.select():
        dbutil.put("note_history:%s:%s" % (item.note_id, item.version), item)

    # old_key to new_key
    for item in dbutil.prefix_iter("note.history"):
        # 这里leveldb第一版没有note_id,而是id字段
        old_key = "note.history:%s:%s" % (item.id, item.version)
        new_key = "note_history:%s:%s" % (item.id, item.version)
        new_value = dbutil.get(new_key)
        if new_value and (new_value.mtime is None
                          or item.mtime > new_value.mtime):
            dbutil.put(new_key, item)
            dbutil.delete(old_key)

        if new_value is None:
            dbutil.put(new_key, item)
            dbutil.delete(old_key)
    return "迁移完成!"