[API] Remove unused query params from swagger docs (#166)
### Summary * Swagger: remove `sortOrder` query parameter from several endpoints in which it didn't make sense. * Swagger: remove query params `page` and `pageSize` from endpoints that return a single object. * Sort the output of `GET /api/v1/governor/config` by ascending id. * Refactor: remove duplicated code, format code for readability.
This commit is contained in:
parent
3e01b42f20
commit
4cf7577a03
124
api/docs/docs.go
124
api/docs/docs.go
|
@ -43,16 +43,6 @@ const docTemplate = `{
|
|||
"description": "Number of elements per page.",
|
||||
"name": "pageSize",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"enum": [
|
||||
"ASC",
|
||||
"DESC"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "Sort results in ascending or descending order.",
|
||||
"name": "sortOrder",
|
||||
"in": "query"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
@ -78,35 +68,11 @@ const docTemplate = `{
|
|||
"Wormscan"
|
||||
],
|
||||
"operationId": "governor-config-by-guardian-address",
|
||||
"parameters": [
|
||||
{
|
||||
"type": "integer",
|
||||
"description": "Page number.",
|
||||
"name": "page",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"type": "integer",
|
||||
"description": "Number of elements per page.",
|
||||
"name": "pageSize",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"enum": [
|
||||
"ASC",
|
||||
"DESC"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "Sort results in ascending or descending order.",
|
||||
"name": "sortOrder",
|
||||
"in": "query"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/response.Response-array_governor_GovConfig"
|
||||
"$ref": "#/definitions/response.Response-governor_GovConfig"
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
|
@ -315,16 +281,6 @@ const docTemplate = `{
|
|||
"description": "Number of elements per page.",
|
||||
"name": "pageSize",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"enum": [
|
||||
"ASC",
|
||||
"DESC"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "Sort results in ascending or descending order.",
|
||||
"name": "sortOrder",
|
||||
"in": "query"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
@ -362,16 +318,6 @@ const docTemplate = `{
|
|||
"description": "Number of elements per page.",
|
||||
"name": "pageSize",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"enum": [
|
||||
"ASC",
|
||||
"DESC"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "Sort results in ascending or descending order.",
|
||||
"name": "sortOrder",
|
||||
"in": "query"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
@ -409,16 +355,6 @@ const docTemplate = `{
|
|||
"description": "Number of elements per page.",
|
||||
"name": "pageSize",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"enum": [
|
||||
"ASC",
|
||||
"DESC"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "Sort results in ascending or descending order.",
|
||||
"name": "sortOrder",
|
||||
"in": "query"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
@ -444,30 +380,6 @@ const docTemplate = `{
|
|||
"Wormscan"
|
||||
],
|
||||
"operationId": "governor-max-notional-available-by-chain",
|
||||
"parameters": [
|
||||
{
|
||||
"type": "integer",
|
||||
"description": "Page number.",
|
||||
"name": "page",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"type": "integer",
|
||||
"description": "Number of elements per page.",
|
||||
"name": "pageSize",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"enum": [
|
||||
"ASC",
|
||||
"DESC"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "Sort results in ascending or descending order.",
|
||||
"name": "sortOrder",
|
||||
"in": "query"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
|
@ -503,16 +415,6 @@ const docTemplate = `{
|
|||
"description": "Number of elements per page.",
|
||||
"name": "pageSize",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"enum": [
|
||||
"ASC",
|
||||
"DESC"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "Sort results in ascending or descending order.",
|
||||
"name": "sortOrder",
|
||||
"in": "query"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
@ -550,16 +452,6 @@ const docTemplate = `{
|
|||
"description": "Number of elements per page.",
|
||||
"name": "pageSize",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"enum": [
|
||||
"ASC",
|
||||
"DESC"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "Sort results in ascending or descending order.",
|
||||
"name": "sortOrder",
|
||||
"in": "query"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
@ -2046,20 +1938,6 @@ const docTemplate = `{
|
|||
}
|
||||
}
|
||||
},
|
||||
"response.Response-array_governor_GovConfig": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"data": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/governor.GovConfig"
|
||||
}
|
||||
},
|
||||
"pagination": {
|
||||
"$ref": "#/definitions/response.ResponsePagination"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response.Response-array_governor_GovStatus": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
|
|
@ -36,16 +36,6 @@
|
|||
"description": "Number of elements per page.",
|
||||
"name": "pageSize",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"enum": [
|
||||
"ASC",
|
||||
"DESC"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "Sort results in ascending or descending order.",
|
||||
"name": "sortOrder",
|
||||
"in": "query"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
@ -71,35 +61,11 @@
|
|||
"Wormscan"
|
||||
],
|
||||
"operationId": "governor-config-by-guardian-address",
|
||||
"parameters": [
|
||||
{
|
||||
"type": "integer",
|
||||
"description": "Page number.",
|
||||
"name": "page",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"type": "integer",
|
||||
"description": "Number of elements per page.",
|
||||
"name": "pageSize",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"enum": [
|
||||
"ASC",
|
||||
"DESC"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "Sort results in ascending or descending order.",
|
||||
"name": "sortOrder",
|
||||
"in": "query"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/response.Response-array_governor_GovConfig"
|
||||
"$ref": "#/definitions/response.Response-governor_GovConfig"
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
|
@ -308,16 +274,6 @@
|
|||
"description": "Number of elements per page.",
|
||||
"name": "pageSize",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"enum": [
|
||||
"ASC",
|
||||
"DESC"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "Sort results in ascending or descending order.",
|
||||
"name": "sortOrder",
|
||||
"in": "query"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
@ -355,16 +311,6 @@
|
|||
"description": "Number of elements per page.",
|
||||
"name": "pageSize",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"enum": [
|
||||
"ASC",
|
||||
"DESC"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "Sort results in ascending or descending order.",
|
||||
"name": "sortOrder",
|
||||
"in": "query"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
@ -402,16 +348,6 @@
|
|||
"description": "Number of elements per page.",
|
||||
"name": "pageSize",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"enum": [
|
||||
"ASC",
|
||||
"DESC"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "Sort results in ascending or descending order.",
|
||||
"name": "sortOrder",
|
||||
"in": "query"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
@ -437,30 +373,6 @@
|
|||
"Wormscan"
|
||||
],
|
||||
"operationId": "governor-max-notional-available-by-chain",
|
||||
"parameters": [
|
||||
{
|
||||
"type": "integer",
|
||||
"description": "Page number.",
|
||||
"name": "page",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"type": "integer",
|
||||
"description": "Number of elements per page.",
|
||||
"name": "pageSize",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"enum": [
|
||||
"ASC",
|
||||
"DESC"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "Sort results in ascending or descending order.",
|
||||
"name": "sortOrder",
|
||||
"in": "query"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "OK",
|
||||
|
@ -496,16 +408,6 @@
|
|||
"description": "Number of elements per page.",
|
||||
"name": "pageSize",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"enum": [
|
||||
"ASC",
|
||||
"DESC"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "Sort results in ascending or descending order.",
|
||||
"name": "sortOrder",
|
||||
"in": "query"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
@ -543,16 +445,6 @@
|
|||
"description": "Number of elements per page.",
|
||||
"name": "pageSize",
|
||||
"in": "query"
|
||||
},
|
||||
{
|
||||
"enum": [
|
||||
"ASC",
|
||||
"DESC"
|
||||
],
|
||||
"type": "string",
|
||||
"description": "Sort results in ascending or descending order.",
|
||||
"name": "sortOrder",
|
||||
"in": "query"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
@ -2039,20 +1931,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"response.Response-array_governor_GovConfig": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"data": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/governor.GovConfig"
|
||||
}
|
||||
},
|
||||
"pagination": {
|
||||
"$ref": "#/definitions/response.ResponsePagination"
|
||||
}
|
||||
}
|
||||
},
|
||||
"response.Response-array_governor_GovStatus": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
|
|
@ -363,15 +363,6 @@ definitions:
|
|||
pagination:
|
||||
$ref: '#/definitions/response.ResponsePagination'
|
||||
type: object
|
||||
response.Response-array_governor_GovConfig:
|
||||
properties:
|
||||
data:
|
||||
items:
|
||||
$ref: '#/definitions/governor.GovConfig'
|
||||
type: array
|
||||
pagination:
|
||||
$ref: '#/definitions/response.ResponsePagination'
|
||||
type: object
|
||||
response.Response-array_governor_GovStatus:
|
||||
properties:
|
||||
data:
|
||||
|
@ -593,13 +584,6 @@ paths:
|
|||
in: query
|
||||
name: pageSize
|
||||
type: integer
|
||||
- description: Sort results in ascending or descending order.
|
||||
enum:
|
||||
- ASC
|
||||
- DESC
|
||||
in: query
|
||||
name: sortOrder
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
|
@ -615,27 +599,11 @@ paths:
|
|||
get:
|
||||
description: Returns governor configuration for a given guardian.
|
||||
operationId: governor-config-by-guardian-address
|
||||
parameters:
|
||||
- description: Page number.
|
||||
in: query
|
||||
name: page
|
||||
type: integer
|
||||
- description: Number of elements per page.
|
||||
in: query
|
||||
name: pageSize
|
||||
type: integer
|
||||
- description: Sort results in ascending or descending order.
|
||||
enum:
|
||||
- ASC
|
||||
- DESC
|
||||
in: query
|
||||
name: sortOrder
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
schema:
|
||||
$ref: '#/definitions/response.Response-array_governor_GovConfig'
|
||||
$ref: '#/definitions/response.Response-governor_GovConfig'
|
||||
"400":
|
||||
description: Bad Request
|
||||
"500":
|
||||
|
@ -772,13 +740,6 @@ paths:
|
|||
in: query
|
||||
name: pageSize
|
||||
type: integer
|
||||
- description: Sort results in ascending or descending order.
|
||||
enum:
|
||||
- ASC
|
||||
- DESC
|
||||
in: query
|
||||
name: sortOrder
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
|
@ -803,13 +764,6 @@ paths:
|
|||
in: query
|
||||
name: pageSize
|
||||
type: integer
|
||||
- description: Sort results in ascending or descending order.
|
||||
enum:
|
||||
- ASC
|
||||
- DESC
|
||||
in: query
|
||||
name: sortOrder
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
|
@ -834,13 +788,6 @@ paths:
|
|||
in: query
|
||||
name: pageSize
|
||||
type: integer
|
||||
- description: Sort results in ascending or descending order.
|
||||
enum:
|
||||
- ASC
|
||||
- DESC
|
||||
in: query
|
||||
name: sortOrder
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
|
@ -857,22 +804,6 @@ paths:
|
|||
description: Returns the maximum amount of notional value available for a given
|
||||
blockchain.
|
||||
operationId: governor-max-notional-available-by-chain
|
||||
parameters:
|
||||
- description: Page number.
|
||||
in: query
|
||||
name: page
|
||||
type: integer
|
||||
- description: Number of elements per page.
|
||||
in: query
|
||||
name: pageSize
|
||||
type: integer
|
||||
- description: Sort results in ascending or descending order.
|
||||
enum:
|
||||
- ASC
|
||||
- DESC
|
||||
in: query
|
||||
name: sortOrder
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
|
@ -897,13 +828,6 @@ paths:
|
|||
in: query
|
||||
name: pageSize
|
||||
type: integer
|
||||
- description: Sort results in ascending or descending order.
|
||||
enum:
|
||||
- ASC
|
||||
- DESC
|
||||
in: query
|
||||
name: sortOrder
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
|
@ -928,13 +852,6 @@ paths:
|
|||
in: query
|
||||
name: pageSize
|
||||
type: integer
|
||||
- description: Sort results in ascending or descending order.
|
||||
enum:
|
||||
- ASC
|
||||
- DESC
|
||||
in: query
|
||||
name: sortOrder
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
|
|
|
@ -77,7 +77,9 @@ func (q *GovernorQuery) toBSON() *bson.D {
|
|||
|
||||
// FindGovConfigurations get a list of *GovConfig.
|
||||
func (r *Repository) FindGovConfigurations(ctx context.Context, q *GovernorQuery) ([]*GovConfig, error) {
|
||||
sort := bson.D{{Key: q.SortBy, Value: q.GetSortInt()}}
|
||||
|
||||
sort := bson.D{{Key: "_id", Value: 1}}
|
||||
|
||||
projection := bson.D{
|
||||
{Key: "createdAt", Value: 1},
|
||||
{Key: "updatedAt", Value: 1},
|
||||
|
@ -86,48 +88,38 @@ func (r *Repository) FindGovConfigurations(ctx context.Context, q *GovernorQuery
|
|||
{Key: "chains", Value: "$parsedConfig.chains"},
|
||||
{Key: "tokens", Value: "$parsedConfig.tokens"},
|
||||
}
|
||||
options := options.Find().SetProjection(projection).SetLimit(q.Limit).SetSkip(q.Skip).SetSort(sort)
|
||||
|
||||
options := options.
|
||||
Find().
|
||||
SetProjection(projection).
|
||||
SetLimit(q.Limit).
|
||||
SetSkip(q.Skip).
|
||||
SetSort(sort)
|
||||
|
||||
cur, err := r.collections.governorConfig.Find(ctx, q.toBSON(), options)
|
||||
if err != nil {
|
||||
requestID := fmt.Sprintf("%v", ctx.Value("requestid"))
|
||||
r.logger.Error("failed execute Find command to get governor configurations",
|
||||
zap.Error(err), zap.Any("q", q), zap.String("requestID", requestID))
|
||||
zap.Error(err),
|
||||
zap.Any("q", q),
|
||||
zap.String("requestID", requestID),
|
||||
)
|
||||
return nil, errors.WithStack(err)
|
||||
}
|
||||
|
||||
var govConfigs []*GovConfig
|
||||
err = cur.All(ctx, &govConfigs)
|
||||
if err != nil {
|
||||
requestID := fmt.Sprintf("%v", ctx.Value("requestid"))
|
||||
r.logger.Error("failed decoding cursor to []*GovConfig", zap.Error(err), zap.Any("q", q),
|
||||
zap.String("requestID", requestID))
|
||||
r.logger.Error("failed decoding cursor to []*GovConfig",
|
||||
zap.Error(err),
|
||||
zap.Any("q", q),
|
||||
zap.String("requestID", requestID),
|
||||
)
|
||||
return nil, errors.WithStack(err)
|
||||
}
|
||||
return govConfigs, err
|
||||
}
|
||||
|
||||
// FindGovConfiguration get a *GovConfig. The q parameter define the filter to apply to the query.
|
||||
func (r *Repository) FindGovConfiguration(ctx context.Context, q *GovernorQuery) (*GovConfig, error) {
|
||||
var govConfig GovConfig
|
||||
projection := bson.D{
|
||||
{Key: "createdAt", Value: 1},
|
||||
{Key: "updatedAt", Value: 1},
|
||||
{Key: "nodename", Value: "$parsedConfig.nodename"},
|
||||
{Key: "counter", Value: "$parsedConfig.counter"},
|
||||
{Key: "chains", Value: "$parsedConfig.chains"},
|
||||
{Key: "tokens", Value: "$parsedConfig.tokens"},
|
||||
}
|
||||
options := options.FindOne().SetProjection(projection)
|
||||
err := r.collections.governorConfig.FindOne(ctx, q.toBSON(), options).Decode(&govConfig)
|
||||
if err != nil {
|
||||
if errors.Is(err, mongo.ErrNoDocuments) {
|
||||
return nil, errs.ErrNotFound
|
||||
}
|
||||
requestID := fmt.Sprintf("%v", ctx.Value("requestid"))
|
||||
r.logger.Error("failed execute FindOne command to get governor configuration",
|
||||
zap.Error(err), zap.Any("q", q), zap.String("requestID", requestID))
|
||||
return nil, errors.WithStack(err)
|
||||
}
|
||||
return &govConfig, err
|
||||
return govConfigs, err
|
||||
}
|
||||
|
||||
// FindGovernorStatus get a list of *GovStatus.
|
||||
|
|
|
@ -33,11 +33,21 @@ func (s *Service) FindGovernorConfig(ctx context.Context, p *pagination.Paginati
|
|||
}
|
||||
|
||||
// FindGovernorConfigByGuardianAddress get a governor configuration by guardianAddress.
|
||||
func (s *Service) FindGovernorConfigByGuardianAddress(ctx context.Context, guardianAddress string, p *pagination.Pagination) (*response.Response[*GovConfig], error) {
|
||||
query := QueryGovernor().SetID(guardianAddress).SetPagination(p)
|
||||
govConfig, err := s.repo.FindGovConfiguration(ctx, query)
|
||||
res := response.Response[*GovConfig]{Data: govConfig}
|
||||
return &res, err
|
||||
func (s *Service) FindGovernorConfigByGuardianAddress(
|
||||
ctx context.Context,
|
||||
guardianAddress string,
|
||||
) ([]*GovConfig, error) {
|
||||
|
||||
p := pagination.
|
||||
Default().
|
||||
SetLimit(1)
|
||||
|
||||
query := QueryGovernor().
|
||||
SetID(guardianAddress).
|
||||
SetPagination(p)
|
||||
|
||||
govConfigs, err := s.repo.FindGovConfigurations(ctx, query)
|
||||
return govConfigs, err
|
||||
}
|
||||
|
||||
// FindGovernorStatus get a list of governor status.
|
||||
|
@ -98,8 +108,8 @@ func (s *Service) GetAvailableNotionalByChainID(ctx context.Context, p *paginati
|
|||
}
|
||||
|
||||
// GetMaxNotionalAvailableByChainID get a maximun notional value by chainID.
|
||||
func (s *Service) GetMaxNotionalAvailableByChainID(ctx context.Context, p *pagination.Pagination, chainID vaa.ChainID) (*response.Response[*MaxNotionalAvailableRecord], error) {
|
||||
query := QueryNotionalLimit().SetPagination(p).SetChain(chainID)
|
||||
func (s *Service) GetMaxNotionalAvailableByChainID(ctx context.Context, chainID vaa.ChainID) (*response.Response[*MaxNotionalAvailableRecord], error) {
|
||||
query := QueryNotionalLimit().SetChain(chainID)
|
||||
maxNotionaLAvailable, err := s.repo.GetMaxNotionalAvailableByChainID(ctx, query)
|
||||
res := response.Response[*MaxNotionalAvailableRecord]{Data: maxNotionaLAvailable}
|
||||
return &res, err
|
||||
|
|
|
@ -21,6 +21,26 @@ func Default() *Pagination {
|
|||
return p
|
||||
}
|
||||
|
||||
func (p *Pagination) SetSkip(skip int64) *Pagination {
|
||||
p.Skip = skip
|
||||
return p
|
||||
}
|
||||
|
||||
func (p *Pagination) SetLimit(limit int64) *Pagination {
|
||||
p.Limit = limit
|
||||
return p
|
||||
}
|
||||
|
||||
func (p *Pagination) SetSortOrder(sortOrder string) *Pagination {
|
||||
p.SortOrder = sortOrder
|
||||
return p
|
||||
}
|
||||
|
||||
func (p *Pagination) SetSortBy(sortBy string) *Pagination {
|
||||
p.SortBy = sortBy
|
||||
return p
|
||||
}
|
||||
|
||||
// GetSortInt mapping to mongodb sort values.
|
||||
func (p *Pagination) GetSortInt() int {
|
||||
if p.SortOrder == "ASC" {
|
||||
|
|
|
@ -2,9 +2,12 @@
|
|||
package governor
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/wormhole-foundation/wormhole-explorer/api/handlers/governor"
|
||||
"github.com/wormhole-foundation/wormhole-explorer/api/middleware"
|
||||
"github.com/wormhole-foundation/wormhole-explorer/api/response"
|
||||
_ "github.com/wormhole-foundation/wormhole-explorer/api/response" // needed by swaggo docs
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
@ -26,7 +29,6 @@ func NewController(serv *governor.Service, logger *zap.Logger) *Controller {
|
|||
// @ID governor-config
|
||||
// @Param page query integer false "Page number."
|
||||
// @Param pageSize query integer false "Number of elements per page."
|
||||
// @Param sortOrder query string false "Sort results in ascending or descending order." Enums(ASC, DESC)
|
||||
// @Success 200 {object} response.Response[GovConfig]
|
||||
// @Failure 400
|
||||
// @Failure 500
|
||||
|
@ -50,31 +52,32 @@ func (c *Controller) FindGovernorConfigurations(ctx *fiber.Ctx) error {
|
|||
// @Description Returns governor configuration for a given guardian.
|
||||
// @Tags Wormscan
|
||||
// @ID governor-config-by-guardian-address
|
||||
// @Param page query integer false "Page number."
|
||||
// @Param pageSize query integer false "Number of elements per page."
|
||||
// @Param sortOrder query string false "Sort results in ascending or descending order." Enums(ASC, DESC)
|
||||
// @Success 200 {object} response.Response[[]GovConfig]
|
||||
// @Success 200 {object} response.Response[GovConfig]
|
||||
// @Failure 400
|
||||
// @Failure 500
|
||||
// @Router /api/v1/governor/config/:guardian_address [get]
|
||||
func (c *Controller) FindGovernorConfigurationByGuardianAddress(ctx *fiber.Ctx) error {
|
||||
|
||||
p, err := middleware.ExtractPagination(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// extract query params
|
||||
guardianAddress, err := middleware.ExtractGuardianAddress(ctx, c.logger)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
govConfig, err := c.srv.FindGovernorConfigByGuardianAddress(ctx.Context(), guardianAddress, p)
|
||||
// query the database
|
||||
govConfigs, err := c.srv.FindGovernorConfigByGuardianAddress(ctx.Context(), guardianAddress)
|
||||
if err != nil {
|
||||
return err
|
||||
} else if len(govConfigs) == 0 {
|
||||
return response.NewNotFoundError(ctx)
|
||||
} else if len(govConfigs) > 1 {
|
||||
err = fmt.Errorf("expected at most 1 governor config, but found %d", len(govConfigs))
|
||||
return response.NewInternalError(ctx, err)
|
||||
}
|
||||
|
||||
return ctx.JSON(govConfig)
|
||||
// populate the response struct and return
|
||||
res := response.Response[*governor.GovConfig]{Data: govConfigs[0]}
|
||||
return ctx.JSON(res)
|
||||
}
|
||||
|
||||
// FindGovernorStatus godoc
|
||||
|
@ -83,7 +86,6 @@ func (c *Controller) FindGovernorConfigurationByGuardianAddress(ctx *fiber.Ctx)
|
|||
// @ID governor-status
|
||||
// @Param page query integer false "Page number."
|
||||
// @Param pageSize query integer false "Number of elements per page."
|
||||
// @Param sortOrder query string false "Sort results in ascending or descending order." Enums(ASC, DESC)
|
||||
// @Success 200 {object} response.Response[[]GovStatus]
|
||||
// @Failure 400
|
||||
// @Failure 500
|
||||
|
@ -109,7 +111,6 @@ func (c *Controller) FindGovernorStatus(ctx *fiber.Ctx) error {
|
|||
// @ID governor-status-by-guardian-address
|
||||
// @Param page query integer false "Page number."
|
||||
// @Param pageSize query integer false "Number of elements per page."
|
||||
// @Param sortOrder query string false "Sort results in ascending or descending order." Enums(ASC, DESC)
|
||||
// @Success 200 {object} response.Response[GovStatus]
|
||||
// @Failure 400
|
||||
// @Failure 500
|
||||
|
@ -165,7 +166,6 @@ func (c *Controller) GetGovernorLimit(ctx *fiber.Ctx) error {
|
|||
// @ID governor-notional-limit-detail
|
||||
// @Param page query integer false "Page number."
|
||||
// @Param pageSize query integer false "Number of elements per page."
|
||||
// @Param sortOrder query string false "Sort results in ascending or descending order." Enums(ASC, DESC)
|
||||
// @Success 200 {object} response.Response[[]NotionalLimitDetail]
|
||||
// @Failure 400
|
||||
// @Failure 500
|
||||
|
@ -191,7 +191,6 @@ func (c *Controller) FindNotionalLimit(ctx *fiber.Ctx) error {
|
|||
// @ID governor-notional-limit-detail-by-chain
|
||||
// @Param page query integer false "Page number."
|
||||
// @Param pageSize query integer false "Number of elements per page."
|
||||
// @Param sortOrder query string false "Sort results in ascending or descending order." Enums(ASC, DESC)
|
||||
// @Success 200 {object} response.Response[[]NotionalLimitDetail]
|
||||
// @Failure 400
|
||||
// @Failure 500
|
||||
|
@ -248,7 +247,6 @@ func (c *Controller) GetAvailableNotional(ctx *fiber.Ctx) error {
|
|||
// @ID governor-notional-available-by-chain
|
||||
// @Param page query integer false "Page number."
|
||||
// @Param pageSize query integer false "Number of elements per page."
|
||||
// @Param sortOrder query string false "Sort results in ascending or descending order." Enums(ASC, DESC)
|
||||
// @Success 200 {object} response.Response[[]NotionalAvailableDetail]
|
||||
// @Failure 400
|
||||
// @Failure 500
|
||||
|
@ -277,26 +275,18 @@ func (c *Controller) GetAvailableNotionalByChainID(ctx *fiber.Ctx) error {
|
|||
// @Description Returns the maximum amount of notional value available for a given blockchain.
|
||||
// @Tags Wormscan
|
||||
// @ID governor-max-notional-available-by-chain
|
||||
// @Param page query integer false "Page number."
|
||||
// @Param pageSize query integer false "Number of elements per page."
|
||||
// @Param sortOrder query string false "Sort results in ascending or descending order." Enums(ASC, DESC)
|
||||
// @Success 200 {object} response.Response[MaxNotionalAvailableRecord]
|
||||
// @Failure 400
|
||||
// @Failure 500
|
||||
// @Router /api/v1/governor/notional/max_available/:chain [get]
|
||||
func (c *Controller) GetMaxNotionalAvailableByChainID(ctx *fiber.Ctx) error {
|
||||
|
||||
p, err := middleware.ExtractPagination(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
chainID, err := middleware.ExtractChainID(ctx, c.logger)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
response, err := c.srv.GetMaxNotionalAvailableByChainID(ctx.Context(), p, chainID)
|
||||
response, err := c.srv.GetMaxNotionalAvailableByChainID(ctx.Context(), chainID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue