feat(gaming): extend admin game list filters - #195
Merged
Merged
Conversation
okapitula
requested review from
damianrzepka,
jakubfilinger-b,
klaudia-blazyczek-blurify,
marek-chmielowski-blurify,
mp-blurify and
zaxovaiko
as code owners
September 18, 2026 09:48
zaxovaiko
removed request for
damianrzepka,
jakubfilinger-b,
klaudia-blazyczek-blurify,
mp-blurify and
zaxovaiko
September 18, 2026 09:48
okapitula
added this pull request to stack #196
September 18, 2026 09:48
okapitula
force-pushed
the
feat/extend-admin-game-filters
branch
from
September 18, 2026 14:48
13545a4 to
1f7bf8a
Compare
zaxovaiko
previously approved these changes
Sep 18, 2026
zaxovaiko
reviewed
Sep 18, 2026
Member
|
Not from this PR, but while checking the filters I noticed Let's add it to the |
Collaborator
Author
|
Confirmed, added here with the migration. 300k games:
The parallel |
zaxovaiko
approved these changes
Sep 19, 2026
add category (all-of, plus uncategorized), tag (all-of), game type, and geo-block filters to GET /backoffice/gaming/games. a game counts as geo-blocked in a country by its own rule or its provider's, matching the play gate; country-wide blocks are not included. geo filters require compliance:view on top of game-config:view, and return 400 when the compliance module is not loaded. contradictory combinations (uncategorized with a category, geoBlocked=false with countries) return 400.
Rewrite the geoBlocked=true filter as IN over a grouped rule subquery so the planner keeps a parallel scan and skips JIT; keep NOT EXISTS for false since the anti join scales with the rule table. Index game.name for the public list's name-ordered pagination.
okapitula
force-pushed
the
feat/extend-admin-game-filters
branch
from
September 20, 2026 17:49
92ed482 to
7f839c5
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds category (all-of, plus
uncategorized), tag (all-of), game type (any-of) and geo-block filters toGET /backoffice/gaming/games. Stacked on #173: the geo filters read itsprovider_geo_ruletable, so this merges after it.Why
The admin game list could only filter by search, provider, a single category,
isActiveandisUnavailable. Operators need to find games by category membership (including games in no category), by tag combinations, by type, and by geo-block status.categoryIds[],tagIds[],geoBlockedCountries[]are all-of: a game must match every listed value.gameTypes[]is any-of, since a game has exactly one type.compliance:viewon top ofgame-config:view, the same grant compliance's own geo-rule routes use.uncategorized=truewith a category filter,geoBlocked=falsewith countries) return 400.?tagIds[]=a&tagIds[]=b) or a single bare value; duplicates are dropped before the per-list cap applies.Alternatives considered
game_round, need a date window and a currency to be meaningful, and fit the existing game performance report better than the catalog list./schemasubpath: the port would return unbounded id lists to feed back into the paginated query; the/schemaread is the sanctioned pattern and compliance already reads gaming's tables the same way.Risks
provider_geo_rule). Retarget todevonce feat(compliance): add per-provider geo-blocking #173 merges.GAME_GEO_CHECKbinding. An overlay that binds its own geo check without the compliance module would get a 500 instead of a 400 on the geo filters.GET /gaming/gamesis unchanged.