42
42
selectinload ,
43
43
)
44
44
from src .core .library .json .library import Library as JsonLibrary # type: ignore
45
+ from src .qt .translations import Translations
45
46
46
47
from ...constants import (
47
48
BACKUP_FOLDER_NAME ,
@@ -295,10 +296,35 @@ def open_sqlite_library(self, library_dir: Path, is_new: bool) -> LibraryStatus:
295
296
poolclass = None if self .storage_path == ":memory:" else NullPool
296
297
297
298
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 ,
299
302
)
300
303
self .engine = create_engine (connection_string , poolclass = poolclass )
301
304
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
+
302
328
make_tables (self .engine )
303
329
304
330
# 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:
337
363
except IntegrityError :
338
364
session .rollback ()
339
365
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
-
355
366
for pref in LibraryPrefs :
356
367
with catch_warnings (record = True ):
357
368
try :
@@ -377,24 +388,6 @@ def open_sqlite_library(self, library_dir: Path, is_new: bool) -> LibraryStatus:
377
388
logger .debug ("ValueType already exists" , field = field )
378
389
session .rollback ()
379
390
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
-
398
391
# check if folder matching current path exists already
399
392
self .folder = session .scalar (select (Folder ).where (Folder .path == library_dir ))
400
393
if not self .folder :
0 commit comments