acacode / acacode/swagger-typescript-api

Circular reference error in type definitions if subclasses appear before baseclass in schema.

Open
#637 1 comment 7 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
4.1k
Forks
436
PR merge metrics
No merged PRs in 30d

Description

We have the following schema components in our swagger.json file:

```
"Gjennomforing_4_3": {
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/Tvangsprotokoll"
}
],
"additionalProperties": false
},
"Gjennomforing_4_4": {
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/Tvangsprotokoll"
}
],
"properties": {
"administrertLegemiddel": {
"type": "string",
"nullable": true
},
"administrertDose": {
"type": "string",
"nullable": true
},
"administrasjonsform": {
"type": "string",
"nullable": true
}
},
"additionalProperties": false
},
"Gjennomforing_4_8": {
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/Tvangsprotokoll"
}
],
"properties": {
"endringUnderGjForing": {
"$ref": "#/components/schemas/VolvenKodeverkValue9272"
},
"beskrivelseAvGjForing": {
"type": "string",
"nullable": true
},
"endretTidspunkt": {
"type": "string",
"format": "date-time",
"nullable": true
}
},
"additionalProperties": false
},
"Tvangsprotokoll": {
"required": [
"$type"
],
"type": "object",
"properties": {
"$type": {
"type": "string"
},
"id": {
"type": "string",
"format": "uuid"
},
"vedtakId": {
"type": "string",
"format": "uuid"
},
"pasientId": {
"type": "string",
"format": "uuid"
},
"fagligAnsvarlig": {
"$ref": "#/components/schemas/Ansvarlig"
},
"startTidspunkt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"avsluttetTidspunkt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"merknad": {
"type": "string",
"nullable": true
},
"lopenummer": {
"type": "integer",
"format": "int32",
"nullable": true
}
},
"additionalProperties": false,
"discriminator": {
"propertyName": "$type",
"mapping": {
"Gjennomforing_4_3": "#/components/schemas/Gjennomforing_4_3",
"Gjennomforing_4_4": "#/components/schemas/Gjennomforing_4_4",
"Gjennomforing_4_8": "#/components/schemas/Gjennomforing_4_8"
}
}
},
```

After running codegen on this schema the output is the following for the 3 subclasses (`Gjennomforing_4_3`, `Gjennomforing_4_4`, `Gjennomforing_4_8`) of Tvangsprotokoll:

![image](https://github.com/acacode/swagger-typescript-api/assets/7986195/060c3456-722f-434f-95fb-e672220dbb26)

Here the subclasses are extending Tvangsprotokoll instead of the BaseTvangsprotokoll class.

We believe this is a bug with the order they are parsed in. As the Base class come after the subclasses in the schema.components list.
Everything worked fine when we renamed Tvangsprotokoll to Gjennomforing

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.