Files
vontor-cz/frontend/src/orval.config.ts
David Bruno Vontor 1cec6be6d7 feat(api): generate API models and hooks for public shop configuration and commerce entities
- Added generated API hooks and models for public shop configuration, including listing and retrieving configurations.
- Introduced models for commerce categories, discount codes, orders, product images, and products with pagination and search parameters.
- Ensured all generated files are structured for easy integration with React Query.
2025-12-22 02:20:43 +01:00

80 lines
2.0 KiB
TypeScript

import { defineConfig } from "orval";
const backendUrl = process.env.VITE_BACKEND_URL || "http://localhost:8000";
// může se hodit pokud nechceme při buildu generovat klienta (nechat false pro produkci nebo vynechat)
const SKIP_ORVAL = process.env.SKIP_ORVAL === "true";
if (SKIP_ORVAL) {
console.log("[ORVAL] Generation skipped.");
process.exit(0);
}
export default defineConfig({
// Public endpoints (all endpoints tagged with "public")
public: {
input: {
target: `${backendUrl}/api/schema/`,
filters: {
mode: "include",
tags: ["public"],
},
},
output: {
target: "api/generated/public/index.ts",
schemas: "api/generated/public/models",
mode: "tags",
clean: true,
client: "react-query",
httpClient: "axios",
tsconfig: "./tsconfig.app.json",
override: {
mutator: {
path: "api/publicClient.ts",
name: "publicMutator",
},
formUrlEncoded: true,
useDates: true,
},
},
hooks: {
afterAllFilesWrite: 'prettier --write',
}
},
// All private endpoints (organized by tags, shared models folder)
private: {
input: {
target: `${backendUrl}/api/schema/`,
filters: {
mode: "exclude",
tags: ["public"], // Exclude public endpoints, include everything else
},
},
output: {
target: "api/generated/private",
schemas: "api/generated/private/models",
mode: "tags-split", // Split by tag into separate files
clean: true,
client: "react-query",
httpClient: "axios",
tsconfig: "./tsconfig.app.json",
override: {
mutator: {
path: "api/privateClient.ts",
name: "privateMutator",
},
formUrlEncoded: true,
useDates: true,
query: {
useQuery: true,
useInfinite: false, // Disable infinite queries to avoid page param errors
},
},
},
hooks: {
afterAllFilesWrite: 'prettier --write',
}
},
});