Skip to content

Commit 8b359a9

Browse files
authored
Merge pull request #3000 from rommapp/romm-2983
[ROMM-2983] Fix negative filter by verified
2 parents a902950 + 4733a86 commit 8b359a9

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

backend/handler/database/roms_handler.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ def _filter_by_missing_from_fs(self, query: Query, value: bool) -> Query:
330330
predicate = not_(predicate)
331331
return query.filter(predicate)
332332

333-
def _filter_by_verified(self, query: Query):
333+
def _filter_by_verified(self, query: Query, value: bool) -> Query:
334334
keys_to_check = [
335335
"tosec_match",
336336
"mame_arcade_match",
@@ -347,11 +347,17 @@ def _filter_by_verified(self, query: Query):
347347
conditions = " OR ".join(
348348
f"(hasheous_metadata->>'{key}')::boolean" for key in keys_to_check
349349
)
350-
return query.filter(text(conditions))
350+
predicate = text(f"({conditions})")
351+
if not value:
352+
predicate = text(f"NOT ({conditions})")
353+
return query.filter(predicate)
351354
else:
352-
return query.filter(
353-
or_(*(Rom.hasheous_metadata[key].as_boolean() for key in keys_to_check))
355+
predicate = or_(
356+
*(Rom.hasheous_metadata[key].as_boolean() for key in keys_to_check)
354357
)
358+
if not value:
359+
predicate = not_(predicate)
360+
return query.filter(predicate)
355361

356362
def _filter_by_genres(
357363
self,
@@ -587,9 +593,8 @@ def filter_roms(
587593
if missing is not None:
588594
query = self._filter_by_missing_from_fs(query, value=missing)
589595

590-
# TODO: Correctly support true/false values.
591-
if verified:
592-
query = self._filter_by_verified(query)
596+
if verified is not None:
597+
query = self._filter_by_verified(query, value=verified)
593598

594599
if updated_after:
595600
query = query.filter(Rom.updated_at > updated_after)

0 commit comments

Comments
 (0)