Introduces a new /api/choices/ endpoint for fetching model choices with multilingual labels. Updates Django models to use 'cz#' prefix for Czech labels. Adds OpenAPI client generation via orval, refactors frontend API structure, and provides documentation and helper scripts for dynamic choices and OpenAPI usage.
26 lines
865 B
JavaScript
26 lines
865 B
JavaScript
import fs from "fs";
|
|
import path from "path";
|
|
import axios from "axios";
|
|
|
|
// Single config point
|
|
const config = { schemaUrl: "/api/schema/", baseUrl: "/api/" };
|
|
|
|
async function main() {
|
|
const outDir = path.resolve("./src/openapi");
|
|
const outFile = path.join(outDir, "schema.json");
|
|
const base = process.env.VITE_API_BASE_URL || "http://localhost:8000";
|
|
const url = new URL(config.schemaUrl, base).toString();
|
|
|
|
console.log(`[openapi] Fetching schema from ${url}`);
|
|
const res = await axios.get(url, { headers: { Accept: "application/json" } });
|
|
|
|
await fs.promises.mkdir(outDir, { recursive: true });
|
|
await fs.promises.writeFile(outFile, JSON.stringify(res.data, null, 2), "utf8");
|
|
console.log(`[openapi] Wrote ${outFile}`);
|
|
}
|
|
|
|
main().catch((err) => {
|
|
console.error("[openapi] Failed to fetch schema:", err?.message || err);
|
|
process.exit(1);
|
|
});
|