Changes the order of the series

Signed-off-by: Avior <florian.bouillon@delta-wings.net>
This commit is contained in:
Florian Bouillon 2021-04-23 15:21:49 +02:00
parent 5e50e352e5
commit 729787ae68
Signed by: Florian Bouillon
GPG Key ID: 50BD648F12C86AB6
2 changed files with 9 additions and 5 deletions

View File

@ -1,12 +1,16 @@
import { smartGlob } from "./util" import { smartGlob } from "./util"
import { setToSetSimple, getSets } from "./setUtil" import { setToSetSimple, getSets } from "./setUtil"
import { Serie, SupportedLanguages } from 'db/interfaces' import { Serie, SupportedLanguages, Set } from 'db/interfaces'
import { Serie as SerieSingle, SerieResume } from '@tcgdex/sdk/interfaces' import { Serie as SerieSingle, SerieResume } from '@tcgdex/sdk/interfaces'
export async function getSeries(): Promise<Array<Serie>> { export async function getSeries(): Promise<Array<Serie>> {
return Promise.all((await smartGlob('./db/data/*.js')) const series = await Promise.all((await smartGlob('./db/data/*.js'))
.map((it) => it.substring(it.lastIndexOf('/') + 1, it.length - 3)) .map((it) => it.substring(it.lastIndexOf('/') + 1, it.length - 3))
.map((it) => getSerie(it))) .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> { export async function getSerie(name: string): Promise<Serie> {

View File

@ -12,17 +12,17 @@ const setCache: t = {}
// Dont use cache as it wont necessary have them all // Dont use cache as it wont necessary have them all
export async function getSets(serie = '*'): Promise<Array<Set>> { export async function getSets(serie = '*'): Promise<Array<Set>> {
const sets = (await smartGlob(`./db/data/${serie}/*.js`)).map((set) => set.substring(set.lastIndexOf('/')+1, set.lastIndexOf('.'))) const sets = (await smartGlob(`./db/data/${serie}/*.js`)).map((set) => set.substring(set.lastIndexOf('/')+1, set.lastIndexOf('.')))
return Promise.all(sets.map((set) => getSet(set))) return Promise.all(sets.map((set) => getSet(set, serie)))
} }
/** /**
* Return the set * Return the set
* @param name the name of the set (don't include.js/.ts) * @param name the name of the set (don't include.js/.ts)
*/ */
export async function getSet(name: string): Promise<Set> { export async function getSet(name: string, serie = '*'): Promise<Set> {
if (!setCache[name]) { if (!setCache[name]) {
try { try {
const [path] = await smartGlob(`./db/data/*/${name}.js`) const [path] = await smartGlob(`./db/data/${serie}/${name}.js`)
setCache[name] = (await import(path.replace('./', '../'))).default setCache[name] = (await import(path.replace('./', '../'))).default
} catch (e) { } catch (e) {
const set = (await getSets()).find((s) => s.id === name) const set = (await getSets()).find((s) => s.id === name)