mirror of
https://github.com/tcgdex/cards-database.git
synced 2025-08-16 09:08:52 +00:00
fix: update
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
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 { findOneSet } from './Set'
|
||||
|
||||
import de from '../../../generated/de/series.json'
|
||||
import en from '../../../generated/en/series.json'
|
||||
@@ -64,8 +64,8 @@ export default class Serie implements LocalSerie {
|
||||
})
|
||||
}
|
||||
|
||||
public sets(): Array<TCGSet> {
|
||||
return this.serie.sets.map((s) => TCGSet.findOne(this.lang, { id: s.id }) as TCGSet)
|
||||
public async sets(): Array<TCGSet> {
|
||||
return Promise.all(this.serie.sets.map((s) => findOneSet(this.lang, { id: s.id })))
|
||||
}
|
||||
|
||||
public static getAll(lang: SupportedLanguages): Array<SDKSerie> {
|
||||
|
@@ -44,78 +44,43 @@ export const sets = {
|
||||
'zh-cn': zhcn,
|
||||
} as const
|
||||
|
||||
interface variants {
|
||||
normal?: boolean;
|
||||
reverse?: boolean;
|
||||
holo?: boolean;
|
||||
firstEdition?: boolean;
|
||||
type MappedSet = any // (typeof en)[number]
|
||||
|
||||
export async function getAllSets(lang: SupportedLanguages): Promise<Array<SDKSet>> {
|
||||
return Promise.all((sets[lang] as Array<MappedSet>).map(transformSet))
|
||||
}
|
||||
|
||||
type LocalSet = {serie: () => Serie, cards: () => Array<Card>} & Omit<SDKSet, 'serie' | 'cards'>
|
||||
|
||||
export default class Set implements LocalSet {
|
||||
|
||||
public constructor(
|
||||
private lang: SupportedLanguages,
|
||||
private set: SDKSet
|
||||
) {
|
||||
objectLoop(set, (it, key) => {
|
||||
if (key === 'serie' || key === 'cards') {
|
||||
return
|
||||
}
|
||||
this[key as 'tcgOnline'] = it as string
|
||||
})
|
||||
async function transformSet(set: MappedSet): Promise<SDKSet> {
|
||||
return {
|
||||
...objectOmit(card, 'thirdParty'),
|
||||
// pricing: {
|
||||
// cardmarket: await getCardMarketPrice(card),
|
||||
// tcgplayer: await getTCGPlayerPrice(card)
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
export async function findSets(lang: SupportedLanguages, query: Query<SDKSet>) {
|
||||
return executeQuery(await getAllSets(lang), query).data
|
||||
}
|
||||
|
||||
export async function findOneSet(lang: SupportedLanguages, query: Query<SDKSet>) {
|
||||
const res = await findSets(lang, query)
|
||||
if (res.length === 0) {
|
||||
return undefined
|
||||
}
|
||||
return res[0]
|
||||
}
|
||||
|
||||
export function setToBrief(set: SDKSet): SetResume {
|
||||
return {
|
||||
id: set.id,
|
||||
name: set.name,
|
||||
logo: set.logo,
|
||||
symbol: set.symbol,
|
||||
cardCount: {
|
||||
total: set.cardCount.total,
|
||||
official: set.cardCount.official
|
||||
}
|
||||
}
|
||||
|
||||
tcgOnline?: string | undefined
|
||||
variants?: variants | undefined
|
||||
releaseDate!: string
|
||||
legal!: { standard: boolean; expanded: boolean }
|
||||
cardCount!: { total: number; official: number; normal: number; reverse: number; holo: number; firstEd?: number | undefined }
|
||||
id!: string
|
||||
name!: string
|
||||
logo?: string | undefined
|
||||
symbol?: string | undefined
|
||||
|
||||
public serie(): Serie {
|
||||
return Serie.findOne(this.lang, { id: this.set.serie.id }) as Serie
|
||||
}
|
||||
|
||||
public cards(): Array<Card> {
|
||||
return this.set.cards.map((s) => findOneCard(this.lang, { id: s.id }) as Card)
|
||||
}
|
||||
|
||||
public static getAll(lang: SupportedLanguages): Array<SDKSet> {
|
||||
return sets[lang]
|
||||
}
|
||||
|
||||
public static find(lang: SupportedLanguages, query: Query<SDKSet>) {
|
||||
return executeQuery(Set.getAll(lang), query).data.map((it) => new Set(lang, it))
|
||||
}
|
||||
|
||||
public static findOne(lang: SupportedLanguages, query: Query<SDKSet>) {
|
||||
const res = Set.find(lang, query)
|
||||
if (res.length === 0) {
|
||||
return undefined
|
||||
}
|
||||
return res[0]
|
||||
}
|
||||
|
||||
public resume(): SetResume {
|
||||
return {
|
||||
id: this.id,
|
||||
name: this.name,
|
||||
logo: this.logo,
|
||||
symbol: this.symbol,
|
||||
cardCount: {
|
||||
total: this.cardCount.total,
|
||||
official: this.cardCount.official
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public full(): SDKSet {
|
||||
return this.set
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -7,8 +7,8 @@ import type { Query } from '../../libs/QueryEngine/filter'
|
||||
import { recordToQuery } from '../../libs/QueryEngine/parsers'
|
||||
import { betterSorter, checkLanguage, unique } from '../../util'
|
||||
import { getAllCards, findOneCard, findCards, toBrief } from '../Components/Card'
|
||||
import { getAllSets, findOneSet, findSets, setToBrief } from '../Components/Set'
|
||||
import Serie from '../Components/Serie'
|
||||
import TCGSet from '../Components/Set'
|
||||
|
||||
type CustomRequest = Request & {
|
||||
/**
|
||||
@@ -86,13 +86,13 @@ server
|
||||
// biome-ignore lint/style/noNonNullAssertion: <explanation>
|
||||
const query: Query = req.advQuery!
|
||||
|
||||
let data: Array<SDKCard | TCGSet | Serie> = []
|
||||
let data: Array<SDKCard | any | Serie> = []
|
||||
switch (what.toLowerCase()) {
|
||||
case 'card':
|
||||
data = await findCards(lang, query)
|
||||
break
|
||||
case 'set':
|
||||
data = TCGSet.find(lang, query)
|
||||
data = findSets(lang, query)
|
||||
break
|
||||
case 'serie':
|
||||
data = Serie.find(lang, query)
|
||||
@@ -153,9 +153,7 @@ server
|
||||
'serie.name': tmp
|
||||
}]
|
||||
}
|
||||
result = TCGSet
|
||||
.find(lang, query)
|
||||
.map((c) => c.resume())
|
||||
result = await findSets(lang, query).map(setToBrief)
|
||||
break
|
||||
}
|
||||
case 'series':
|
||||
@@ -234,9 +232,9 @@ server
|
||||
break
|
||||
|
||||
case 'sets':
|
||||
result = TCGSet.findOne(lang, { id })?.full()
|
||||
result = await findOneset(lang, { id })
|
||||
if (!result) {
|
||||
result = TCGSet.findOne(lang, { name: id })?.full()
|
||||
result = await findOneset(lang, { name: id })
|
||||
}
|
||||
break
|
||||
|
||||
|
Reference in New Issue
Block a user