mirror of
https://github.com/rommapp/romm.git
synced 2026-02-18 23:42:07 +01:00
Refactor: remove max_length constraints from query parameters and update boolean filter values to use true/false strings
This commit is contained in:
@@ -267,7 +267,6 @@ def get_roms(
|
||||
" returned. Maximum 50 values allowed."
|
||||
),
|
||||
alias="genre",
|
||||
max_length=50,
|
||||
),
|
||||
] = None,
|
||||
franchises: Annotated[
|
||||
@@ -279,7 +278,6 @@ def get_roms(
|
||||
" be returned. Maximum 50 values allowed."
|
||||
),
|
||||
alias="franchise",
|
||||
max_length=50,
|
||||
),
|
||||
] = None,
|
||||
collections: Annotated[
|
||||
@@ -291,7 +289,6 @@ def get_roms(
|
||||
" values will be returned. Maximum 50 values allowed."
|
||||
),
|
||||
alias="collection",
|
||||
max_length=50,
|
||||
),
|
||||
] = None,
|
||||
companies: Annotated[
|
||||
@@ -303,7 +300,6 @@ def get_roms(
|
||||
" be returned. Maximum 50 values allowed."
|
||||
),
|
||||
alias="company",
|
||||
max_length=50,
|
||||
),
|
||||
] = None,
|
||||
age_ratings: Annotated[
|
||||
@@ -315,7 +311,6 @@ def get_roms(
|
||||
" values will be returned. Maximum 20 values allowed."
|
||||
),
|
||||
alias="age_rating",
|
||||
max_length=20,
|
||||
),
|
||||
] = None,
|
||||
selected_status: Annotated[
|
||||
@@ -331,7 +326,6 @@ def get_roms(
|
||||
" values will be returned. Maximum 30 values allowed."
|
||||
),
|
||||
alias="region",
|
||||
max_length=30,
|
||||
),
|
||||
] = None,
|
||||
languages: Annotated[
|
||||
@@ -343,7 +337,6 @@ def get_roms(
|
||||
" values will be returned. Maximum 30 values allowed."
|
||||
),
|
||||
alias="language",
|
||||
max_length=30,
|
||||
),
|
||||
] = None,
|
||||
order_by: Annotated[
|
||||
@@ -359,49 +352,42 @@ def get_roms(
|
||||
str,
|
||||
Query(
|
||||
description="Logic operator for genres filter: 'any' (OR) or 'all' (AND).",
|
||||
alias="genres_logic",
|
||||
),
|
||||
] = "any",
|
||||
franchises_logic: Annotated[
|
||||
str,
|
||||
Query(
|
||||
description="Logic operator for franchises filter: 'any' (OR) or 'all' (AND).",
|
||||
alias="franchises_logic",
|
||||
),
|
||||
] = "any",
|
||||
collections_logic: Annotated[
|
||||
str,
|
||||
Query(
|
||||
description="Logic operator for collections filter: 'any' (OR) or 'all' (AND).",
|
||||
alias="collections_logic",
|
||||
),
|
||||
] = "any",
|
||||
companies_logic: Annotated[
|
||||
str,
|
||||
Query(
|
||||
description="Logic operator for companies filter: 'any' (OR) or 'all' (AND).",
|
||||
alias="companies_logic",
|
||||
),
|
||||
] = "any",
|
||||
age_ratings_logic: Annotated[
|
||||
str,
|
||||
Query(
|
||||
description="Logic operator for age ratings filter: 'any' (OR) or 'all' (AND).",
|
||||
alias="age_ratings_logic",
|
||||
),
|
||||
] = "any",
|
||||
regions_logic: Annotated[
|
||||
str,
|
||||
Query(
|
||||
description="Logic operator for regions filter: 'any' (OR) or 'all' (AND).",
|
||||
alias="regions_logic",
|
||||
),
|
||||
] = "any",
|
||||
languages_logic: Annotated[
|
||||
str,
|
||||
Query(
|
||||
description="Logic operator for languages filter: 'any' (OR) or 'all' (AND).",
|
||||
alias="languages_logic",
|
||||
),
|
||||
] = "any",
|
||||
) -> CustomLimitOffsetPage[SimpleRomSchema]:
|
||||
|
||||
@@ -239,7 +239,11 @@ class DBRomsHandler(DBBaseHandler):
|
||||
)
|
||||
|
||||
def filter_by_matched(self, query: Query, value: bool) -> Query:
|
||||
"""Filter based on whether the rom is matched to a metadata provider."""
|
||||
"""Filter based on whether the rom is matched to a metadata provider.
|
||||
|
||||
Args:
|
||||
value: True for matched ROMs, False for unmatched ROMs
|
||||
"""
|
||||
predicate = or_(
|
||||
Rom.igdb_id.isnot(None),
|
||||
Rom.moby_id.isnot(None),
|
||||
|
||||
@@ -99,42 +99,46 @@ const onFilterChange = debounce(
|
||||
search: searchTerm.value,
|
||||
matched:
|
||||
filterMatched.value === true
|
||||
? "1"
|
||||
? "true"
|
||||
: filterUnmatched.value === true
|
||||
? "2"
|
||||
? "false"
|
||||
: null,
|
||||
filterFavorites:
|
||||
filterFavorites.value === true
|
||||
? "1"
|
||||
? "true"
|
||||
: filterFavorites.value === false
|
||||
? "0"
|
||||
? "false"
|
||||
: null,
|
||||
filterDuplicates:
|
||||
filterDuplicates.value === true
|
||||
? "1"
|
||||
? "true"
|
||||
: filterDuplicates.value === false
|
||||
? "0"
|
||||
? "false"
|
||||
: null,
|
||||
filterPlayables:
|
||||
filterPlayables.value === true
|
||||
? "1"
|
||||
? "true"
|
||||
: filterPlayables.value === false
|
||||
? "0"
|
||||
? "false"
|
||||
: null,
|
||||
filterMissing:
|
||||
filterMissing.value === true
|
||||
? "1"
|
||||
? "true"
|
||||
: filterMissing.value === false
|
||||
? "0"
|
||||
? "false"
|
||||
: null,
|
||||
filterVerified:
|
||||
filterVerified.value === true
|
||||
? "1"
|
||||
? "true"
|
||||
: filterVerified.value === false
|
||||
? "0"
|
||||
? "false"
|
||||
: null,
|
||||
filterRA:
|
||||
filterRA.value === true ? "1" : filterRA.value === false ? "0" : null,
|
||||
filterRA.value === true
|
||||
? "true"
|
||||
: filterRA.value === false
|
||||
? "false"
|
||||
: null,
|
||||
platforms:
|
||||
selectedPlatforms.value.length > 0
|
||||
? selectedPlatforms.value.map((p) => String(p.id)).join(",")
|
||||
@@ -313,7 +317,6 @@ async function fetchSearchFilteredRoms() {
|
||||
orderBy: romsStore.orderBy,
|
||||
orderDir: romsStore.orderDir,
|
||||
// Exclude all other filters
|
||||
filterUnmatched: false,
|
||||
filterMatched: false,
|
||||
filterFavorites: null,
|
||||
filterDuplicates: null,
|
||||
@@ -436,62 +439,54 @@ onMounted(async () => {
|
||||
|
||||
// Check for query params to set filters
|
||||
if (urlMatched !== undefined) {
|
||||
if (urlMatched === "1") {
|
||||
if (urlMatched) {
|
||||
galleryFilterStore.setFilterMatched(true);
|
||||
} else if (urlMatched === "2") {
|
||||
galleryFilterStore.setFilterUnmatched(true);
|
||||
} else {
|
||||
galleryFilterStore.setFilterMatched(false);
|
||||
}
|
||||
// urlMatched === "0" or any other value means no filter (both remain null)
|
||||
// Any other value means no filter (both remain null)
|
||||
}
|
||||
if (urlFilteredFavorites !== undefined) {
|
||||
galleryFilterStore.setFilterFavorites(
|
||||
urlFilteredFavorites === "1"
|
||||
? true
|
||||
: urlFilteredFavorites === "0"
|
||||
? false
|
||||
: null,
|
||||
);
|
||||
if (urlFilteredFavorites) {
|
||||
galleryFilterStore.setFilterFavorites(true);
|
||||
} else {
|
||||
galleryFilterStore.setFilterFavorites(false);
|
||||
}
|
||||
}
|
||||
if (urlFilteredDuplicates !== undefined) {
|
||||
galleryFilterStore.setFilterDuplicates(
|
||||
urlFilteredDuplicates === "1"
|
||||
? true
|
||||
: urlFilteredDuplicates === "0"
|
||||
? false
|
||||
: null,
|
||||
);
|
||||
if (urlFilteredDuplicates) {
|
||||
galleryFilterStore.setFilterDuplicates(true);
|
||||
} else {
|
||||
galleryFilterStore.setFilterDuplicates(false);
|
||||
}
|
||||
}
|
||||
if (urlFilteredPlayables !== undefined) {
|
||||
galleryFilterStore.setFilterPlayables(
|
||||
urlFilteredPlayables === "1"
|
||||
? true
|
||||
: urlFilteredPlayables === "0"
|
||||
? false
|
||||
: null,
|
||||
);
|
||||
if (urlFilteredPlayables) {
|
||||
galleryFilterStore.setFilterPlayables(true);
|
||||
} else {
|
||||
galleryFilterStore.setFilterPlayables(false);
|
||||
}
|
||||
}
|
||||
if (urlFilteredMissing !== undefined) {
|
||||
galleryFilterStore.setFilterMissing(
|
||||
urlFilteredMissing === "1"
|
||||
? true
|
||||
: urlFilteredMissing === "0"
|
||||
? false
|
||||
: null,
|
||||
);
|
||||
if (urlFilteredMissing) {
|
||||
galleryFilterStore.setFilterMissing(true);
|
||||
} else {
|
||||
galleryFilterStore.setFilterMissing(false);
|
||||
}
|
||||
}
|
||||
if (urlFilteredVerified !== undefined) {
|
||||
galleryFilterStore.setFilterVerified(
|
||||
urlFilteredVerified === "1"
|
||||
? true
|
||||
: urlFilteredVerified === "0"
|
||||
? false
|
||||
: null,
|
||||
);
|
||||
if (urlFilteredVerified) {
|
||||
galleryFilterStore.setFilterVerified(true);
|
||||
} else {
|
||||
galleryFilterStore.setFilterVerified(false);
|
||||
}
|
||||
}
|
||||
if (urlFilteredRa !== undefined) {
|
||||
galleryFilterStore.setFilterRA(
|
||||
urlFilteredRa === "1" ? true : urlFilteredRa === "0" ? false : null,
|
||||
);
|
||||
if (urlFilteredRa) {
|
||||
galleryFilterStore.setFilterRA(true);
|
||||
} else {
|
||||
galleryFilterStore.setFilterRA(false);
|
||||
}
|
||||
}
|
||||
// Check for query params to set multi-value filters (prioritize over single values)
|
||||
if (urlPlatforms !== undefined) {
|
||||
|
||||
Reference in New Issue
Block a user