Passed
Push — main ( 203737...4cb1c0 )
by Acho
01:56
created

requests.*MessageSearch.Sanitize   A

Complexity

Conditions 3

Size

Total Lines 13
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 8
dl 0
loc 13
rs 10
c 0
b 0
f 0
nop 0
1
package requests
2
3
import (
4
	"strings"
5
6
	"github.com/NdoleStudio/httpsms/pkg/entities"
7
8
	"github.com/NdoleStudio/httpsms/pkg/repositories"
9
10
	"github.com/NdoleStudio/httpsms/pkg/services"
11
)
12
13
// MessageSearch is the payload fetching entities.Message
14
type MessageSearch struct {
15
	request
16
	Skip           string   `json:"skip" query:"skip"`
17
	Owners         []string `json:"owners" query:"owners"`
18
	Types          []string `json:"types" query:"types"`
19
	Statuses       []string `json:"statuses" query:"statuses"`
20
	Query          string   `json:"query" query:"query"`
21
	SortBy         string   `json:"sort_by" query:"sort_by"`
22
	SortDescending bool     `json:"sort_descending" query:"sort_descending"`
23
	Limit          string   `json:"limit" query:"limit"`
24
}
25
26
// Sanitize sets defaults to MessageSearch
27
func (input *MessageSearch) Sanitize() MessageSearch {
28
	if strings.TrimSpace(input.Limit) == "" {
29
		input.Limit = "100"
30
	}
31
32
	input.Query = strings.TrimSpace(input.Query)
33
34
	input.Skip = strings.TrimSpace(input.Skip)
35
	if input.Skip == "" {
36
		input.Skip = "0"
37
	}
38
39
	return *input
40
}
41
42
// ToSearchParams converts request to services.MessageSearchParams
43
func (input *MessageSearch) ToSearchParams(userID entities.UserID) *services.MessageSearchParams {
44
	var types []entities.MessageType
45
	for _, t := range input.Types {
46
		types = append(types, entities.MessageType(t))
47
	}
48
49
	var statuses []entities.MessageStatus
50
	for _, s := range input.Statuses {
51
		statuses = append(statuses, entities.MessageStatus(s))
52
	}
53
54
	return &services.MessageSearchParams{
55
		IndexParams: repositories.IndexParams{
56
			Skip:           input.getInt(input.Skip),
57
			Query:          input.Query,
58
			SortBy:         input.SortBy,
59
			SortDescending: input.SortDescending,
60
			Limit:          input.getInt(input.Limit),
61
		},
62
		UserID:   userID,
63
		Owners:   input.Owners,
64
		Types:    types,
65
		Statuses: statuses,
66
	}
67
}
68