Skip to content

Commit ec34ad6

Browse files
committed
[messages] minor fixes and documenting
1 parent fb65def commit ec34ad6

File tree

6 files changed

+24
-12
lines changed

6 files changed

+24
-12
lines changed

internal/sms-gateway/handlers/messages/mobile.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ type MobileController struct {
3838
// @Tags Device, Messages
3939
// @Accept json
4040
// @Produce json
41-
// @Param order query string false "Message processing order: lifo (default) or fifo" Enums(lifo,fifo)
41+
// @Param order query string false "Message processing order: lifo (default) or fifo" Enums(lifo,fifo) default(lifo)
4242
// @Success 200 {object} smsgateway.MobileGetMessagesResponse "List of pending messages"
43-
// @Failure 400 {object} smsgateway.ErrorResponse "Bad request"
43+
// @Failure 400 {object} smsgateway.ErrorResponse "Invalid request"
4444
// @Failure 500 {object} smsgateway.ErrorResponse "Internal server error"
4545
// @Router /mobile/v1/message [get]
4646
//
@@ -52,7 +52,7 @@ func (h *MobileController) list(device models.Device, c *fiber.Ctx) error {
5252
return fiber.NewError(fiber.StatusBadRequest, err.Error())
5353
}
5454

55-
msgs, err := h.messagesSvc.SelectPending(device.ID, messages.MessagesOrder(params.OrderOrDefault()))
55+
msgs, err := h.messagesSvc.SelectPending(device.ID, params.OrderOrDefault())
5656
if err != nil {
5757
return fmt.Errorf("can't get messages: %w", err)
5858
}
@@ -82,7 +82,7 @@ func (h *MobileController) list(device models.Device, c *fiber.Ctx) error {
8282
// Update message state
8383
func (h *MobileController) patch(device models.Device, c *fiber.Ctx) error {
8484
var req smsgateway.MobilePatchMessageRequest
85-
if err := c.BodyParser(&req); err != nil {
85+
if err := h.BodyParserValidator(c, &req); err != nil {
8686
return fiber.NewError(fiber.StatusBadRequest, err.Error())
8787
}
8888

@@ -96,7 +96,10 @@ func (h *MobileController) patch(device models.Device, c *fiber.Ctx) error {
9696

9797
err := h.messagesSvc.UpdateState(device.ID, messageState)
9898
if err != nil && !errors.Is(err, messages.ErrMessageNotFound) {
99-
h.Logger.Error("Can't update message status", zap.Error(err))
99+
h.Logger.Error("Can't update message status",
100+
zap.String("message_id", v.ID),
101+
zap.Error(err),
102+
)
100103
}
101104
}
102105

internal/sms-gateway/handlers/messages/params.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,13 @@ func (p *thirdPartyGetQueryParams) ToOptions() messages.MessagesSelectOptions {
7575
}
7676

7777
type mobileGetQueryParams struct {
78-
Order string `query:"order" validate:"omitempty,oneof=lifo fifo"`
78+
Order messages.MessagesOrder `query:"order" validate:"omitempty,oneof=lifo fifo"`
7979
}
8080

81-
func (p *mobileGetQueryParams) OrderOrDefault() string {
81+
func (p *mobileGetQueryParams) OrderOrDefault() messages.MessagesOrder {
8282
if p.Order != "" {
8383
return p.Order
8484
}
85-
return "lifo"
85+
return messages.MessagesOrderLIFO
8686

8787
}

internal/sms-gateway/modules/messages/repository.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
)
1414

1515
const hashingLockName = "36444143-1ace-4dbf-891c-cc505911497e"
16+
const maxPendingBatch = 100
1617

1718
var ErrMessageNotFound = gorm.ErrRecordNotFound
1819
var ErrMessageAlreadyExists = errors.New("duplicate id")
@@ -101,7 +102,7 @@ func (r *repository) SelectPending(deviceID string, order MessagesOrder) ([]Mess
101102
State: ProcessingStatePending,
102103
}, MessagesSelectOptions{
103104
WithRecipients: true,
104-
Limit: 100,
105+
Limit: maxPendingBatch,
105106
OrderBy: order,
106107
})
107108

internal/sms-gateway/modules/messages/repository_filter.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@ package messages
22

33
import "time"
44

5+
// MessagesOrder defines supported ordering for message selection.
6+
// Valid values: "lifo" (default), "fifo".
57
type MessagesOrder string
68

79
const (
10+
// MessagesOrderLIFO orders messages newest-first within the same priority (default).
811
MessagesOrderLIFO MessagesOrder = "lifo"
12+
// MessagesOrderFIFO orders messages oldest-first within the same priority.
913
MessagesOrderFIFO MessagesOrder = "fifo"
1014
)
1115

@@ -23,6 +27,8 @@ type MessagesSelectOptions struct {
2327
WithDevice bool
2428
WithStates bool
2529

30+
// OrderBy sets the retrieval order for pending messages.
31+
// Empty (zero) value defaults to "lifo".
2632
OrderBy MessagesOrder
2733

2834
Limit int

pkg/swagger/docs/swagger.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -989,6 +989,7 @@
989989
"fifo"
990990
],
991991
"type": "string",
992+
"default": "lifo",
992993
"description": "Message processing order: lifo (default) or fifo",
993994
"name": "order",
994995
"in": "query"
@@ -1005,7 +1006,7 @@
10051006
}
10061007
},
10071008
"400": {
1008-
"description": "Bad request",
1009+
"description": "Invalid request",
10091010
"schema": {
10101011
"$ref": "#/definitions/smsgateway.ErrorResponse"
10111012
}

pkg/swagger/docs/swagger.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1418,7 +1418,8 @@ paths:
14181418
- application/json
14191419
description: Returns list of pending messages
14201420
parameters:
1421-
- description: 'Message processing order: lifo (default) or fifo'
1421+
- default: lifo
1422+
description: 'Message processing order: lifo (default) or fifo'
14221423
enum:
14231424
- lifo
14241425
- fifo
@@ -1435,7 +1436,7 @@ paths:
14351436
$ref: '#/definitions/smsgateway.MobileMessage'
14361437
type: array
14371438
"400":
1438-
description: Bad request
1439+
description: Invalid request
14391440
schema:
14401441
$ref: '#/definitions/smsgateway.ErrorResponse'
14411442
"500":

0 commit comments

Comments
 (0)