def delete_all_collections(c): # build dictionaries of ebooks/collections with their uuids db_ebooks, db_collections = parse_entries(c, ignore_empty_collections=False) # object that will handle all db updates cc = CCUpdate() for collection in db_collections: cc.delete_collection(collection.uuid) cc.execute()
def update_cc_db(c, complete_rebuild=True, source="folders"): # build dictionaries of ebooks/collections with their uuids db_ebooks, db_collections = parse_entries(c, ignore_empty_collections=False) # object that will handle all db updates cc = CCUpdate() if complete_rebuild: # clear all current collections for (i, eb) in enumerate(db_ebooks): db_ebooks[i].original_collections = [] for (i, eb) in enumerate(db_collections): db_collections[i].original_ebooks = [] for collection in db_collections: cc.delete_collection(collection.uuid) db_collections = [] if source == "calibre_plugin": collections_contents = parse_calibre_plugin_config(CALIBRE_PLUGIN_FILE) db_ebooks, db_collections = update_lists_from_calibre_plugin_json( db_ebooks, db_collections, collections_contents) else: if source == "folders": # parse folder structure collections_contents = list_folder_contents() else: # parse tags json collections_contents = parse_config(TAGS) db_ebooks, db_collections = update_lists_from_librarian_json( db_ebooks, db_collections, collections_contents) # updating collections, creating them if necessary for collection in db_collections: if collection.is_new: # create new collections in db cc.insert_new_collection_entry(collection.uuid, collection.label) # update all 'Collections' entries with new members collection.sort_ebooks() if collection.ebooks != collection.original_ebooks: cc.update_collections_entry(collection.uuid, [e.uuid for e in collection.ebooks]) # if firmware requires updating ebook entries if cc.is_cc_aware: # update all Item:Ebook entries with the number of collections # it belongs to. for ebook in db_ebooks: if len(ebook.collections) != len(ebook.original_collections): cc.update_ebook_entry(ebook.uuid, len(ebook.collections)) # send all the commands to update the database cc.execute()