From 654b196bfd27d5918ffdc046d76757f856511879 Mon Sep 17 00:00:00 2001 From: Asai Neko Date: Thu, 29 Jan 2026 01:25:12 +0800 Subject: [PATCH] Fix swagger data struct error Signed-off-by: Asai Neko --- api/auth/exchange.go | 2 +- api/auth/magic.go | 2 +- api/event/checkin.go | 4 +- api/event/info.go | 2 +- api/user/full.go | 2 +- docs/docs.go | 127 ++++--------------- docs/swagger.json | 127 ++++--------------- docs/swagger.yaml | 98 ++++---------- generate.go | 2 + justfile | 2 +- service/service_auth/exchange.go | 14 +- service/service_auth/magic.go | 8 +- service/service_event/checkin.go | 26 ++-- service/service_event/info.go | 28 ++-- service/service_user/list_user_full_table.go | 8 +- 15 files changed, 136 insertions(+), 316 deletions(-) diff --git a/api/auth/exchange.go b/api/auth/exchange.go index f066834..4f791e6 100644 --- a/api/auth/exchange.go +++ b/api/auth/exchange.go @@ -16,7 +16,7 @@ import ( // @Accept json // @Produce json // @Param payload body service_auth.ExchangeData true "Exchange Request Credentials" -// @Success 200 {object} utils.RespStatus{data=service_auth.ExchangeResult} "Successful exchange" +// @Success 200 {object} utils.RespStatus{data=service_auth.ExchangeResponse} "Successful exchange" // @Failure 400 {object} utils.RespStatus{data=nil} "Invalid Input" // @Failure 401 {object} utils.RespStatus{data=nil} "Unauthorized" // @Failure 500 {object} utils.RespStatus{data=nil} "Internal Server Error" diff --git a/api/auth/magic.go b/api/auth/magic.go index 37fe01a..d54a81a 100644 --- a/api/auth/magic.go +++ b/api/auth/magic.go @@ -15,7 +15,7 @@ import ( // @Accept json // @Produce json // @Param payload body service_auth.MagicData true "Magic Link Request Data" -// @Success 200 {object} utils.RespStatus{data=service_auth.MagicResult} "Successful request" +// @Success 200 {object} utils.RespStatus{data=service_auth.MagicResponse} "Successful request" // @Failure 400 {object} utils.RespStatus{data=nil} "Invalid Input" // @Failure 403 {object} utils.RespStatus{data=nil} "Turnstile Verification Failed" // @Failure 500 {object} utils.RespStatus{data=nil} "Internal Server Error" diff --git a/api/event/checkin.go b/api/event/checkin.go index 3465824..be7274b 100644 --- a/api/event/checkin.go +++ b/api/event/checkin.go @@ -16,7 +16,7 @@ import ( // @Accept json // @Produce json // @Param event_id query string true "Event UUID" -// @Success 200 {object} utils.RespStatus{data=service_event.CheckinResult} "Successfully generated code" +// @Success 200 {object} utils.RespStatus{data=service_event.CheckinResponse} "Successfully generated code" // @Failure 400 {object} utils.RespStatus{data=nil} "Invalid Input" // @Failure 500 {object} utils.RespStatus{data=nil} "Internal Server Error" // @Router /event/checkin [get] @@ -86,7 +86,7 @@ func (self *EventHandler) CheckinSubmit(c *gin.Context) { // @Accept json // @Produce json // @Param event_id query string true "Event UUID" -// @Success 200 {object} utils.RespStatus{data=service_event.CheckinQueryResult} "Current attendance status" +// @Success 200 {object} utils.RespStatus{data=service_event.CheckinQueryResponse} "Current attendance status" // @Failure 400 {object} utils.RespStatus{data=nil} "Invalid Input" // @Failure 404 {object} utils.RespStatus{data=nil} "Record Not Found" // @Router /event/checkin/query [get] diff --git a/api/event/info.go b/api/event/info.go index b5246b6..ec86f6f 100644 --- a/api/event/info.go +++ b/api/event/info.go @@ -16,7 +16,7 @@ import ( // @Accept json // @Produce json // @Param event_id query string true "Event UUID" -// @Success 200 {object} utils.RespStatus{data=service_event.InfoResult} "Successful retrieval" +// @Success 200 {object} utils.RespStatus{data=service_event.InfoResponse} "Successful retrieval" // @Failure 400 {object} utils.RespStatus{data=nil} "Invalid Input" // @Failure 404 {object} utils.RespStatus{data=nil} "Event Not Found" // @Failure 500 {object} utils.RespStatus{data=nil} "Internal Server Error" diff --git a/api/user/full.go b/api/user/full.go index 7097486..35bf3d9 100644 --- a/api/user/full.go +++ b/api/user/full.go @@ -14,7 +14,7 @@ import ( // @Tags User // @Accept json // @Produce json -// @Success 200 {object} utils.RespStatus{data=service_user.UserTableResult} "Successful retrieval of full user table" +// @Success 200 {object} utils.RespStatus{data=service_user.UserTableResponse} "Successful retrieval of full user table" // @Failure 500 {object} utils.RespStatus{data=nil} "Internal Server Error (Database Error)" // @Security ApiKeyAuth // @Router /user/full [get] diff --git a/docs/docs.go b/docs/docs.go index 91a4f1f..39243cc 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -56,7 +56,7 @@ const docTemplate = `{ "type": "object", "properties": { "data": { - "$ref": "#/definitions/service_auth.ExchangeResult" + "$ref": "#/definitions/service_auth.ExchangeResponse" } } } @@ -156,7 +156,7 @@ const docTemplate = `{ "type": "object", "properties": { "data": { - "$ref": "#/definitions/service_auth.MagicResult" + "$ref": "#/definitions/service_auth.MagicResponse" } } } @@ -561,7 +561,7 @@ const docTemplate = `{ "type": "object", "properties": { "data": { - "$ref": "#/definitions/service_event.CheckinResult" + "$ref": "#/definitions/service_event.CheckinResponse" } } } @@ -641,7 +641,7 @@ const docTemplate = `{ "type": "object", "properties": { "data": { - "$ref": "#/definitions/service_event.CheckinQueryResult" + "$ref": "#/definitions/service_event.CheckinQueryResponse" } } } @@ -785,7 +785,7 @@ const docTemplate = `{ "type": "object", "properties": { "data": { - "$ref": "#/definitions/service_event.InfoResult" + "$ref": "#/definitions/service_event.InfoResponse" } } } @@ -879,7 +879,7 @@ const docTemplate = `{ "type": "object", "properties": { "data": { - "$ref": "#/definitions/service_user.UserTableResult" + "$ref": "#/definitions/service_user.UserTableResponse" } } } @@ -1261,30 +1261,6 @@ const docTemplate = `{ } } }, - "exception.Builder": { - "type": "object", - "properties": { - "endpoint": { - "type": "string" - }, - "error": {}, - "errorCode": { - "type": "string" - }, - "original": { - "type": "string" - }, - "service": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, "service_auth.ExchangeData": { "type": "object", "properties": { @@ -1299,19 +1275,11 @@ const docTemplate = `{ } } }, - "service_auth.ExchangeResult": { + "service_auth.ExchangeResponse": { "type": "object", "properties": { - "common": { - "$ref": "#/definitions/shared.CommonResult" - }, - "data": { - "type": "object", - "properties": { - "redirect_uri": { - "type": "string" - } - } + "redirect_uri": { + "type": "string" } } }, @@ -1338,13 +1306,12 @@ const docTemplate = `{ } } }, - "service_auth.MagicResult": { + "service_auth.MagicResponse": { "type": "object", "properties": { - "common": { - "$ref": "#/definitions/shared.CommonResult" - }, - "data": {} + "uri": { + "type": "string" + } } }, "service_auth.RefreshData": { @@ -1374,35 +1341,19 @@ const docTemplate = `{ } } }, - "service_event.CheckinQueryResult": { + "service_event.CheckinQueryResponse": { "type": "object", "properties": { - "common": { - "$ref": "#/definitions/shared.CommonResult" - }, - "data": { - "type": "object", - "properties": { - "checkin_at": { - "type": "string" - } - } + "checkin_at": { + "type": "string" } } }, - "service_event.CheckinResult": { + "service_event.CheckinResponse": { "type": "object", "properties": { - "common": { - "$ref": "#/definitions/shared.CommonResult" - }, - "data": { - "type": "object", - "properties": { - "checkin_code": { - "type": "string" - } - } + "checkin_code": { + "type": "string" } } }, @@ -1414,25 +1365,17 @@ const docTemplate = `{ } } }, - "service_event.InfoResult": { + "service_event.InfoResponse": { "type": "object", "properties": { - "common": { - "$ref": "#/definitions/shared.CommonResult" + "end_time": { + "type": "string" }, - "data": { - "type": "object", - "properties": { - "end_time": { - "type": "string" - }, - "name": { - "type": "string" - }, - "start_time": { - "type": "string" - } - } + "name": { + "type": "string" + }, + "start_time": { + "type": "string" } } }, @@ -1468,12 +1411,9 @@ const docTemplate = `{ } } }, - "service_user.UserTableResult": { + "service_user.UserTableResponse": { "type": "object", "properties": { - "common": { - "$ref": "#/definitions/shared.CommonResult" - }, "user_table": { "type": "array", "items": { @@ -1482,17 +1422,6 @@ const docTemplate = `{ } } }, - "shared.CommonResult": { - "type": "object", - "properties": { - "exception": { - "$ref": "#/definitions/exception.Builder" - }, - "httpCode": { - "type": "integer" - } - } - }, "utils.RespStatus": { "type": "object", "properties": { diff --git a/docs/swagger.json b/docs/swagger.json index 059f864..8873d65 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -45,7 +45,7 @@ "type": "object", "properties": { "data": { - "$ref": "#/definitions/service_auth.ExchangeResult" + "$ref": "#/definitions/service_auth.ExchangeResponse" } } } @@ -145,7 +145,7 @@ "type": "object", "properties": { "data": { - "$ref": "#/definitions/service_auth.MagicResult" + "$ref": "#/definitions/service_auth.MagicResponse" } } } @@ -550,7 +550,7 @@ "type": "object", "properties": { "data": { - "$ref": "#/definitions/service_event.CheckinResult" + "$ref": "#/definitions/service_event.CheckinResponse" } } } @@ -630,7 +630,7 @@ "type": "object", "properties": { "data": { - "$ref": "#/definitions/service_event.CheckinQueryResult" + "$ref": "#/definitions/service_event.CheckinQueryResponse" } } } @@ -774,7 +774,7 @@ "type": "object", "properties": { "data": { - "$ref": "#/definitions/service_event.InfoResult" + "$ref": "#/definitions/service_event.InfoResponse" } } } @@ -868,7 +868,7 @@ "type": "object", "properties": { "data": { - "$ref": "#/definitions/service_user.UserTableResult" + "$ref": "#/definitions/service_user.UserTableResponse" } } } @@ -1250,30 +1250,6 @@ } } }, - "exception.Builder": { - "type": "object", - "properties": { - "endpoint": { - "type": "string" - }, - "error": {}, - "errorCode": { - "type": "string" - }, - "original": { - "type": "string" - }, - "service": { - "type": "string" - }, - "status": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, "service_auth.ExchangeData": { "type": "object", "properties": { @@ -1288,19 +1264,11 @@ } } }, - "service_auth.ExchangeResult": { + "service_auth.ExchangeResponse": { "type": "object", "properties": { - "common": { - "$ref": "#/definitions/shared.CommonResult" - }, - "data": { - "type": "object", - "properties": { - "redirect_uri": { - "type": "string" - } - } + "redirect_uri": { + "type": "string" } } }, @@ -1327,13 +1295,12 @@ } } }, - "service_auth.MagicResult": { + "service_auth.MagicResponse": { "type": "object", "properties": { - "common": { - "$ref": "#/definitions/shared.CommonResult" - }, - "data": {} + "uri": { + "type": "string" + } } }, "service_auth.RefreshData": { @@ -1363,35 +1330,19 @@ } } }, - "service_event.CheckinQueryResult": { + "service_event.CheckinQueryResponse": { "type": "object", "properties": { - "common": { - "$ref": "#/definitions/shared.CommonResult" - }, - "data": { - "type": "object", - "properties": { - "checkin_at": { - "type": "string" - } - } + "checkin_at": { + "type": "string" } } }, - "service_event.CheckinResult": { + "service_event.CheckinResponse": { "type": "object", "properties": { - "common": { - "$ref": "#/definitions/shared.CommonResult" - }, - "data": { - "type": "object", - "properties": { - "checkin_code": { - "type": "string" - } - } + "checkin_code": { + "type": "string" } } }, @@ -1403,25 +1354,17 @@ } } }, - "service_event.InfoResult": { + "service_event.InfoResponse": { "type": "object", "properties": { - "common": { - "$ref": "#/definitions/shared.CommonResult" + "end_time": { + "type": "string" }, - "data": { - "type": "object", - "properties": { - "end_time": { - "type": "string" - }, - "name": { - "type": "string" - }, - "start_time": { - "type": "string" - } - } + "name": { + "type": "string" + }, + "start_time": { + "type": "string" } } }, @@ -1457,12 +1400,9 @@ } } }, - "service_user.UserTableResult": { + "service_user.UserTableResponse": { "type": "object", "properties": { - "common": { - "$ref": "#/definitions/shared.CommonResult" - }, "user_table": { "type": "array", "items": { @@ -1471,17 +1411,6 @@ } } }, - "shared.CommonResult": { - "type": "object", - "properties": { - "exception": { - "$ref": "#/definitions/exception.Builder" - }, - "httpCode": { - "type": "integer" - } - } - }, "utils.RespStatus": { "type": "object", "properties": { diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 382a85b..e32d97f 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -41,22 +41,6 @@ definitions: username: type: string type: object - exception.Builder: - properties: - endpoint: - type: string - error: {} - errorCode: - type: string - original: - type: string - service: - type: string - status: - type: string - type: - type: string - type: object service_auth.ExchangeData: properties: client_id: @@ -66,15 +50,10 @@ definitions: state: type: string type: object - service_auth.ExchangeResult: + service_auth.ExchangeResponse: properties: - common: - $ref: '#/definitions/shared.CommonResult' - data: - properties: - redirect_uri: - type: string - type: object + redirect_uri: + type: string type: object service_auth.MagicData: properties: @@ -91,11 +70,10 @@ definitions: turnstile_token: type: string type: object - service_auth.MagicResult: + service_auth.MagicResponse: properties: - common: - $ref: '#/definitions/shared.CommonResult' - data: {} + uri: + type: string type: object service_auth.RefreshData: properties: @@ -114,44 +92,29 @@ definitions: refresh_token: type: string type: object - service_event.CheckinQueryResult: + service_event.CheckinQueryResponse: properties: - common: - $ref: '#/definitions/shared.CommonResult' - data: - properties: - checkin_at: - type: string - type: object + checkin_at: + type: string type: object - service_event.CheckinResult: + service_event.CheckinResponse: properties: - common: - $ref: '#/definitions/shared.CommonResult' - data: - properties: - checkin_code: - type: string - type: object + checkin_code: + type: string type: object service_event.CheckinSubmitData: properties: checkin_code: type: string type: object - service_event.InfoResult: + service_event.InfoResponse: properties: - common: - $ref: '#/definitions/shared.CommonResult' - data: - properties: - end_time: - type: string - name: - type: string - start_time: - type: string - type: object + end_time: + type: string + name: + type: string + start_time: + type: string type: object service_user.UserInfoData: properties: @@ -174,22 +137,13 @@ definitions: username: type: string type: object - service_user.UserTableResult: + service_user.UserTableResponse: properties: - common: - $ref: '#/definitions/shared.CommonResult' user_table: items: $ref: '#/definitions/data.User' type: array type: object - shared.CommonResult: - properties: - exception: - $ref: '#/definitions/exception.Builder' - httpCode: - type: integer - type: object utils.RespStatus: properties: code: @@ -226,7 +180,7 @@ paths: - $ref: '#/definitions/utils.RespStatus' - properties: data: - $ref: '#/definitions/service_auth.ExchangeResult' + $ref: '#/definitions/service_auth.ExchangeResponse' type: object "400": description: Invalid Input @@ -283,7 +237,7 @@ paths: - $ref: '#/definitions/utils.RespStatus' - properties: data: - $ref: '#/definitions/service_auth.MagicResult' + $ref: '#/definitions/service_auth.MagicResponse' type: object "400": description: Invalid Input @@ -512,7 +466,7 @@ paths: - $ref: '#/definitions/utils.RespStatus' - properties: data: - $ref: '#/definitions/service_event.CheckinResult' + $ref: '#/definitions/service_event.CheckinResponse' type: object "400": description: Invalid Input @@ -557,7 +511,7 @@ paths: - $ref: '#/definitions/utils.RespStatus' - properties: data: - $ref: '#/definitions/service_event.CheckinQueryResult' + $ref: '#/definitions/service_event.CheckinQueryResponse' type: object "400": description: Invalid Input @@ -638,7 +592,7 @@ paths: - $ref: '#/definitions/utils.RespStatus' - properties: data: - $ref: '#/definitions/service_event.InfoResult' + $ref: '#/definitions/service_event.InfoResponse' type: object "400": description: Invalid Input @@ -686,7 +640,7 @@ paths: - $ref: '#/definitions/utils.RespStatus' - properties: data: - $ref: '#/definitions/service_user.UserTableResult' + $ref: '#/definitions/service_user.UserTableResponse' type: object "500": description: Internal Server Error (Database Error) diff --git a/generate.go b/generate.go index 64e68fb..bae9f07 100644 --- a/generate.go +++ b/generate.go @@ -1,3 +1,5 @@ package main //go:generate go run ./cmd/gen_exception/main.go + +//go:generate swag init diff --git a/justfile b/justfile index 17040f5..79e84cf 100644 --- a/justfile +++ b/justfile @@ -39,7 +39,7 @@ gen-back: cd {{ project_dir }} && go generate . watch-back: - watchexec -r -e go,yaml,tpl -i '.devenv/**' -i '.direnv/**' -i 'client/**' -i 'vendor/**' 'swag init && go build -o {{ server_exec_path }} . && cd {{ output_dir }} && CONFIG_PATH={{ output_dir }} {{ server_exec_path }}' + watchexec -r -e go,yaml,tpl -i '.devenv/**' -i '.direnv/**' -i 'client/**' -i 'vendor/**' 'go build -o {{ server_exec_path }} . && cd {{ output_dir }} && CONFIG_PATH={{ output_dir }} {{ server_exec_path }}' dev: clean install generate devenv up --verbose diff --git a/service/service_auth/exchange.go b/service/service_auth/exchange.go index b4396ee..5d3070c 100644 --- a/service/service_auth/exchange.go +++ b/service/service_auth/exchange.go @@ -23,11 +23,13 @@ type ExchangePayload struct { Data *ExchangeData } +type ExchangeResponse struct { + RedirectUri string `json:"redirect_uri"` +} + type ExchangeResult struct { Common shared.CommonResult - Data *struct { - RedirectUri string `json:"redirect_uri"` - } + Data *ExchangeResponse } func (self *AuthServiceImpl) Exchange(payload *ExchangePayload) (result *ExchangeResult) { @@ -113,16 +115,14 @@ func (self *AuthServiceImpl) Exchange(payload *ExchangePayload) (result *Exchang SetError(nil). Throw(payload.Context) - resultData := struct { - RedirectUri string `json:"redirect_uri"` - }{url.String()} + resultData := &ExchangeResponse{url.String()} result = &ExchangeResult{ Common: shared.CommonResult{ HttpCode: 200, Exception: exception, }, - Data: &resultData, + Data: resultData, } return diff --git a/service/service_auth/magic.go b/service/service_auth/magic.go index 15a6e2c..e613bba 100644 --- a/service/service_auth/magic.go +++ b/service/service_auth/magic.go @@ -26,9 +26,13 @@ type MagicPayload struct { Data *MagicData } +type MagicResponse struct { + Uri string `json:"uri"` +} + type MagicResult struct { Common shared.CommonResult - Data any + Data *MagicResponse } func (self *AuthServiceImpl) Magic(payload *MagicPayload) (result *MagicResult) { @@ -129,7 +133,7 @@ func (self *AuthServiceImpl) Magic(payload *MagicPayload) (result *MagicResult) HttpCode: 200, Exception: exception, }, - Data: uriData, + Data: &MagicResponse{uriData.Uri}, } return diff --git a/service/service_event/checkin.go b/service/service_event/checkin.go index 7079554..ba89bb1 100644 --- a/service/service_event/checkin.go +++ b/service/service_event/checkin.go @@ -20,11 +20,13 @@ type CheckinPayload struct { Data *CheckinData } +type CheckinResponse struct { + CheckinCode *string `json:"checkin_code"` +} + type CheckinResult struct { Common shared.CommonResult - Data *struct { - CheckinCode *string `json:"checkin_code"` - } + Data *CheckinResponse } func (self *EventServiceImpl) Checkin(payload *CheckinPayload) (result *CheckinResult) { @@ -44,6 +46,7 @@ func (self *EventServiceImpl) Checkin(payload *CheckinPayload) (result *CheckinR Throw(payload.Context), }, } + return } @@ -58,10 +61,9 @@ func (self *EventServiceImpl) Checkin(payload *CheckinPayload) (result *CheckinR SetOriginal(exception.CommonSuccess). Throw(payload.Context), }, - Data: &struct { - CheckinCode *string `json:"checkin_code"` - }{code}, + Data: &CheckinResponse{code}, } + return } @@ -123,11 +125,13 @@ type CheckinQueryPayload struct { Data *CheckinQueryData } +type CheckinQueryResponse struct { + CheckinAt *time.Time `json:"checkin_at"` +} + type CheckinQueryResult struct { Common shared.CommonResult - Data *struct { - CheckinAt *time.Time `json:"checkin_at"` - } + Data *CheckinQueryResponse } func (self *EventServiceImpl) CheckinQuery(payload *CheckinQueryPayload) (result *CheckinQueryResult) { @@ -183,9 +187,7 @@ func (self *EventServiceImpl) CheckinQuery(payload *CheckinQueryPayload) (result SetOriginal(exception.CommonSuccess). Throw(payload.Context), }, - Data: &struct { - CheckinAt *time.Time `json:"checkin_at"` - }{checkinAt}, + Data: &CheckinQueryResponse{checkinAt}, } return } diff --git a/service/service_event/info.go b/service/service_event/info.go index 743fb21..06c7c1f 100644 --- a/service/service_event/info.go +++ b/service/service_event/info.go @@ -19,13 +19,15 @@ type InfoPayload struct { Data *InfoData } +type InfoResponse struct { + Name string `json:"name"` + StartTime time.Time `json:"start_time"` + EndTime time.Time `json:"end_time"` +} + type InfoResult struct { Common shared.CommonResult - Data *struct { - Name string `json:"name"` - StartTime time.Time `json:"start_time"` - EndTime time.Time `json:"end_time"` - } + Data *InfoResponse } func (self *EventServiceImpl) Info(payload *InfoPayload) (result *InfoResult) { @@ -50,16 +52,6 @@ func (self *EventServiceImpl) Info(payload *InfoPayload) (result *InfoResult) { return } - resultData := struct { - Name string `json:"name"` - StartTime time.Time `json:"start_time"` - EndTime time.Time `json:"end_time"` - }{ - Name: event.Name, - StartTime: event.StartTime, - EndTime: event.EndTime, - } - result = &InfoResult{ Common: shared.CommonResult{ HttpCode: 200, @@ -71,7 +63,11 @@ func (self *EventServiceImpl) Info(payload *InfoPayload) (result *InfoResult) { SetOriginal(exception.CommonSuccess). Throw(payload.Context), }, - Data: &resultData, + Data: &InfoResponse{ + Name: event.Name, + StartTime: event.StartTime, + EndTime: event.EndTime, + }, } return diff --git a/service/service_user/list_user_full_table.go b/service/service_user/list_user_full_table.go index f27bd65..31553ef 100644 --- a/service/service_user/list_user_full_table.go +++ b/service/service_user/list_user_full_table.go @@ -11,9 +11,13 @@ type UserTablePayload struct { Context context.Context } +type UserTableResponse struct { + UserTable *[]data.User `json:"user_table"` +} + type UserTableResult struct { Common shared.CommonResult - Data *[]data.User `json:"user_table"` + Data *UserTableResponse } // ListUserFullTable @@ -58,7 +62,7 @@ func (self *UserServiceImpl) GetUserFullTable(payload *UserTablePayload) (result HttpCode: 200, Exception: exception, }, - Data: userFullTable, + Data: &UserTableResponse{userFullTable}, } return