// this reformats jokes from format v2 to format v3
// run this with the command "npm run reformat"

const fs = require("fs-extra");
const isEmpty = require("svjsl").isEmpty;

try
{
    console.log(`\nReformatting jokes from file "./data/jokes.json" to new format and putting it in file "./data/jokes_new.json"...`);

    let initialJokes = JSON.parse(fs.readFileSync("./data/jokes.json").toString());
    let newJokes = [];
    let id = 0;

    initialJokes.jokes.forEach(joke => {
        if(joke.type == "single") newJokes.push({
            category: joke.category,
            type: "single",
            joke: joke.joke,
            flags: {
                nsfw: isEmpty(joke.flags.nsfw) ? false : true,
                racist: isEmpty(joke.flags.racist) ? false : true,
                sexist: isEmpty(joke.flags.sexist) ? false : true,
                religious: isEmpty(joke.flags.religious) ? false : true,
                political: isEmpty(joke.flags.political) ? false : true,
                explicit: isEmpty(joke.flags.explicit) ? false : true
            },
            id: id
        });

        if(joke.type == "twopart") newJokes.push({
            category: joke.category,
            type: "twopart",
            setup: joke.setup,
            delivery: joke.delivery,
            flags: {
                nsfw: isEmpty(joke.flags.nsfw) ? false : true,
                racist: isEmpty(joke.flags.racist) ? false : true,
                sexist: isEmpty(joke.flags.sexist) ? false : true,
                religious: isEmpty(joke.flags.religious) ? false : true,
                political: isEmpty(joke.flags.political) ? false : true,
                explicit: isEmpty(joke.flags.explicit) ? false : true
            },
            id: id
        });

        id++;
    });

    let doneFile = {
        "info": {
            "formatVersion": 3
        },
        "jokes": newJokes
    };

    fs.writeFileSync("./data/jokes_new.json", JSON.stringify(doneFile, null, 4));

    console.log(`\x1b[32m\x1b[1mDone reformatting all ${newJokes.length} jokes.\x1b[0m\n`);
    process.exit(0);
}
catch(err)
{
    console.log(`\n\n\x1b[31m\x1b[1m>> Error while reformatting jokes:\n${err}\n\n\x1b[0m`);
    process.exit(1);
}