1
0
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:
2025-08-04 23:29:46 +02:00
parent 589f1f44f3
commit 539199ce41
3 changed files with 45 additions and 82 deletions

View File

@@ -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> {

View File

@@ -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
}
}

View File

@@ -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