3
0
corteza/federation/rest/sync_structure.go
2020-12-13 18:53:18 +01:00

54 lines
1.1 KiB
Go

package rest
import (
"context"
"github.com/cortezaproject/corteza-server/federation/rest/request"
"github.com/cortezaproject/corteza-server/federation/service"
"github.com/cortezaproject/corteza-server/federation/types"
"github.com/cortezaproject/corteza-server/pkg/filter"
)
type (
SyncStructure struct{}
listResponse struct {
Filter *types.ExposedModuleFilter `json:"filter"`
Set *types.ExposedModuleSet `json:"set"`
}
)
func (SyncStructure) New() *SyncStructure {
return &SyncStructure{}
}
func (ctrl SyncStructure) ReadExposedAll(ctx context.Context, r *request.SyncStructureReadExposedAll) (interface{}, error) {
var (
err error
node *types.Node
)
if node, err = service.DefaultNode.FindBySharedNodeID(ctx, r.NodeID); err != nil {
return nil, err
}
f := types.ExposedModuleFilter{
NodeID: node.ID,
}
if f.Paging, err = filter.NewPaging(r.Limit, r.PageCursor); err != nil {
return nil, err
}
if f.Sorting, err = filter.NewSorting(r.Sort); err != nil {
return nil, err
}
list, f, err := (service.ExposedModule()).Find(context.Background(), f)
return listResponse{
Set: &list,
Filter: &f,
}, nil
}