mirror of
https://github.com/absmach/magistrala.git
synced 2026-06-23 04:10:28 +00:00
SMQ-3338 - Add created at period filter to entities (#3339)
Signed-off-by: Felix Gateru <felix.gateru@gmail.com>
This commit is contained in:
@@ -162,6 +162,8 @@ type PageMetadata struct {
|
||||
Tree bool `json:"tree,omitempty"`
|
||||
StartLevel int64 `json:"start_level,omitempty"`
|
||||
EndLevel int64 `json:"end_level,omitempty"`
|
||||
CreatedFrom time.Time `json:"created_from,omitempty"`
|
||||
CreatedTo time.Time `json:"created_to,omitempty"`
|
||||
}
|
||||
|
||||
type Role struct {
|
||||
@@ -1702,6 +1704,12 @@ func (pm PageMetadata) query() (string, error) {
|
||||
if pm.To != 0 {
|
||||
q.Add("to", strconv.FormatInt(pm.To, 10))
|
||||
}
|
||||
if !pm.CreatedFrom.IsZero() {
|
||||
q.Add("created_from", pm.CreatedFrom.Format(time.RFC3339))
|
||||
}
|
||||
if !pm.CreatedTo.IsZero() {
|
||||
q.Add("created_to", pm.CreatedTo.Format(time.RFC3339))
|
||||
}
|
||||
q.Add("with_attributes", strconv.FormatBool(pm.WithAttributes))
|
||||
q.Add("with_metadata", strconv.FormatBool(pm.WithMetadata))
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ import (
|
||||
"net/http/httptest"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
grpcTokenV1 "github.com/absmach/supermq/api/grpc/token/v1"
|
||||
api "github.com/absmach/supermq/api/http"
|
||||
@@ -509,6 +510,98 @@ func TestListUsers(t *testing.T) {
|
||||
},
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
desc: "list users with CreatedFrom",
|
||||
token: validToken,
|
||||
pageMeta: sdk.PageMetadata{
|
||||
Offset: offset,
|
||||
Limit: limit,
|
||||
CreatedFrom: time.Date(2024, 1, 1, 0, 0, 0, 0, time.UTC),
|
||||
},
|
||||
svcReq: users.Page{
|
||||
Offset: offset,
|
||||
Limit: limit,
|
||||
CreatedFrom: time.Date(2024, 1, 1, 0, 0, 0, 0, time.UTC),
|
||||
Order: api.DefOrder,
|
||||
Dir: api.DefDir,
|
||||
},
|
||||
svcRes: users.UsersPage{
|
||||
Page: users.Page{
|
||||
Total: uint64(len(cls[offset:limit])),
|
||||
},
|
||||
Users: convertUsers(cls[offset:limit]),
|
||||
},
|
||||
svcErr: nil,
|
||||
response: sdk.UsersPage{
|
||||
PageRes: sdk.PageRes{
|
||||
Total: uint64(len(cls[offset:limit])),
|
||||
},
|
||||
Users: cls[offset:limit],
|
||||
},
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
desc: "list users with CreatedTo",
|
||||
token: validToken,
|
||||
pageMeta: sdk.PageMetadata{
|
||||
Offset: offset,
|
||||
Limit: limit,
|
||||
CreatedTo: time.Date(2025, 12, 31, 23, 59, 59, 0, time.UTC),
|
||||
},
|
||||
svcReq: users.Page{
|
||||
Offset: offset,
|
||||
Limit: limit,
|
||||
CreatedTo: time.Date(2025, 12, 31, 23, 59, 59, 0, time.UTC),
|
||||
Order: api.DefOrder,
|
||||
Dir: api.DefDir,
|
||||
},
|
||||
svcRes: users.UsersPage{
|
||||
Page: users.Page{
|
||||
Total: uint64(len(cls[offset:limit])),
|
||||
},
|
||||
Users: convertUsers(cls[offset:limit]),
|
||||
},
|
||||
svcErr: nil,
|
||||
response: sdk.UsersPage{
|
||||
PageRes: sdk.PageRes{
|
||||
Total: uint64(len(cls[offset:limit])),
|
||||
},
|
||||
Users: cls[offset:limit],
|
||||
},
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
desc: "list users with both CreatedFrom and CreatedTo",
|
||||
token: validToken,
|
||||
pageMeta: sdk.PageMetadata{
|
||||
Offset: offset,
|
||||
Limit: limit,
|
||||
CreatedFrom: time.Date(2024, 1, 1, 0, 0, 0, 0, time.UTC),
|
||||
CreatedTo: time.Date(2025, 12, 31, 23, 59, 59, 0, time.UTC),
|
||||
},
|
||||
svcReq: users.Page{
|
||||
Offset: offset,
|
||||
Limit: limit,
|
||||
CreatedFrom: time.Date(2024, 1, 1, 0, 0, 0, 0, time.UTC),
|
||||
CreatedTo: time.Date(2025, 12, 31, 23, 59, 59, 0, time.UTC),
|
||||
Order: api.DefOrder,
|
||||
Dir: api.DefDir,
|
||||
},
|
||||
svcRes: users.UsersPage{
|
||||
Page: users.Page{
|
||||
Total: 2,
|
||||
},
|
||||
Users: []users.User{convertUser(cls[10]), convertUser(cls[20])},
|
||||
},
|
||||
svcErr: nil,
|
||||
response: sdk.UsersPage{
|
||||
PageRes: sdk.PageRes{
|
||||
Total: 2,
|
||||
},
|
||||
Users: []sdk.User{cls[10], cls[20]},
|
||||
},
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
desc: "list users with request that can't be marshalled",
|
||||
token: validToken,
|
||||
|
||||
Reference in New Issue
Block a user