compiler/utils/serieUtil.ts
Florian Bouillon 729787ae68
Changes the order of the series
Signed-off-by: Avior <florian.bouillon@delta-wings.net>
2021-04-23 15:21:49 +02:00

40 lines
1.4 KiB
TypeScript

import { smartGlob } from "./util"
import { setToSetSimple, getSets } from "./setUtil"
import { Serie, SupportedLanguages, Set } from 'db/interfaces'
import { Serie as SerieSingle, SerieResume } from '@tcgdex/sdk/interfaces'
export async function getSeries(): Promise<Array<Serie>> {
const series = await Promise.all((await smartGlob('./db/data/*.js'))
.map((it) => it.substring(it.lastIndexOf('/') + 1, it.length - 3))
.map((it) => getSerie(it)))
const tmp: Array<[Serie, Set]> = await Promise.all(series.map( async (it) => {
return [it, (await getSets(it.name.en)).reduce<Set | undefined>((p, c) => p ? p.releaseDate < c.releaseDate ? p : c : c, undefined) as Set] as [Serie, Set]
}))
return tmp.sort((a, b) => a[1].releaseDate > b[1].releaseDate ? 1 : -1).map((it) => it[0])
}
export async function getSerie(name: string): Promise<Serie> {
return (await import(`../db/data/${name}.js`)).default
}
export async function serieToSerieSimple(serie: Serie, lang: SupportedLanguages): Promise<SerieResume> {
return {
id: serie.id,
name: serie.name[lang] as string
}
}
export async function serieToSerieSingle(serie: Serie, lang: SupportedLanguages): Promise<SerieSingle> {
const setsTmp = await getSets(serie.name.en)
const sets = await Promise.all(setsTmp
.sort((a, b) => {
return a.releaseDate > b.releaseDate ? 1 : -1
})
.map(el => setToSetSimple(el, lang)))
return {
id: serie.id,
name: serie.name[lang] as string,
sets
}
}