4242 selectinload ,
4343)
4444from src .core .library .json .library import Library as JsonLibrary # type: ignore
45+ from src .qt .translations import Translations
4546
4647from ...constants import (
4748 BACKUP_FOLDER_NAME ,
@@ -295,10 +296,35 @@ def open_sqlite_library(self, library_dir: Path, is_new: bool) -> LibraryStatus:
295296 poolclass = None if self .storage_path == ":memory:" else NullPool
296297
297298 logger .info (
298- "Opening SQLite Library" , library_dir = library_dir , connection_string = connection_string
299+ "[Library] Opening SQLite Library" ,
300+ library_dir = library_dir ,
301+ connection_string = connection_string ,
299302 )
300303 self .engine = create_engine (connection_string , poolclass = poolclass )
301304 with Session (self .engine ) as session :
305+ # dont check db version when creating new library
306+ if not is_new :
307+ db_version = session .scalar (
308+ select (Preferences ).where (Preferences .key == LibraryPrefs .DB_VERSION .name )
309+ )
310+
311+ if not db_version or db_version .value != LibraryPrefs .DB_VERSION .default :
312+ mismatch_text = Translations .translate_formatted (
313+ "status.library_version_mismatch"
314+ )
315+ found_text = Translations .translate_formatted ("status.library_version_found" )
316+ expected_text = Translations .translate_formatted (
317+ "status.library_version_expected"
318+ )
319+ return LibraryStatus (
320+ success = False ,
321+ message = (
322+ f"{ mismatch_text } \n "
323+ f"{ found_text } v{ 0 if not db_version else db_version .value } , "
324+ f"{ expected_text } v{ LibraryPrefs .DB_VERSION .default } "
325+ ),
326+ )
327+
302328 make_tables (self .engine )
303329
304330 # TODO: Determine a good way of updating built-in data after updates.
@@ -337,21 +363,6 @@ def open_sqlite_library(self, library_dir: Path, is_new: bool) -> LibraryStatus:
337363 except IntegrityError :
338364 session .rollback ()
339365
340- # dont check db version when creating new library
341- if not is_new :
342- db_version = session .scalar (
343- select (Preferences ).where (Preferences .key == LibraryPrefs .DB_VERSION .name )
344- )
345-
346- if not db_version :
347- return LibraryStatus (
348- success = False ,
349- message = (
350- "Library version mismatch.\n "
351- f"Found: v0, expected: v{ LibraryPrefs .DB_VERSION .default } "
352- ),
353- )
354-
355366 for pref in LibraryPrefs :
356367 with catch_warnings (record = True ):
357368 try :
@@ -377,24 +388,6 @@ def open_sqlite_library(self, library_dir: Path, is_new: bool) -> LibraryStatus:
377388 logger .debug ("ValueType already exists" , field = field )
378389 session .rollback ()
379390
380- db_version = session .scalar (
381- select (Preferences ).where (Preferences .key == LibraryPrefs .DB_VERSION .name )
382- )
383- # if the db version is different, we cant proceed
384- if db_version .value != LibraryPrefs .DB_VERSION .default :
385- logger .error (
386- "DB version mismatch" ,
387- db_version = db_version .value ,
388- expected = LibraryPrefs .DB_VERSION .default ,
389- )
390- return LibraryStatus (
391- success = False ,
392- message = (
393- "Library version mismatch.\n "
394- f"Found: v{ db_version .value } , expected: v{ LibraryPrefs .DB_VERSION .default } "
395- ),
396- )
397-
398391 # check if folder matching current path exists already
399392 self .folder = session .scalar (select (Folder ).where (Folder .path == library_dir ))
400393 if not self .folder :
0 commit comments