7nohe / openapi-react-query-codegen

OpenAPI React Query Codegen is a code generator for creating React Query (also known as TanStack Query) hooks based on your OpenAPI schema.
https://openapi-react-query-codegen.vercel.app
MIT License
302 stars 31 forks source link

Duplicate endpoints create conflicting data types #154

Closed CHE1RON closed 1 month ago

CHE1RON commented 1 month ago

Describe the bug When having endpoints of the same name, eg tags/{tag}/export and labels/{label}/export, only one data type is generated (here ExportData) for all services, which is correct for the first, but wrong for all subsequent services.

To Reproduce

  1. Create API with endpoints tags/{tag}/export and labels/{label}/export
  2. Run script
  3. Inspect type errors in services.gen.ts

OpenAPI spec file routes.json

Expected behavior Data types free of conflicts, eg ExportData, ExportData1, etc

Screenshots If applicable, add screenshots or logs to help explain your problem.

7nohe commented 1 month ago

services.gen.ts is a file generated on the @hey-api/openapi-ts side, so it falls outside the scope of this library. This issue can likely be avoided by using operationId.

CHE1RON commented 1 month ago

@7nohe Thanks for letting me know 🙏

I guess I'll open an issue upstream then. How exactly does operationId work? From the docs it seems to be a flag, but its default is true .. ?

7nohe commented 1 month ago

@CHE1RON Yes, the default is true. Therefore, all you need to do is make each operationId unique.

"paths": {
    "/api/v1/boards/export": {
      "get": {
        "tags": ["boards"],
        "summary": "Returns an export of a collection of boards.",
        "operationId": "boards-export",

   "/api/v1/documents/{file}/export": {
      "get": {
        "tags": ["documents"],
        "summary": "Exports the document as a PDF with annotations included.",
        "operationId": "documents-export",