mirror of
https://github.com/rommapp/romm.git
synced 2026-06-28 14:56:01 +00:00
Add filter values to roms query
This commit is contained in:
@@ -1273,3 +1273,58 @@ class DBRomsHandler(DBBaseHandler):
|
||||
"regions": sorted(regions),
|
||||
"languages": sorted(languages),
|
||||
}
|
||||
|
||||
@begin_session
|
||||
def with_filter_values(
|
||||
self,
|
||||
query: Query,
|
||||
session: Session = None, # type: ignore
|
||||
) -> dict:
|
||||
ids_subq = query.with_only_columns(Rom.id).scalar_subquery() # type: ignore
|
||||
|
||||
statement = (
|
||||
select(
|
||||
RomMetadata.genres,
|
||||
RomMetadata.franchises,
|
||||
RomMetadata.companies,
|
||||
RomMetadata.game_modes,
|
||||
RomMetadata.age_ratings,
|
||||
RomMetadata.player_count,
|
||||
Rom.regions,
|
||||
Rom.languages,
|
||||
)
|
||||
.select_from(Rom)
|
||||
.join(RomMetadata, Rom.id == RomMetadata.rom_id)
|
||||
.where(Rom.id.in_(ids_subq))
|
||||
)
|
||||
|
||||
genres = set()
|
||||
franchises = set()
|
||||
companies = set()
|
||||
game_modes = set()
|
||||
age_ratings = set()
|
||||
player_counts = set()
|
||||
regions = set()
|
||||
languages = set()
|
||||
|
||||
for row in session.execute(statement):
|
||||
g, f, c, gm, ar, pc, rg, lg = row
|
||||
genres.update(g)
|
||||
franchises.update(f)
|
||||
companies.update(c)
|
||||
game_modes.update(gm)
|
||||
age_ratings.update(ar)
|
||||
player_counts.update(pc)
|
||||
regions.update(rg)
|
||||
languages.update(lg)
|
||||
|
||||
return {
|
||||
"genres": sorted(genres),
|
||||
"franchises": sorted(franchises),
|
||||
"companies": sorted(companies),
|
||||
"game_modes": sorted(game_modes),
|
||||
"age_ratings": sorted(age_ratings),
|
||||
"player_counts": sorted(player_counts),
|
||||
"regions": sorted(regions),
|
||||
"languages": sorted(languages),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user