Skip to content

fix: extracting enums along with extracting request params [#506]#508

Merged
js2me merged 2 commits intoacacode:masterfrom
AGrigorii:fix-enums-extracting
Mar 20, 2023
Merged

fix: extracting enums along with extracting request params [#506]#508
js2me merged 2 commits intoacacode:masterfrom
AGrigorii:fix-enums-extracting

Conversation

@AGrigorii
Copy link

@AGrigorii AGrigorii commented Mar 20, 2023

#506

I've fixed two problems:

  • extracted enum from query params name resolving (permanent NameName in extracted enum)
  • incorrect extracted enum name within request type (flaky NameName within type request definition)
Swagger to reproduce
{
  "openapi": "3.0.2",
  "info": {
    "title": "Some Public API",
    "version": "0.0.1"
  },
  "paths": {
    "/a/b/c": {
      "get": {
        "tags": [
          "tag1"
        ],
        "summary": "get A",
        "operationId": "get_a_b_c_get",
        "parameters": [
          {
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/VmState"
              }
            },
            "name": "statuses",
            "in": "query"
          },
          {
            "required": false,
            "schema": {
              "title": "Order By",
              "enum": [
                "created_time"
              ],
              "type": "string",
              "default": "created_time"
            },
            "name": "order_by",
            "in": "query"
          }
        ]
      }
    },
    "/c/d/e": {
      "get": {
        "tags": [
          "Security Groups"
        ],
        "summary": "Get C",
        "operationId": "get_c_d_e_get",
        "parameters": [
          {
            "required": false,
            "schema": {
              "title": "Tag Ids",
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            },
            "name": "tag_ids",
            "in": "query"
          },
          {
            "required": false,
            "schema": {
              "title": "Order By",
              "enum": [
                "created_time"
              ],
              "type": "string",
              "default": "created_time"
            },
            "name": "order_by",
            "in": "query"
          }
        ]
      }
    }
  }
}
Config
{
      name: TYPINGS_FILE_NAME,
      output: path.resolve(process.cwd(), `${dir}/${TEMP_DIR}`),
      input: path.resolve(process.cwd(), SWAGGER_FILE_PATH),
      generateClient: false,
      prettier: require('./../prettier.config'),
      generateUnionEnums: false,
      extractResponseBody: false,
      extractResponseError: false,
      sortTypes: true,
      extractEnums: true,
      extractRequestParams: true,
      extractingOptions: {
        requestParamsSuffix: ['Params'],
        requestBodySuffix: ['Request'],
        responseBodySuffix: ['Response'],
      },
      templates: path.resolve(process.cwd(), './templates'),
      // eslint-disable-next-line @typescript-eslint/ban-ts-comment
      // @ts-ignore
      codeGenConstructs: () => ({
        EnumField: (key: string, value: string) => `${pascaleCase(key)} = ${value}`,
      }),
      primitiveTypeConstructs: () =>
        repository.packageJSON.swagger?.transformAllDates
          ? {
              string: {
                $default: 'string',
                'date-time': repository.packageJSON.swagger?.fieldsDateType || DEFAULT_DATE_TYPE,
              },
            }
          : {}
}

@AGrigorii AGrigorii changed the title fix: extracting enums along with extracting request params fix: extracting enums along with extracting request params [#506] Mar 20, 2023
@js2me js2me merged commit 80871bf into acacode:master Mar 20, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants