mirror of
https://github.com/tcgdex/cards-database.git
synced 2025-07-29 11:09:51 +00:00
feat: Add advanced filtering capabilities (#522)
This commit is contained in:
@ -1,48 +1,47 @@
|
||||
import { objectLoop } from '@dzeio/object-util'
|
||||
import { CardResume, Card as SDKCard, SupportedLanguages } from '@tcgdex/sdk'
|
||||
import { Query } from '../../interfaces'
|
||||
import { handlePagination, handleSort, handleValidation } from '../../util'
|
||||
import Set from './Set'
|
||||
import type { CardResume, Card as SDKCard, SupportedLanguages } from '@tcgdex/sdk'
|
||||
import { executeQuery, type Query } from '../../libs/QueryEngine/filter'
|
||||
import TCGSet from './Set'
|
||||
|
||||
import en from '../../../generated/en/cards.json'
|
||||
import fr from '../../../generated/fr/cards.json'
|
||||
import es from '../../../generated/es/cards.json'
|
||||
import it from '../../../generated/it/cards.json'
|
||||
import pt from '../../../generated/pt/cards.json'
|
||||
import ptbr from '../../../generated/pt-br/cards.json'
|
||||
import ptpt from '../../../generated/pt-pt/cards.json'
|
||||
import de from '../../../generated/de/cards.json'
|
||||
import nl from '../../../generated/nl/cards.json'
|
||||
import pl from '../../../generated/pl/cards.json'
|
||||
import ru from '../../../generated/ru/cards.json'
|
||||
import en from '../../../generated/en/cards.json'
|
||||
import es from '../../../generated/es/cards.json'
|
||||
import fr from '../../../generated/fr/cards.json'
|
||||
import id from '../../../generated/id/cards.json'
|
||||
import it from '../../../generated/it/cards.json'
|
||||
import ja from '../../../generated/ja/cards.json'
|
||||
import ko from '../../../generated/ko/cards.json'
|
||||
import zhtw from '../../../generated/zh-tw/cards.json'
|
||||
import id from '../../../generated/id/cards.json'
|
||||
import nl from '../../../generated/nl/cards.json'
|
||||
import pl from '../../../generated/pl/cards.json'
|
||||
import ptbr from '../../../generated/pt-br/cards.json'
|
||||
import ptpt from '../../../generated/pt-pt/cards.json'
|
||||
import pt from '../../../generated/pt/cards.json'
|
||||
import ru from '../../../generated/ru/cards.json'
|
||||
import th from '../../../generated/th/cards.json'
|
||||
import zhcn from '../../../generated/zh-cn/cards.json'
|
||||
import zhtw from '../../../generated/zh-tw/cards.json'
|
||||
|
||||
const cards = {
|
||||
'en': en,
|
||||
'fr': fr,
|
||||
'es': es,
|
||||
'it': it,
|
||||
'pt': pt,
|
||||
en: en,
|
||||
fr: fr,
|
||||
es: es,
|
||||
it: it,
|
||||
pt: pt,
|
||||
'pt-br': ptbr,
|
||||
'pt-pt': ptpt,
|
||||
'de': de,
|
||||
'nl': nl,
|
||||
'pl': pl,
|
||||
'ru': ru,
|
||||
'ja': ja,
|
||||
'ko': ko,
|
||||
de: de,
|
||||
nl: nl,
|
||||
pl: pl,
|
||||
ru: ru,
|
||||
ja: ja,
|
||||
ko: ko,
|
||||
'zh-tw': zhtw,
|
||||
'id': id,
|
||||
'th': th,
|
||||
id: id,
|
||||
th: th,
|
||||
'zh-cn': zhcn,
|
||||
} as const
|
||||
|
||||
type LocalCard = Omit<SDKCard, 'set'> & {set: () => Set}
|
||||
type LocalCard = Omit<SDKCard, 'set'> & {set: () => TCGSet}
|
||||
|
||||
interface variants {
|
||||
normal?: boolean;
|
||||
@ -93,8 +92,8 @@ export default class Card implements LocalCard {
|
||||
})
|
||||
}
|
||||
|
||||
public set(): Set {
|
||||
return Set.findOne(this.lang, {filters: { id: this.card.set.id }}) as Set
|
||||
public set(): TCGSet {
|
||||
return TCGSet.findOne(this.lang, { id: this.card.set.id }) as TCGSet
|
||||
}
|
||||
|
||||
public static getAll(lang: SupportedLanguages): Array<SDKCard> {
|
||||
@ -102,16 +101,15 @@ export default class Card implements LocalCard {
|
||||
}
|
||||
|
||||
public static find(lang: SupportedLanguages, query: Query<SDKCard>) {
|
||||
return handlePagination(handleSort(handleValidation(this.getAll(lang), query), query), query)
|
||||
.map((it) => new Card(lang, it))
|
||||
return executeQuery(Card.getAll(lang), query).data.map((it) => new Card(lang, it))
|
||||
}
|
||||
|
||||
public static findOne(lang: SupportedLanguages, query: Query<SDKCard>) {
|
||||
const res = handleSort(handleValidation(this.getAll(lang), query), query)
|
||||
const res = Card.find(lang, query)
|
||||
if (res.length === 0) {
|
||||
return undefined
|
||||
}
|
||||
return new Card(lang, res[0])
|
||||
return res[0]
|
||||
}
|
||||
|
||||
public resume(): CardResume {
|
||||
|
@ -1,49 +1,48 @@
|
||||
import { objectLoop } from '@dzeio/object-util'
|
||||
import { Serie as SDKSerie, SerieResume, SupportedLanguages } from '@tcgdex/sdk'
|
||||
import { Query } from '../../interfaces'
|
||||
import { handlePagination, handleSort, handleValidation } from '../../util'
|
||||
import Set from './Set'
|
||||
import type { Serie as SDKSerie, SerieResume, SupportedLanguages } from '@tcgdex/sdk'
|
||||
import { executeQuery, type Query } from '../../libs/QueryEngine/filter'
|
||||
import TCGSet from './Set'
|
||||
|
||||
import en from '../../../generated/en/series.json'
|
||||
import fr from '../../../generated/fr/series.json'
|
||||
import es from '../../../generated/es/series.json'
|
||||
import it from '../../../generated/it/series.json'
|
||||
import pt from '../../../generated/pt/series.json'
|
||||
import ptbr from '../../../generated/pt-br/series.json'
|
||||
import ptpt from '../../../generated/pt-pt/series.json'
|
||||
import de from '../../../generated/de/series.json'
|
||||
import nl from '../../../generated/nl/series.json'
|
||||
import pl from '../../../generated/pl/series.json'
|
||||
import ru from '../../../generated/ru/series.json'
|
||||
import en from '../../../generated/en/series.json'
|
||||
import es from '../../../generated/es/series.json'
|
||||
import fr from '../../../generated/fr/series.json'
|
||||
import id from '../../../generated/id/series.json'
|
||||
import it from '../../../generated/it/series.json'
|
||||
import ja from '../../../generated/ja/series.json'
|
||||
import ko from '../../../generated/ko/series.json'
|
||||
import zhtw from '../../../generated/zh-tw/series.json'
|
||||
import id from '../../../generated/id/series.json'
|
||||
import nl from '../../../generated/nl/series.json'
|
||||
import pl from '../../../generated/pl/series.json'
|
||||
import ptbr from '../../../generated/pt-br/series.json'
|
||||
import ptpt from '../../../generated/pt-pt/series.json'
|
||||
import pt from '../../../generated/pt/series.json'
|
||||
import ru from '../../../generated/ru/series.json'
|
||||
import th from '../../../generated/th/series.json'
|
||||
import zhcn from '../../../generated/zh-cn/series.json'
|
||||
import zhtw from '../../../generated/zh-tw/series.json'
|
||||
|
||||
|
||||
const series = {
|
||||
'en': en,
|
||||
'fr': fr,
|
||||
'es': es,
|
||||
'it': it,
|
||||
'pt': pt,
|
||||
en: en,
|
||||
fr: fr,
|
||||
es: es,
|
||||
it: it,
|
||||
pt: pt,
|
||||
'pt-br': ptbr,
|
||||
'pt-pt': ptpt,
|
||||
'de': de,
|
||||
'nl': nl,
|
||||
'pl': pl,
|
||||
'ru': ru,
|
||||
'ja': ja,
|
||||
'ko': ko,
|
||||
de: de,
|
||||
nl: nl,
|
||||
pl: pl,
|
||||
ru: ru,
|
||||
ja: ja,
|
||||
ko: ko,
|
||||
'zh-tw': zhtw,
|
||||
'id': id,
|
||||
'th': th,
|
||||
id: id,
|
||||
th: th,
|
||||
'zh-cn': zhcn,
|
||||
} as const
|
||||
|
||||
type LocalSerie = Omit<SDKSerie, 'sets'> & {sets: () => Array<Set>}
|
||||
type LocalSerie = Omit<SDKSerie, 'sets'> & {sets: () => Array<TCGSet>}
|
||||
|
||||
export default class Serie implements LocalSerie {
|
||||
|
||||
@ -63,8 +62,8 @@ export default class Serie implements LocalSerie {
|
||||
})
|
||||
}
|
||||
|
||||
public sets(): Array<Set> {
|
||||
return this.serie.sets.map((s) => Set.findOne(this.lang, {filters: { id: s.id }}) as Set)
|
||||
public sets(): Array<TCGSet> {
|
||||
return this.serie.sets.map((s) => TCGSet.findOne(this.lang, { id: s.id }) as TCGSet)
|
||||
}
|
||||
|
||||
public static getAll(lang: SupportedLanguages): Array<SDKSerie> {
|
||||
@ -72,16 +71,15 @@ export default class Serie implements LocalSerie {
|
||||
}
|
||||
|
||||
public static find(lang: SupportedLanguages, query: Query<SDKSerie>) {
|
||||
return handlePagination(handleSort(handleValidation(this.getAll(lang), query), query), query)
|
||||
.map((it) => new Serie(lang, it))
|
||||
return executeQuery(Serie.getAll(lang), query).data.map((it) => new Serie(lang, it))
|
||||
}
|
||||
|
||||
public static findOne(lang: SupportedLanguages, query: Query<SDKSerie>) {
|
||||
const res = handleValidation(this.getAll(lang), query)
|
||||
const res = Serie.find(lang, query)
|
||||
if (res.length === 0) {
|
||||
return undefined
|
||||
}
|
||||
return new Serie(lang, res[0])
|
||||
return res[0]
|
||||
}
|
||||
|
||||
public resume(): SerieResume {
|
||||
|
@ -1,45 +1,44 @@
|
||||
import { objectLoop } from '@dzeio/object-util'
|
||||
import { Set as SDKSet, SetResume, SupportedLanguages } from '@tcgdex/sdk'
|
||||
import { Query } from '../../interfaces'
|
||||
import { handlePagination, handleSort, handleValidation } from '../../util'
|
||||
import type { Set as SDKSet, SetResume, SupportedLanguages } from '@tcgdex/sdk'
|
||||
import { executeQuery, type Query } from '../../libs/QueryEngine/filter'
|
||||
import Card from './Card'
|
||||
import Serie from './Serie'
|
||||
|
||||
import en from '../../../generated/en/sets.json'
|
||||
import fr from '../../../generated/fr/sets.json'
|
||||
import es from '../../../generated/es/sets.json'
|
||||
import it from '../../../generated/it/sets.json'
|
||||
import pt from '../../../generated/pt/sets.json'
|
||||
import ptbr from '../../../generated/pt-br/sets.json'
|
||||
import ptpt from '../../../generated/pt-pt/sets.json'
|
||||
import de from '../../../generated/de/sets.json'
|
||||
import nl from '../../../generated/nl/sets.json'
|
||||
import pl from '../../../generated/pl/sets.json'
|
||||
import ru from '../../../generated/ru/sets.json'
|
||||
import en from '../../../generated/en/sets.json'
|
||||
import es from '../../../generated/es/sets.json'
|
||||
import fr from '../../../generated/fr/sets.json'
|
||||
import id from '../../../generated/id/sets.json'
|
||||
import it from '../../../generated/it/sets.json'
|
||||
import ja from '../../../generated/ja/sets.json'
|
||||
import ko from '../../../generated/ko/sets.json'
|
||||
import zhtw from '../../../generated/zh-tw/sets.json'
|
||||
import id from '../../../generated/id/sets.json'
|
||||
import nl from '../../../generated/nl/sets.json'
|
||||
import pl from '../../../generated/pl/sets.json'
|
||||
import ptbr from '../../../generated/pt-br/sets.json'
|
||||
import ptpt from '../../../generated/pt-pt/sets.json'
|
||||
import pt from '../../../generated/pt/sets.json'
|
||||
import ru from '../../../generated/ru/sets.json'
|
||||
import th from '../../../generated/th/sets.json'
|
||||
import zhcn from '../../../generated/zh-cn/sets.json'
|
||||
import zhtw from '../../../generated/zh-tw/sets.json'
|
||||
|
||||
const sets = {
|
||||
'en': en,
|
||||
'fr': fr,
|
||||
'es': es,
|
||||
'it': it,
|
||||
'pt': pt,
|
||||
en: en,
|
||||
fr: fr,
|
||||
es: es,
|
||||
it: it,
|
||||
pt: pt,
|
||||
'pt-br': ptbr,
|
||||
'pt-pt': ptpt,
|
||||
'de': de,
|
||||
'nl': nl,
|
||||
'pl': pl,
|
||||
'ru': ru,
|
||||
'ja': ja,
|
||||
'ko': ko,
|
||||
de: de,
|
||||
nl: nl,
|
||||
pl: pl,
|
||||
ru: ru,
|
||||
ja: ja,
|
||||
ko: ko,
|
||||
'zh-tw': zhtw,
|
||||
'id': id,
|
||||
'th': th,
|
||||
id: id,
|
||||
th: th,
|
||||
'zh-cn': zhcn,
|
||||
} as const
|
||||
|
||||
@ -77,11 +76,11 @@ export default class Set implements LocalSet {
|
||||
symbol?: string | undefined
|
||||
|
||||
public serie(): Serie {
|
||||
return Serie.findOne(this.lang, {filters: { id: this.set.serie.id }}) as Serie
|
||||
return Serie.findOne(this.lang, { id: this.set.serie.id }) as Serie
|
||||
}
|
||||
|
||||
public cards(): Array<Card> {
|
||||
return this.set.cards.map((s) => Card.findOne(this.lang, { filters: { id: s.id }}) as Card)
|
||||
return this.set.cards.map((s) => Card.findOne(this.lang, { id: s.id }) as Card)
|
||||
}
|
||||
|
||||
public static getAll(lang: SupportedLanguages): Array<SDKSet> {
|
||||
@ -89,16 +88,15 @@ export default class Set implements LocalSet {
|
||||
}
|
||||
|
||||
public static find(lang: SupportedLanguages, query: Query<SDKSet>) {
|
||||
return handlePagination(handleSort(handleValidation(this.getAll(lang), query), query), query)
|
||||
.map((it) => new Set(lang, it))
|
||||
return executeQuery(Set.getAll(lang), query).data.map((it) => new Set(lang, it))
|
||||
}
|
||||
|
||||
public static findOne(lang: SupportedLanguages, query: Query<SDKSet>) {
|
||||
const res = handleValidation(this.getAll(lang), query)
|
||||
const res = Set.find(lang, query)
|
||||
if (res.length === 0) {
|
||||
return undefined
|
||||
}
|
||||
return new Set(lang, res[0])
|
||||
return res[0]
|
||||
}
|
||||
|
||||
public resume(): SetResume {
|
||||
|
Reference in New Issue
Block a user