mirror of
https://github.com/tcgdex/cards-database.git
synced 2025-04-24 03:42:13 +00:00
97 lines
2.4 KiB
TypeScript
97 lines
2.4 KiB
TypeScript
import { objectLoop } from '@dzeio/object-util'
|
|
import type { Serie as SDKSerie, SerieResume, SupportedLanguages } from '@tcgdex/sdk'
|
|
import { executeQuery, type Query } from '../../libs/QueryEngine/filter'
|
|
import TCGSet from './Set'
|
|
|
|
import de from '../../../generated/de/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 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,
|
|
'pt-br': ptbr,
|
|
'pt-pt': ptpt,
|
|
de: de,
|
|
nl: nl,
|
|
pl: pl,
|
|
ru: ru,
|
|
ja: ja,
|
|
ko: ko,
|
|
'zh-tw': zhtw,
|
|
id: id,
|
|
th: th,
|
|
'zh-cn': zhcn,
|
|
} as const
|
|
|
|
type LocalSerie = Omit<SDKSerie, 'sets'> & {sets: () => Array<TCGSet>}
|
|
|
|
export default class Serie implements LocalSerie {
|
|
|
|
id!: string
|
|
name!: string
|
|
logo?: string | undefined
|
|
|
|
public constructor(
|
|
private lang: SupportedLanguages,
|
|
private serie: SDKSerie
|
|
) {
|
|
objectLoop(serie, (it, key) => {
|
|
if (key === 'sets') {
|
|
return
|
|
}
|
|
this[key as 'id'] = it as string
|
|
})
|
|
}
|
|
|
|
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> {
|
|
return series[lang]
|
|
}
|
|
|
|
public static find(lang: SupportedLanguages, query: Query<SDKSerie>) {
|
|
return executeQuery(Serie.getAll(lang), query).data.map((it) => new Serie(lang, it))
|
|
}
|
|
|
|
public static findOne(lang: SupportedLanguages, query: Query<SDKSerie>) {
|
|
const res = Serie.find(lang, query)
|
|
if (res.length === 0) {
|
|
return undefined
|
|
}
|
|
return res[0]
|
|
}
|
|
|
|
public resume(): SerieResume {
|
|
return {
|
|
id: this.id,
|
|
name: this.name,
|
|
logo: this.logo
|
|
}
|
|
}
|
|
|
|
public full(): SDKSerie {
|
|
return this.serie
|
|
}
|
|
}
|