Fix: Last UI Fixes + better create JSON
This commit is contained in:
parent
0ea1d4a3e4
commit
29411757cb
12 changed files with 54 additions and 53 deletions
|
@ -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()
|
||||
|
|
|
@ -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');
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue