1
0
mirror of https://github.com/tcgdex/cards-database.git synced 2025-04-23 11:22:10 +00:00

fix: no data was returned when filtering with set (#568)

This commit is contained in:
Florian Bouillon 2024-11-05 19:03:12 +01:00 committed by GitHub
parent 07a8ad0b8e
commit 64bcd0524d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 47 additions and 6 deletions

View File

@ -0,0 +1,21 @@
meta {
name: 567 - invalid data returned when filtering using set
type: http
seq: 9
}
get {
url: {{BASE_URL}}/v2/en/cards?name=umbreon&set=evolving skies
body: none
auth: none
}
params:query {
name: umbreon
set: evolving skies
}
assert {
res.status: eq 200
res.body.length: lt 0
}

View File

@ -128,17 +128,37 @@ server
let result: unknown let result: unknown
switch (endpoint) { switch (endpoint) {
case 'cards': case 'cards': {
if ('set' in query) {
const tmp = query.set
delete query.set
query.$or = [{
'set.id': tmp
}, {
'set.name': tmp
}]
}
result = Card result = Card
.find(lang, query) .find(lang, query)
.map((c) => c.resume()) .map((c) => c.resume())
break break
}
case 'sets': case 'sets': {
if ('serie' in query) {
const tmp = query.serie
delete query.serie
query.$or = [{
'serie.id': tmp
}, {
'serie.name': tmp
}]
}
result = TCGSet result = TCGSet
.find(lang, query) .find(lang, query)
.map((c) => c.resume()) .map((c) => c.resume())
break break
}
case 'series': case 'series':
result = Serie result = Serie
.find(lang, query) .find(lang, query)
@ -233,8 +253,8 @@ server
} }
result = { result = {
name: id, name: id,
cards: Card.find(lang, {[endpointToField[endpoint]]: id}) cards: Card.find(lang, { [endpointToField[endpoint]]: id })
.map((c) => c.resume()) .map((c) => c.resume())
} }
} }
if (!result) { if (!result) {
@ -269,8 +289,8 @@ server
case 'sets': case 'sets':
// allow the dev to use a non prefixed value like `10` instead of `010` for newer sets // allow the dev to use a non prefixed value like `10` instead of `010` for newer sets
result = Card result = Card
// @ts-expect-error normal behavior until the filtering is more fiable // @ts-expect-error normal behavior until the filtering is more fiable
.findOne(lang, { localId: { $or: [subid.padStart(3, '0'), subid]}, $or: [{ 'set.id': id }, { 'set.name': id }] })?.full() .findOne(lang, { localId: { $or: [subid.padStart(3, '0'), subid] }, $or: [{ 'set.id': id }, { 'set.name': id }] })?.full()
break break
} }
if (!result) { if (!result) {