def init_db(): tmp_db = None _connect_db(_db) sqlite_version = ".".join([str(num) for num in _db.server_version]) log.info("SQLite version: {}, APSW version: {}".format( sqlite_version, apswversion())) if Settings.table_exists(): update_db() else: tmp_db = PooledSqliteDatabase(os.path.join(get_data_dir(), "cozy.db")) if PeeweeVersion[0] == '2': tmp_db.create_tables([ Track, Book, Settings, ArtworkCache, Storage, StorageBlackList, OfflineCache ], True) else: with tmp_db.connection_context(): tmp_db.create_tables([ Track, Book, Settings, ArtworkCache, Storage, StorageBlackList, OfflineCache ]) # this is necessary to ensure that the tables have indeed been created if tmp_db: if PeeweeVersion[0] == '2': while not Settings.table_exists(): time.sleep(0.01) else: while not tmp_db.table_exists("settings"): time.sleep(0.01) _connect_db(_db) if PeeweeVersion[0] == '3': _db.bind([ Book, Track, Settings, ArtworkCache, StorageBlackList, OfflineCache, Storage ], bind_refs=False, bind_backrefs=False) if (Settings.select().count() == 0): Settings.create(path="", last_played_book=None) # TODO: Properly handle errors within the database # Remove this later. It prevents empty book objects in the database clean_books()
def init_db(): _connect_db(_db) sqlite_version = ".".join([str(num) for num in _db.server_version]) log.info("SQLite version: {}".format(sqlite_version)) if Settings.table_exists(): update_db() else: _db.create_tables([ Track, Book, Settings, ArtworkCache, Storage, StorageBlackList, OfflineCache ]) _db.stop() _db.start() while not _db.table_exists("settings"): time.sleep(0.01) _db.bind([ Book, Track, Settings, ArtworkCache, StorageBlackList, OfflineCache, Storage ], bind_refs=False, bind_backrefs=False) if (Settings.select().count() == 0): Settings.create(path="", last_played_book=None) # TODO: Properly handle errors within the database # Remove this later. It prevents empty book objects in the database clean_books()