@@ -151,6 +151,7 @@ def get_default_tags() -> tuple[Tag, ...]:
151151 name = "Archived" ,
152152 aliases = {TagAlias (name = "Archive" )},
153153 parent_tags = {meta_tag },
154+ is_hidden = True ,
154155 color_slug = "red" ,
155156 color_namespace = "tagstudio-standard" ,
156157 )
@@ -540,6 +541,8 @@ def open_sqlite_library(self, library_dir: Path, is_new: bool) -> LibraryStatus:
540541 self .__apply_db8_schema_changes (session )
541542 if loaded_db_version < 9 :
542543 self .__apply_db9_schema_changes (session )
544+ if loaded_db_version < 103 :
545+ self .__apply_db103_schema_changes (session )
543546 if loaded_db_version == 6 :
544547 self .__apply_repairs_for_db6 (session )
545548
@@ -551,6 +554,8 @@ def open_sqlite_library(self, library_dir: Path, is_new: bool) -> LibraryStatus:
551554 self .__apply_db100_parent_repairs (session )
552555 if loaded_db_version < 102 :
553556 self .__apply_db102_repairs (session )
557+ if loaded_db_version < 103 :
558+ self .__apply_db103_default_data (session )
554559
555560 # Convert file extension list to ts_ignore file, if a .ts_ignore file does not exist
556561 self .migrate_sql_to_ts_ignore (library_dir )
@@ -698,6 +703,36 @@ def __apply_db102_repairs(self, session: Session):
698703 session .commit ()
699704 logger .info ("[Library][Migration] Verified TagParent table data" )
700705
706+ def __apply_db103_schema_changes (self , session : Session ):
707+ """Apply database schema changes introduced in DB_VERSION 103."""
708+ add_is_hidden_column = text (
709+ "ALTER TABLE tags ADD COLUMN is_hidden BOOLEAN NOT NULL DEFAULT 0"
710+ )
711+ try :
712+ session .execute (add_is_hidden_column )
713+ session .commit ()
714+ logger .info ("[Library][Migration] Added is_hidden column to tags table" )
715+ except Exception as e :
716+ logger .error (
717+ "[Library][Migration] Could not create is_hidden column in tags table!" ,
718+ error = e ,
719+ )
720+ session .rollback ()
721+
722+ def __apply_db103_default_data (self , session : Session ):
723+ """Apply default data changes introduced in DB_VERSION 103."""
724+ try :
725+ session .query (Tag ).filter (Tag .id == TAG_ARCHIVED ).update ({"is_hidden" : True })
726+ session .commit ()
727+ logger .info ("[Library][Migration] Updated archived tag to be hidden" )
728+ session .commit ()
729+ except Exception as e :
730+ logger .error (
731+ "[Library][Migration] Could not update archived tag to be hidden!" ,
732+ error = e ,
733+ )
734+ session .rollback ()
735+
701736 def migrate_sql_to_ts_ignore (self , library_dir : Path ):
702737 # Do not continue if existing '.ts_ignore' file is found
703738 if Path (library_dir / TS_FOLDER_NAME / IGNORE_NAME ).exists ():
@@ -1003,13 +1038,19 @@ def search_library(
10031038 else :
10041039 statement = select (Entry .id )
10051040
1006- if search .ast :
1041+ ast = search .ast
1042+
1043+ if not search .show_hidden_entries :
1044+ statement = statement .where (~ Entry .tags .any (Tag .is_hidden ))
1045+
1046+ if ast :
10071047 start_time = time .time ()
1008- statement = statement .where (SQLBoolExpressionBuilder (self ).visit (search . ast ))
1048+ statement = statement .where (SQLBoolExpressionBuilder (self ).visit (ast ))
10091049 end_time = time .time ()
10101050 logger .info (
10111051 f"SQL Expression Builder finished ({ format_timespan (end_time - start_time )} )"
10121052 )
1053+
10131054 statement = statement .distinct (Entry .id )
10141055
10151056 sort_on : ColumnExpressionArgument = Entry .id
0 commit comments