From e52c86e0b7bae4e7ce10896f8f24836c5992e3c9 Mon Sep 17 00:00:00 2001 From: yusing Date: Sun, 17 Aug 2025 14:33:53 +0800 Subject: [PATCH] fix(api): missing `health` field for route in docs and generated api code --- internal/api/v1/docs/docs.go | 80 ++++++++++++++++++++ internal/api/v1/docs/swagger.json | 118 ++++++++++++++++++++++++++++++ internal/api/v1/docs/swagger.yaml | 61 +++++++++++++-- internal/route/route.go | 2 +- 4 files changed, 254 insertions(+), 7 deletions(-) diff --git a/internal/api/v1/docs/docs.go b/internal/api/v1/docs/docs.go index 096f72ce..776e977c 100644 --- a/internal/api/v1/docs/docs.go +++ b/internal/api/v1/docs/docs.go @@ -2033,6 +2033,70 @@ const docTemplate = `{ } } }, + "HealthExtra": { + "type": "object", + "properties": { + "config": { + "$ref": "#/definitions/LoadBalancerConfig" + }, + "pool": { + "type": "object", + "additionalProperties": {} + } + } + }, + "HealthJSON": { + "type": "object", + "properties": { + "config": { + "$ref": "#/definitions/HealthCheckConfig" + }, + "detail": { + "type": "string" + }, + "extra": { + "allOf": [ + { + "$ref": "#/definitions/HealthExtra" + } + ], + "x-nullable": true + }, + "lastSeen": { + "type": "integer" + }, + "lastSeenStr": { + "type": "string" + }, + "latency": { + "type": "number" + }, + "latencyStr": { + "type": "string" + }, + "name": { + "type": "string" + }, + "started": { + "type": "integer" + }, + "startedStr": { + "type": "string" + }, + "status": { + "type": "string" + }, + "uptime": { + "type": "number" + }, + "uptimeStr": { + "type": "string" + }, + "url": { + "type": "string" + } + } + }, "HealthMap": { "type": "object", "additionalProperties": { @@ -2491,6 +2555,14 @@ const docTemplate = `{ "excluded": { "type": "boolean" }, + "health": { + "description": "for swagger", + "allOf": [ + { + "$ref": "#/definitions/HealthJSON" + } + ] + }, "healthcheck": { "$ref": "#/definitions/HealthCheckConfig" }, @@ -3225,6 +3297,14 @@ const docTemplate = `{ "excluded": { "type": "boolean" }, + "health": { + "description": "for swagger", + "allOf": [ + { + "$ref": "#/definitions/HealthJSON" + } + ] + }, "healthcheck": { "$ref": "#/definitions/HealthCheckConfig" }, diff --git a/internal/api/v1/docs/swagger.json b/internal/api/v1/docs/swagger.json index 3f1b9477..20d040de 100644 --- a/internal/api/v1/docs/swagger.json +++ b/internal/api/v1/docs/swagger.json @@ -2196,6 +2196,104 @@ "x-nullable": false, "x-omitempty": false }, + "HealthExtra": { + "type": "object", + "properties": { + "config": { + "$ref": "#/definitions/LoadBalancerConfig", + "x-nullable": false, + "x-omitempty": false + }, + "pool": { + "type": "object", + "additionalProperties": {}, + "x-nullable": false, + "x-omitempty": false + } + }, + "x-nullable": false, + "x-omitempty": false + }, + "HealthJSON": { + "type": "object", + "properties": { + "config": { + "$ref": "#/definitions/HealthCheckConfig", + "x-nullable": false, + "x-omitempty": false + }, + "detail": { + "type": "string", + "x-nullable": false, + "x-omitempty": false + }, + "extra": { + "allOf": [ + { + "$ref": "#/definitions/HealthExtra" + } + ], + "x-nullable": true + }, + "lastSeen": { + "type": "integer", + "x-nullable": false, + "x-omitempty": false + }, + "lastSeenStr": { + "type": "string", + "x-nullable": false, + "x-omitempty": false + }, + "latency": { + "type": "number", + "x-nullable": false, + "x-omitempty": false + }, + "latencyStr": { + "type": "string", + "x-nullable": false, + "x-omitempty": false + }, + "name": { + "type": "string", + "x-nullable": false, + "x-omitempty": false + }, + "started": { + "type": "integer", + "x-nullable": false, + "x-omitempty": false + }, + "startedStr": { + "type": "string", + "x-nullable": false, + "x-omitempty": false + }, + "status": { + "type": "string", + "x-nullable": false, + "x-omitempty": false + }, + "uptime": { + "type": "number", + "x-nullable": false, + "x-omitempty": false + }, + "uptimeStr": { + "type": "string", + "x-nullable": false, + "x-omitempty": false + }, + "url": { + "type": "string", + "x-nullable": false, + "x-omitempty": false + } + }, + "x-nullable": false, + "x-omitempty": false + }, "HealthMap": { "type": "object", "additionalProperties": { @@ -2840,6 +2938,16 @@ "x-nullable": false, "x-omitempty": false }, + "health": { + "description": "for swagger", + "allOf": [ + { + "$ref": "#/definitions/HealthJSON" + } + ], + "x-nullable": false, + "x-omitempty": false + }, "healthcheck": { "$ref": "#/definitions/HealthCheckConfig", "x-nullable": false, @@ -3890,6 +3998,16 @@ "x-nullable": false, "x-omitempty": false }, + "health": { + "description": "for swagger", + "allOf": [ + { + "$ref": "#/definitions/HealthJSON" + } + ], + "x-nullable": false, + "x-omitempty": false + }, "healthcheck": { "$ref": "#/definitions/HealthCheckConfig", "x-nullable": false, diff --git a/internal/api/v1/docs/swagger.yaml b/internal/api/v1/docs/swagger.yaml index 60aba8fc..52b486ae 100644 --- a/internal/api/v1/docs/swagger.yaml +++ b/internal/api/v1/docs/swagger.yaml @@ -226,6 +226,47 @@ definitions: use_get: type: boolean type: object + HealthExtra: + properties: + config: + $ref: '#/definitions/LoadBalancerConfig' + pool: + additionalProperties: {} + type: object + type: object + HealthJSON: + properties: + config: + $ref: '#/definitions/HealthCheckConfig' + detail: + type: string + extra: + allOf: + - $ref: '#/definitions/HealthExtra' + x-nullable: true + lastSeen: + type: integer + lastSeenStr: + type: string + latency: + type: number + latencyStr: + type: string + name: + type: string + started: + type: integer + startedStr: + type: string + status: + type: string + uptime: + type: number + uptimeStr: + type: string + url: + type: string + type: object HealthMap: additionalProperties: $ref: '#/definitions/routes.HealthInfo' @@ -396,11 +437,11 @@ definitions: - 1mo type: string x-enum-comments: + MetricsPeriod1mo: '@name MetricsPeriod1mo' + MetricsPeriod5m: '@name MetricsPeriod5m' MetricsPeriod15m: '@name MetricsPeriod15m' MetricsPeriod1d: '@name MetricsPeriod1d' MetricsPeriod1h: '@name MetricsPeriod1h' - MetricsPeriod1mo: '@name MetricsPeriod1mo' - MetricsPeriod5m: '@name MetricsPeriod5m' x-enum-varnames: - MetricsPeriod5m - MetricsPeriod15m @@ -535,6 +576,10 @@ definitions: type: boolean excluded: type: boolean + health: + allOf: + - $ref: '#/definitions/HealthJSON' + description: for swagger healthcheck: $ref: '#/definitions/HealthCheckConfig' homepage: @@ -1060,6 +1105,10 @@ definitions: type: boolean excluded: type: boolean + health: + allOf: + - $ref: '#/definitions/HealthJSON' + description: for swagger healthcheck: $ref: '#/definitions/HealthCheckConfig' homepage: @@ -2075,11 +2124,11 @@ paths: name: period type: string x-enum-comments: + MetricsPeriod1mo: '@name MetricsPeriod1mo' + MetricsPeriod5m: '@name MetricsPeriod5m' MetricsPeriod15m: '@name MetricsPeriod15m' MetricsPeriod1d: '@name MetricsPeriod1d' MetricsPeriod1h: '@name MetricsPeriod1h' - MetricsPeriod1mo: '@name MetricsPeriod1mo' - MetricsPeriod5m: '@name MetricsPeriod5m' x-enum-varnames: - MetricsPeriod5m - MetricsPeriod15m @@ -2129,11 +2178,11 @@ paths: name: interval type: string x-enum-comments: + MetricsPeriod15m: '@name MetricsPeriod15m' + MetricsPeriod1d: '@name MetricsPeriod1d' MetricsPeriod1h: '@name MetricsPeriod1h' MetricsPeriod1mo: '@name MetricsPeriod1mo' MetricsPeriod5m: '@name MetricsPeriod5m' - MetricsPeriod15m: '@name MetricsPeriod15m' - MetricsPeriod1d: '@name MetricsPeriod1d' x-enum-varnames: - MetricsPeriod5m - MetricsPeriod15m diff --git a/internal/route/route.go b/internal/route/route.go index 5aeae625..4c0c762f 100644 --- a/internal/route/route.go +++ b/internal/route/route.go @@ -53,7 +53,7 @@ type ( Idlewatcher *types.IdlewatcherConfig `json:"idlewatcher,omitempty" extensions:"x-nullable"` HealthMon types.HealthMonitor `json:"health,omitempty" swaggerignore:"true"` // for swagger - HealthJSON *types.HealthJSON `json:"-" form:"health"` + HealthJSON *types.HealthJSON `json:",omitempty" form:"health"` Metadata `deserialize:"-"` }