Structure sync get node info, list response.
This commit is contained in:
parent
abcf13b0a3
commit
798e2126f5
@ -291,14 +291,19 @@ endpoints:
|
|||||||
- title: Sync structure
|
- title: Sync structure
|
||||||
description: Sync structure
|
description: Sync structure
|
||||||
entrypoint: syncStructure
|
entrypoint: syncStructure
|
||||||
path: ""
|
path: "/nodes/{nodeID}/modules/exposed"
|
||||||
authentication: []
|
authentication: []
|
||||||
apis:
|
apis:
|
||||||
- name: readExposedAll
|
- name: readExposedAll
|
||||||
method: GET
|
method: GET
|
||||||
title: List all exposed modules changes
|
title: List all exposed modules changes
|
||||||
path: "/exposed/modules/"
|
path: "/"
|
||||||
parameters:
|
parameters:
|
||||||
|
path:
|
||||||
|
- type: uint64
|
||||||
|
name: nodeID
|
||||||
|
required: true
|
||||||
|
title: Node ID
|
||||||
get:
|
get:
|
||||||
- type: string
|
- type: string
|
||||||
name: query
|
name: query
|
||||||
|
|||||||
@ -58,6 +58,6 @@ func NewSyncStructure(h SyncStructureAPI) *SyncStructure {
|
|||||||
func (h SyncStructure) MountRoutes(r chi.Router, middlewares ...func(http.Handler) http.Handler) {
|
func (h SyncStructure) MountRoutes(r chi.Router, middlewares ...func(http.Handler) http.Handler) {
|
||||||
r.Group(func(r chi.Router) {
|
r.Group(func(r chi.Router) {
|
||||||
r.Use(middlewares...)
|
r.Use(middlewares...)
|
||||||
r.Get("/exposed/modules/", h.ReadExposedAll)
|
r.Get("/nodes/{nodeID}/modules/exposed/", h.ReadExposedAll)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,6 +30,11 @@ var (
|
|||||||
type (
|
type (
|
||||||
// Internal API interface
|
// Internal API interface
|
||||||
SyncStructureReadExposedAll struct {
|
SyncStructureReadExposedAll struct {
|
||||||
|
// NodeID PATH parameter
|
||||||
|
//
|
||||||
|
// Node ID
|
||||||
|
NodeID uint64 `json:",string"`
|
||||||
|
|
||||||
// Query GET parameter
|
// Query GET parameter
|
||||||
//
|
//
|
||||||
// Search query
|
// Search query
|
||||||
@ -60,6 +65,7 @@ func NewSyncStructureReadExposedAll() *SyncStructureReadExposedAll {
|
|||||||
// Auditable returns all auditable/loggable parameters
|
// Auditable returns all auditable/loggable parameters
|
||||||
func (r SyncStructureReadExposedAll) Auditable() map[string]interface{} {
|
func (r SyncStructureReadExposedAll) Auditable() map[string]interface{} {
|
||||||
return map[string]interface{}{
|
return map[string]interface{}{
|
||||||
|
"nodeID": r.NodeID,
|
||||||
"query": r.Query,
|
"query": r.Query,
|
||||||
"limit": r.Limit,
|
"limit": r.Limit,
|
||||||
"pageCursor": r.PageCursor,
|
"pageCursor": r.PageCursor,
|
||||||
@ -67,6 +73,11 @@ func (r SyncStructureReadExposedAll) Auditable() map[string]interface{} {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Auditable returns all auditable/loggable parameters
|
||||||
|
func (r SyncStructureReadExposedAll) GetNodeID() uint64 {
|
||||||
|
return r.NodeID
|
||||||
|
}
|
||||||
|
|
||||||
// Auditable returns all auditable/loggable parameters
|
// Auditable returns all auditable/loggable parameters
|
||||||
func (r SyncStructureReadExposedAll) GetQuery() string {
|
func (r SyncStructureReadExposedAll) GetQuery() string {
|
||||||
return r.Query
|
return r.Query
|
||||||
@ -130,5 +141,17 @@ func (r *SyncStructureReadExposedAll) Fill(req *http.Request) (err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
var val string
|
||||||
|
// path params
|
||||||
|
|
||||||
|
val = chi.URLParam(req, "nodeID")
|
||||||
|
r.NodeID, err = payload.ParseUint64(val), nil
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,9 +12,9 @@ import (
|
|||||||
type (
|
type (
|
||||||
SyncStructure struct{}
|
SyncStructure struct{}
|
||||||
|
|
||||||
TempStruct struct {
|
listResponse struct {
|
||||||
Filter types.ExposedModuleFilter `json:"filter"`
|
Filter *types.ExposedModuleFilter `json:"filter"`
|
||||||
Set types.ExposedModuleSet `json:"set"`
|
Set *types.ExposedModuleSet `json:"set"`
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -23,15 +23,19 @@ func (SyncStructure) New() *SyncStructure {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ctrl SyncStructure) ReadExposedAll(ctx context.Context, r *request.SyncStructureReadExposedAll) (interface{}, error) {
|
func (ctrl SyncStructure) ReadExposedAll(ctx context.Context, r *request.SyncStructureReadExposedAll) (interface{}, error) {
|
||||||
// TODO - fixed values for now
|
|
||||||
|
|
||||||
var (
|
var (
|
||||||
err error
|
err error
|
||||||
f = types.ExposedModuleFilter{
|
node *types.Node
|
||||||
NodeID: 276342359342989444,
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
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 {
|
if f.Paging, err = filter.NewPaging(r.Limit, r.PageCursor); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -42,8 +46,8 @@ func (ctrl SyncStructure) ReadExposedAll(ctx context.Context, r *request.SyncStr
|
|||||||
|
|
||||||
list, f, err := (service.ExposedModule()).Find(context.Background(), f)
|
list, f, err := (service.ExposedModule()).Find(context.Background(), f)
|
||||||
|
|
||||||
return TempStruct{
|
return listResponse{
|
||||||
Set: list,
|
Set: &list,
|
||||||
Filter: f,
|
Filter: &f,
|
||||||
}, err
|
}, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,7 +12,6 @@ import (
|
|||||||
|
|
||||||
type (
|
type (
|
||||||
exposedModule struct {
|
exposedModule struct {
|
||||||
ctx context.Context
|
|
||||||
module composeService.ModuleService
|
module composeService.ModuleService
|
||||||
namespace composeService.NamespaceService
|
namespace composeService.NamespaceService
|
||||||
store store.Storer
|
store store.Storer
|
||||||
@ -33,7 +32,6 @@ type (
|
|||||||
|
|
||||||
func ExposedModule() ExposedModuleService {
|
func ExposedModule() ExposedModuleService {
|
||||||
return &exposedModule{
|
return &exposedModule{
|
||||||
ctx: context.Background(),
|
|
||||||
module: composeService.DefaultModule,
|
module: composeService.DefaultModule,
|
||||||
namespace: composeService.DefaultNamespace,
|
namespace: composeService.DefaultNamespace,
|
||||||
store: DefaultStore,
|
store: DefaultStore,
|
||||||
@ -211,7 +209,7 @@ func (svc exposedModule) Create(ctx context.Context, new *types.ExposedModule) (
|
|||||||
}
|
}
|
||||||
|
|
||||||
if _, err := svc.module.FindByID(new.ComposeNamespaceID, new.ComposeModuleID); err != nil {
|
if _, err := svc.module.FindByID(new.ComposeNamespaceID, new.ComposeModuleID); err != nil {
|
||||||
return ExposedModuleErrComposeNamespaceNotFound()
|
return ExposedModuleErrComposeModuleNotFound()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for node - compose.Module combo
|
// Check for node - compose.Module combo
|
||||||
|
|||||||
@ -4,6 +4,11 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/cortezaproject/corteza-server/federation/types"
|
"github.com/cortezaproject/corteza-server/federation/types"
|
||||||
"github.com/cortezaproject/corteza-server/pkg/actionlog"
|
"github.com/cortezaproject/corteza-server/pkg/actionlog"
|
||||||
"github.com/cortezaproject/corteza-server/pkg/auth"
|
"github.com/cortezaproject/corteza-server/pkg/auth"
|
||||||
@ -11,10 +16,6 @@ import (
|
|||||||
"github.com/cortezaproject/corteza-server/store"
|
"github.com/cortezaproject/corteza-server/store"
|
||||||
"github.com/cortezaproject/corteza-server/system/service"
|
"github.com/cortezaproject/corteza-server/system/service"
|
||||||
sysTypes "github.com/cortezaproject/corteza-server/system/types"
|
sysTypes "github.com/cortezaproject/corteza-server/system/types"
|
||||||
"net/http"
|
|
||||||
"net/url"
|
|
||||||
"strconv"
|
|
||||||
"strings"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -355,6 +356,10 @@ func (svc node) updater(ctx context.Context, nodeID uint64, action func(...*node
|
|||||||
return n, svc.recordAction(ctx, aProps, action, err)
|
return n, svc.recordAction(ctx, aProps, action, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (svc node) FindBySharedNodeID(ctx context.Context, sharedNodeID uint64) (*types.Node, error) {
|
||||||
|
return svc.store.LookupFederationNodeBySharedNodeID(ctx, sharedNodeID)
|
||||||
|
}
|
||||||
|
|
||||||
// Looks for existing user or crates a new one
|
// Looks for existing user or crates a new one
|
||||||
func (svc node) fetchFederatedUser(ctx context.Context, n *types.Node) (*sysTypes.User, error) {
|
func (svc node) fetchFederatedUser(ctx context.Context, n *types.Node) (*sysTypes.User, error) {
|
||||||
// Generate handle for user that se this node
|
// Generate handle for user that se this node
|
||||||
|
|||||||
@ -41,6 +41,8 @@ var (
|
|||||||
DefaultActionlog actionlog.Recorder
|
DefaultActionlog actionlog.Recorder
|
||||||
|
|
||||||
DefaultNode *node
|
DefaultNode *node
|
||||||
|
DefaultExposedModule ExposedModuleService
|
||||||
|
DefaultSharedModule SharedModuleService
|
||||||
|
|
||||||
// wrapper around time.Now() that will aid service testing
|
// wrapper around time.Now() that will aid service testing
|
||||||
now = func() *time.Time {
|
now = func() *time.Time {
|
||||||
@ -117,6 +119,8 @@ func Initialize(ctx context.Context, log *zap.Logger, s store.Storer, c Config)
|
|||||||
hcd.Add(objstore.Healthcheck(DefaultObjectStore), "Store/Federation")
|
hcd.Add(objstore.Healthcheck(DefaultObjectStore), "Store/Federation")
|
||||||
|
|
||||||
DefaultNode = Node(DefaultStore, service.DefaultUser, DefaultActionlog, auth.DefaultJwtHandler)
|
DefaultNode = Node(DefaultStore, service.DefaultUser, DefaultActionlog, auth.DefaultJwtHandler)
|
||||||
|
DefaultExposedModule = ExposedModule()
|
||||||
|
DefaultSharedModule = SharedModule()
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,9 +20,9 @@ type (
|
|||||||
}
|
}
|
||||||
|
|
||||||
ExposedModuleFilter struct {
|
ExposedModuleFilter struct {
|
||||||
NodeID uint64 `json:"node"`
|
NodeID uint64 `json:"nodeID,string"`
|
||||||
ComposeModuleID uint64 `json:"composeModuleID"`
|
ComposeModuleID uint64 `json:"composeModuleID,string"`
|
||||||
ComposeNamespaceID uint64 `json:"composeNamespaceID"`
|
ComposeNamespaceID uint64 `json:"composeNamespaceID,string"`
|
||||||
Query string `json:"query"`
|
Query string `json:"query"`
|
||||||
|
|
||||||
Check func(*ExposedModule) (bool, error) `json:"-"`
|
Check func(*ExposedModule) (bool, error) `json:"-"`
|
||||||
|
|||||||
@ -18,6 +18,7 @@ type (
|
|||||||
SearchFederationNodes(ctx context.Context, f types.NodeFilter) (types.NodeSet, types.NodeFilter, error)
|
SearchFederationNodes(ctx context.Context, f types.NodeFilter) (types.NodeSet, types.NodeFilter, error)
|
||||||
LookupFederationNodeByID(ctx context.Context, id uint64) (*types.Node, error)
|
LookupFederationNodeByID(ctx context.Context, id uint64) (*types.Node, error)
|
||||||
LookupFederationNodeByBaseURLSharedNodeID(ctx context.Context, base_url string, shared_node_id uint64) (*types.Node, error)
|
LookupFederationNodeByBaseURLSharedNodeID(ctx context.Context, base_url string, shared_node_id uint64) (*types.Node, error)
|
||||||
|
LookupFederationNodeBySharedNodeID(ctx context.Context, shared_node_id uint64) (*types.Node, error)
|
||||||
|
|
||||||
CreateFederationNode(ctx context.Context, rr ...*types.Node) error
|
CreateFederationNode(ctx context.Context, rr ...*types.Node) error
|
||||||
|
|
||||||
@ -52,6 +53,11 @@ func LookupFederationNodeByBaseURLSharedNodeID(ctx context.Context, s Federation
|
|||||||
return s.LookupFederationNodeByBaseURLSharedNodeID(ctx, base_url, shared_node_id)
|
return s.LookupFederationNodeByBaseURLSharedNodeID(ctx, base_url, shared_node_id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LookupFederationNodeBySharedNodeID searches for node by shared-node-id
|
||||||
|
func LookupFederationNodeBySharedNodeID(ctx context.Context, s FederationNodes, shared_node_id uint64) (*types.Node, error) {
|
||||||
|
return s.LookupFederationNodeBySharedNodeID(ctx, shared_node_id)
|
||||||
|
}
|
||||||
|
|
||||||
// CreateFederationNode creates one or more FederationNodes in store
|
// CreateFederationNode creates one or more FederationNodes in store
|
||||||
func CreateFederationNode(ctx context.Context, s FederationNodes, rr ...*types.Node) error {
|
func CreateFederationNode(ctx context.Context, s FederationNodes, rr ...*types.Node) error {
|
||||||
return s.CreateFederationNode(ctx, rr...)
|
return s.CreateFederationNode(ctx, rr...)
|
||||||
|
|||||||
@ -31,6 +31,10 @@ lookups:
|
|||||||
description: |-
|
description: |-
|
||||||
searches for node by shared-node-id and base-url
|
searches for node by shared-node-id and base-url
|
||||||
|
|
||||||
|
- fields: [SharedNodeID]
|
||||||
|
description: |-
|
||||||
|
searches for node by shared-node-id
|
||||||
|
|
||||||
search:
|
search:
|
||||||
enablePaging: false
|
enablePaging: false
|
||||||
enableSorting: false
|
enableSorting: false
|
||||||
|
|||||||
@ -111,6 +111,13 @@ func (s Store) LookupFederationNodeByBaseURLSharedNodeID(ctx context.Context, ba
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LookupFederationNodeBySharedNodeID searches for node by shared-node-id
|
||||||
|
func (s Store) LookupFederationNodeBySharedNodeID(ctx context.Context, shared_node_id uint64) (*types.Node, error) {
|
||||||
|
return s.execLookupFederationNode(ctx, squirrel.Eq{
|
||||||
|
s.preprocessColumn("fdn.shared_node_id", ""): store.PreprocessValue(shared_node_id, ""),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// CreateFederationNode creates one or more rows in federation_nodes table
|
// CreateFederationNode creates one or more rows in federation_nodes table
|
||||||
func (s Store) CreateFederationNode(ctx context.Context, rr ...*types.Node) (err error) {
|
func (s Store) CreateFederationNode(ctx context.Context, rr ...*types.Node) (err error) {
|
||||||
for _, res := range rr {
|
for _, res := range rr {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user