2222from mavedb .models .keyword import Keyword
2323from mavedb .models .publication_identifier import PublicationIdentifier
2424from mavedb .models .reference_genome import ReferenceGenome
25- from mavedb .models .reference_map import ReferenceMap
2625from mavedb .models .score_set import ScoreSet
26+ from mavedb .models .target_accession import TargetAccession
2727from mavedb .models .target_gene import TargetGene
2828from mavedb .models .user import User
2929from mavedb .view_models .search import ScoreSetsSearch
@@ -52,8 +52,8 @@ def search_score_sets(db: Session, owner: Optional[User], search: ScoreSetsSearc
5252 ScoreSet .title .contains (lower_search_text ),
5353 ScoreSet .short_description .contains (lower_search_text ),
5454 ScoreSet .abstract_text .contains (lower_search_text ),
55- ScoreSet .target_gene . has (func .lower (TargetGene .name ).contains (lower_search_text )),
56- ScoreSet .target_gene . has (func .lower (TargetGene .category ).contains (lower_search_text )),
55+ ScoreSet .target_genes . any (func .lower (TargetGene .name ).contains (lower_search_text )),
56+ ScoreSet .target_genes . any (func .lower (TargetGene .category ).contains (lower_search_text )),
5757 ScoreSet .keyword_objs .any (func .lower (Keyword .text ).contains (lower_search_text )),
5858 # TODO Add: ORGANISM_NAME UNIPROT, ENSEMBL, REFSEQ, LICENSE, plus TAX_ID if numeric
5959 ScoreSet .publication_identifiers .any (
@@ -77,19 +77,17 @@ def search_score_sets(db: Session, owner: Optional[User], search: ScoreSetsSearc
7777 )
7878
7979 if search .targets :
80- query = query .filter (ScoreSet .target_gene . has (TargetGene .name .in_ (search .targets )))
80+ query = query .filter (ScoreSet .target_genes . any (TargetGene .name .in_ (search .targets )))
8181
8282 if search .target_organism_names :
8383 query = query .filter (
84- ScoreSet .target_gene .has (
85- TargetGene .reference_maps .any (
86- ReferenceMap .genome .has (ReferenceGenome .organism_name .in_ (search .target_organism_names ))
87- )
84+ ScoreSet .target_genes .any (
85+ TargetGene .reference .any (ReferenceGenome .organism_name .in_ (search .target_organism_names ))
8886 )
8987 )
9088
9189 if search .target_types :
92- query = query .filter (ScoreSet .target_gene . has (TargetGene .category .in_ (search .target_types )))
90+ query = query .filter (ScoreSet .target_genes . any (TargetGene .category .in_ (search .target_types )))
9391
9492 if search .publication_identifiers :
9593 query = query .filter (
@@ -111,8 +109,15 @@ def search_score_sets(db: Session, owner: Optional[User], search: ScoreSetsSearc
111109 )
112110 )
113111
112+ if search .target_accessions :
113+ query = query .filter (
114+ ScoreSet .target_genes .any (
115+ TargetGene .target_accession .has (TargetAccession .accession .in_ (search .target_accessions ))
116+ )
117+ )
118+
114119 score_sets : list [ScoreSet ] = (
115- query .join (ScoreSet .experiment ).join (ScoreSet .target_gene ).order_by (Experiment .title ).all ()
120+ query .join (ScoreSet .experiment ).join (ScoreSet .target_genes ).order_by (Experiment .title ).all ()
116121 )
117122 if not score_sets :
118123 score_sets = []
0 commit comments