Fix: Last UI Fixes + better create JSON

This commit is contained in:
zuma 2025-02-12 20:05:02 +01:00
parent 0ea1d4a3e4
commit 29411757cb
12 changed files with 54 additions and 53 deletions

View file

@ -1,5 +1,6 @@
import { PrismaClient } from '@prisma/client'
import { writeFileSync } from 'fs'
import { performance } from 'perf_hooks'
const db = new PrismaClient()
@ -48,24 +49,11 @@ function getColorName(colorArray) {
return ""
}
// I need to create
//
// Commanders
// top all
// top by colors
//
// bsets
// Commanders
//
//
// Lands
// lands.json
// All jsons lands from colors
// Types
async function createJson() {
console.log("Fetching data...")
const start = performance.now()
console.log(process.env.NODE_ENV)
console.log("Fetching data...")
const bsets = await db.bset.findMany({
relationLoadStrategy: "join",
include: {
@ -92,6 +80,7 @@ async function createJson() {
})
console.log("Creating stats...")
let bsets_list_export = []
let all_cards = []
const commanderData = {"top": []}
@ -151,36 +140,32 @@ async function createJson() {
bset_cards_data_export[bset.sanitized_name][card.type].push(card_object)
if(card.can_be_commander) {
card_object.total_decks = bset.decks.length
card_object.nbr_decks = card.decks_as_commander != undefined ? card.decks_as_commander.length : 0
card_object.percent_decks = (card_object.total_decks != 0) ? parseInt(10000 * (card_object.nbr_decks / card_object.total_decks)) / 100 : 0
bset_cards_data_export[bset.sanitized_name]["commander"].push(card_object)
let commander_card_object = structuredClone(card_object)
commander_card_object.total_decks = bset.decks.length
commander_card_object.nbr_decks = card.decks_as_commander != undefined ? card.decks_as_commander.length : 0
commander_card_object.percent_decks = (commander_card_object.total_decks != 0) ? parseInt(10000 * (commander_card_object.nbr_decks / commander_card_object.total_decks)) / 100 : 0
bset_cards_data_export[bset.sanitized_name]["commander"].push(commander_card_object)
const colorName = getColorName(card.color_identity)
if(colorName != "") {
commanderData[colorName].push(card_object)
commanderData["top"].push(card_object)
commanderData[colorName].push(commander_card_object)
commanderData["top"].push(commander_card_object)
}
}
}
})
console.log("Exporting stats...")
if(process.env.NODE_ENV == "production") {
console.log('Production detected !')
writeFileSync("/app/data/misc/bsets.json",JSON.stringify(bsets_list_export), 'utf8')
} else {
writeFileSync(import.meta.dirname + "/json/misc/bsets.json",JSON.stringify(bsets_list_export), 'utf8')
}
//for (const card of all_cards) {
//}
for (const index of Object.keys(commanderData)) {
let JSONToWrite = commanderData[index].sort((a,b) => b.percent_decks - a.percent_decks)
let JSONToWrite = commanderData[index].sort((a,b) => b.nbr_decks - a.nbr_decks)
if(process.env.NODE_ENV == "production") {
console.log('Production detected !')
writeFileSync("/app/data/commander/" + index + ".json",JSON.stringify(JSONToWrite), 'utf8')
} else {
writeFileSync(import.meta.dirname + "/json/commander/" + index + ".json",JSON.stringify(JSONToWrite), 'utf8')
@ -190,15 +175,16 @@ async function createJson() {
for (const index of Object.keys(bset_cards_data_export)) {
let JSONToWrite = bset_cards_data_export[index]
for (const type of Object.keys(JSONToWrite)) {
JSONToWrite[type] = JSONToWrite[type].sort((a,b) => b.percent_decks - a.percent_decks)
JSONToWrite[type] = JSONToWrite[type].sort((a,b) => b.nbr_decks - a.nbr_decks)
}
if(process.env.NODE_ENV == "production") {
console.log('Production detected !')
writeFileSync("/app/data/bset/" + index + ".json",JSON.stringify(JSONToWrite), 'utf8')
} else {
writeFileSync(import.meta.dirname + "/json/bset/" + index + ".json",JSON.stringify(JSONToWrite), 'utf8')
}
}
const end = performance.now()
console.log(`Time taken to generate stats is ${end - start}ms.`);
}
createJson()

View file

@ -9,7 +9,7 @@ const { Client } = pg
console.log("Fetching latest Scryfall Bulk Data URL...")
const bulkDataApi = await fetch('https://api.scryfall.com/bulk-data')
const bulkDataApiJson = await bulkDataApi.json()
const bulkDataDownloadUrl = bulkDataApiJson.data.filter((obj) => obj.type == "unique_artwork")[0].download_uri
const bulkDataDownloadUrl = bulkDataApiJson.data.filter((obj) => obj.type == "default_cards")[0].download_uri
console.log("Downloading latest Scryfall Bulk Data...")
const stream = fs.createWriteStream(import.meta.dirname + '/data/scryfall_data.json');