filter out rows when order by columnis null

This commit is contained in:
Georges-Antoine Assi
2025-03-24 19:30:19 -04:00
parent 3672a5be2a
commit 490aa4d89c
3 changed files with 15 additions and 16 deletions

View File

@@ -58,14 +58,12 @@ def upgrade():
ELSE '[]'::jsonb
END AS game_modes,
(
SELECT jsonb_agg(rating -> 'rating')
FROM jsonb_array_elements(
CASE WHEN r.igdb_metadata ? 'age_ratings'
THEN r.igdb_metadata -> 'age_ratings'
ELSE '[]'::jsonb
END
) AS rating
COALESCE(
jsonb_path_query_array(
r.igdb_metadata,
'$.age_ratings[*].rating'
),
'[]'::jsonb
) AS age_ratings,
CASE
@@ -161,9 +159,12 @@ def upgrade():
END AS game_modes,
CASE
WHEN JSON_CONTAINS_PATH(r.igdb_metadata, 'one', '$.age_ratings') THEN
WHEN JSON_CONTAINS_PATH(r.igdb_metadata, 'one', '$.age_ratings')
AND JSON_LENGTH(JSON_EXTRACT(r.igdb_metadata, '$.age_ratings')) > 0
THEN
JSON_EXTRACT(r.igdb_metadata, '$.age_ratings[*].rating')
ELSE JSON_ARRAY()
ELSE
JSON_ARRAY()
END AS age_ratings,
CASE

View File

@@ -384,11 +384,13 @@ class DBRomsHandler(DBBaseHandler):
)
if user_id and hasattr(RomUser, order_by) and not hasattr(Rom, order_by):
query = query.filter(RomUser.user_id == user_id)
order_attr = getattr(RomUser, order_by)
query = query.filter(RomUser.user_id == user_id, order_attr.isnot(None))
elif hasattr(RomMetadata, order_by) and not hasattr(Rom, order_by):
query = query.outerjoin(RomMetadata, RomMetadata.rom_id == Rom.id)
order_attr = getattr(RomMetadata, order_by)
query = query.outerjoin(RomMetadata, RomMetadata.rom_id == Rom.id).filter(
order_attr.isnot(None)
)
elif hasattr(Rom, order_by):
order_attr = getattr(Rom, order_by)
else:

View File

@@ -276,10 +276,6 @@ class Rom(BaseModel):
or []
)
@property
def first_release_date(self) -> int | None:
return self.metadatum.first_release_date
@property
def is_unidentified(self) -> bool:
return not self.igdb_id and not self.moby_id and not self.ss_id