50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
|
const fs = require("fs").promises;
|
||
|
const path = require("path");
|
||
|
|
||
|
const connectToDb = require("./src/server/db");
|
||
|
const { normalizeRow } = require("./src/server/util");
|
||
|
|
||
|
const cachedDataPath = path.join(__dirname, "build", "cached-data");
|
||
|
|
||
|
async function buildZonesCache(db) {
|
||
|
const [rows] = await db.query(`SELECT * FROM zones;`);
|
||
|
const entities = rows.map(normalizeRow);
|
||
|
|
||
|
const filePath = path.join(cachedDataPath, "zones.json");
|
||
|
fs.writeFile(filePath, JSON.stringify(entities, null, 4), "utf8");
|
||
|
|
||
|
console.log(`📚 Wrote zones to ${path.relative(process.cwd(), filePath)}`);
|
||
|
}
|
||
|
|
||
|
async function buildZoneTranslationsCache(db) {
|
||
|
const [rows] = await db.query(
|
||
|
`SELECT * FROM zone_translations WHERE locale = "en";`
|
||
|
);
|
||
|
const entities = rows.map(normalizeRow);
|
||
|
|
||
|
const filePath = path.join(cachedDataPath, "zone_translations.json");
|
||
|
fs.writeFile(filePath, JSON.stringify(entities, null, 4), "utf8");
|
||
|
|
||
|
console.log(
|
||
|
`📚 Wrote zone translations to ${path.relative(process.cwd(), filePath)}`
|
||
|
);
|
||
|
}
|
||
|
|
||
|
async function main() {
|
||
|
const db = await connectToDb();
|
||
|
await fs.mkdir(cachedDataPath, { recursive: true });
|
||
|
|
||
|
try {
|
||
|
await Promise.all([buildZonesCache(db), buildZoneTranslationsCache(db)]);
|
||
|
} catch (e) {
|
||
|
db.close();
|
||
|
throw e;
|
||
|
}
|
||
|
db.close();
|
||
|
}
|
||
|
|
||
|
main().catch((e) => {
|
||
|
console.error(e);
|
||
|
process.exitCode = 1;
|
||
|
});
|