Line data Source code
1 : // Package request は HTTP ハンドラが受け取る入力DTO(Query/Body)の型をまとめます。
2 : package request
3 :
4 : // ListPagingQuery は 一覧系エンドポイントで共通に使うページングパラメータ。
5 : type ListPagingQuery struct {
6 : // 1以上の整数。未指定なら 1。
7 : Page int `form:"page" binding:"omitempty,min=1"`
8 :
9 : // -1(全件)または 1..100。未指定なら 10。
10 : PerPage int `form:"per_page" binding:"omitempty"`
11 :
12 : // 並び順。asc/desc のみ。
13 : Order string `form:"order" binding:"omitempty,oneof=asc desc"`
14 : }
15 :
16 : // Normalize はゼロ値にデフォルト値を入れたり、上限等を丸めます。
17 0 : func (q *ListPagingQuery) Normalize() {
18 0 : if q.Page == 0 {
19 0 : q.Page = 1
20 0 : }
21 0 : if q.PerPage == 0 {
22 0 : q.PerPage = 10
23 0 : }
24 : // -1 は「全件」。それ以外は 1..100 に丸める。
25 0 : if q.PerPage != -1 {
26 0 : if q.PerPage < 1 {
27 0 : q.PerPage = 10
28 0 : //} else if q.PerPage > 100 {
29 0 : // q.PerPage = 100
30 0 : }
31 : }
32 0 : if q.Order == "" {
33 0 : q.Order = "desc"
34 0 : }
35 : }
|