diff --git a/federation/service/exposed_module.go b/federation/service/exposed_module.go index bf2f83fe8..eb351f7e5 100644 --- a/federation/service/exposed_module.go +++ b/federation/service/exposed_module.go @@ -12,6 +12,7 @@ import ( type ( exposedModule struct { + node node module composeService.ModuleService namespace composeService.NamespaceService store store.Storer @@ -23,7 +24,7 @@ type ( Update(ctx context.Context, updated *types.ExposedModule) (*types.ExposedModule, error) Find(ctx context.Context, filter types.ExposedModuleFilter) (types.ExposedModuleSet, types.ExposedModuleFilter, error) FindByID(ctx context.Context, nodeID uint64, moduleID uint64) (*types.ExposedModule, error) - FindByAny(ctx context.Context, nodeID uint64, identifier interface{}) (*types.ExposedModule, error) + // FindByAny(ctx context.Context, nodeID uint64, identifier interface{}) (*types.ExposedModule, error) DeleteByID(ctx context.Context, nodeID, moduleID uint64) (*types.ExposedModule, error) } @@ -32,6 +33,7 @@ type ( func ExposedModule() ExposedModuleService { return &exposedModule{ + node: *DefaultNode, module: composeService.DefaultModule, namespace: composeService.DefaultNamespace, store: DefaultStore, @@ -83,7 +85,9 @@ func (svc exposedModule) Update(ctx context.Context, updated *types.ExposedModul // return ExposedModuleErrNotAllowedToCreate() // } - aProps.setNode(nil) + if _, err := svc.node.FindByID(ctx, updated.NodeID); err != nil { + return ExposedModuleErrNodeNotFound() + } if _, err := svc.namespace.With(ctx).FindByID(updated.ComposeNamespaceID); err != nil { return ExposedModuleErrComposeNamespaceNotFound() @@ -201,8 +205,9 @@ func (svc exposedModule) Create(ctx context.Context, new *types.ExposedModule) ( // return ExposedModuleErrNotAllowedToCreate() // } - // TODO - fetch Node - aProps.setNode(nil) + if _, err := svc.node.FindByID(ctx, new.NodeID); err != nil { + return ExposedModuleErrNodeNotFound() + } if _, err := svc.namespace.With(ctx).FindByID(new.ComposeNamespaceID); err != nil { return ExposedModuleErrComposeNamespaceNotFound() @@ -258,8 +263,3 @@ func (svc exposedModule) uniqueCheck(ctx context.Context, m *types.ExposedModule return nil } - -// trim1st removes 1st param and returns only error -func trim1st(_ interface{}, err error) error { - return err -} diff --git a/federation/service/exposed_module_actions.gen.go b/federation/service/exposed_module_actions.gen.go index aca9e2d85..e73e44b6a 100644 --- a/federation/service/exposed_module_actions.gen.go +++ b/federation/service/exposed_module_actions.gen.go @@ -604,6 +604,36 @@ func ExposedModuleErrNotUnique(mm ...*exposedModuleActionProps) *errors.Error { return e } +// ExposedModuleErrNodeNotFound returns "federation:exposed_module.nodeNotFound" as *errors.Error +// +// +// This function is auto-generated. +// +func ExposedModuleErrNodeNotFound(mm ...*exposedModuleActionProps) *errors.Error { + var p = &exposedModuleActionProps{} + if len(mm) > 0 { + p = mm[0] + } + + var e = errors.New( + errors.KindInternal, + + p.Format("node does not exist", nil), + + errors.Meta("type", "nodeNotFound"), + errors.Meta("resource", "federation:exposed_module"), + + errors.Meta(exposedModulePropsMetaKey{}, p), + + errors.StackSkip(1), + ) + + if len(mm) > 0 { + } + + return e +} + // ExposedModuleErrComposeModuleNotFound returns "federation:exposed_module.composeModuleNotFound" as *errors.Error // // diff --git a/federation/service/exposed_module_actions.yaml b/federation/service/exposed_module_actions.yaml index 78946e949..8dd69e4b7 100644 --- a/federation/service/exposed_module_actions.yaml +++ b/federation/service/exposed_module_actions.yaml @@ -71,6 +71,10 @@ errors: log: "used duplicate node TODO - {module.NodeID} for this compose module TODO - module.rel_compose_module" severity: warning + - error: nodeNotFound + message: "node does not exist" + severity: warning + - error: composeModuleNotFound message: "compose module not found" severity: "warning" diff --git a/federation/service/shared_module.go b/federation/service/shared_module.go index 49f40f4a3..c47cebde6 100644 --- a/federation/service/shared_module.go +++ b/federation/service/shared_module.go @@ -2,7 +2,6 @@ package service import ( "context" - "strconv" composeService "github.com/cortezaproject/corteza-server/compose/service" "github.com/cortezaproject/corteza-server/federation/types" @@ -12,21 +11,18 @@ import ( type ( sharedModule struct { + node node compose composeService.ModuleService store store.Storer actionlog actionlog.Recorder } SharedModuleService interface { - Find(ctx context.Context, filter types.SharedModuleFilter) (types.SharedModuleSet, types.SharedModuleFilter, error) - FindByID(ctx context.Context, nodeID uint64, moduleID uint64) (*types.SharedModule, error) - FindByAny(ctx context.Context, nodeID uint64, identifier interface{}) (*types.SharedModule, error) Create(ctx context.Context, new *types.SharedModule) (*types.SharedModule, error) Update(ctx context.Context, updated *types.SharedModule) (*types.SharedModule, error) - // DeleteByID(ctx context.Context, nodeID, moduleID uint64) error + Find(ctx context.Context, filter types.SharedModuleFilter) (types.SharedModuleSet, types.SharedModuleFilter, error) + FindByID(ctx context.Context, nodeID uint64, moduleID uint64) (*types.SharedModule, error) } - - // moduleUpdateHandler func(ctx context.Context, ns *types.Node, c *types.SharedModule) (bool, bool, error) ) func SharedModule() SharedModuleService { @@ -37,27 +33,6 @@ func SharedModule() SharedModuleService { } } -// FindByAny tries to find module in a particular namespace by id, handle or name -func (svc sharedModule) FindByAny(ctx context.Context, nodeID uint64, identifier interface{}) (m *types.SharedModule, err error) { - if ID, ok := identifier.(uint64); ok { - m, err = svc.FindByID(ctx, nodeID, ID) - } else if strIdentifier, ok := identifier.(string); ok { - if ID, _ := strconv.ParseUint(strIdentifier, 10, 64); ID > 0 { - m, err = svc.FindByID(ctx, nodeID, ID) - } - } else { - // force invalid ID error - // we do that to wrap error with lookup action context - _, err = svc.FindByID(ctx, nodeID, 0) - } - - if err != nil { - return nil, err - } - - return m, nil -} - func (svc sharedModule) FindByID(ctx context.Context, nodeID uint64, moduleID uint64) (module *types.SharedModule, err error) { err = func() error { if module, err = store.LookupFederationSharedModuleByID(ctx, svc.store, moduleID); err != nil { @@ -81,8 +56,9 @@ func (svc sharedModule) Create(ctx context.Context, new *types.SharedModule) (*t // return ExposedModuleErrNotAllowedToCreate() // } - // TODO - fetch Node - aProps.setNode(nil) + if _, err := svc.node.FindByID(ctx, new.NodeID); err != nil { + return SharedModuleErrNodeNotFound() + } // Check for node - compose.Module combo if err = svc.uniqueCheck(ctx, new); err != nil { @@ -120,6 +96,10 @@ func (svc sharedModule) Update(ctx context.Context, updated *types.SharedModule) aProps.setModule(updated) + if _, err := svc.node.FindByID(ctx, updated.NodeID); err != nil { + return SharedModuleErrNodeNotFound() + } + if err = store.UpdateFederationSharedModule(ctx, s, updated); err != nil { return err } @@ -191,10 +171,6 @@ func (svc sharedModule) Find(ctx context.Context, filter types.SharedModuleFilte ) err = func() error { - // handle node for actionlog here? - if f.NodeID > 0 { - } - if set, f, err = store.SearchFederationSharedModules(ctx, svc.store, filter); err != nil { return err } @@ -204,8 +180,3 @@ func (svc sharedModule) Find(ctx context.Context, filter types.SharedModuleFilte return set, f, svc.recordAction(ctx, aProps, SharedModuleActionSearch, err) } - -// // trim1st removes 1st param and returns only error -// func trim1st(_ interface{}, err error) error { -// return err -// } diff --git a/federation/service/shared_module_actions.gen.go b/federation/service/shared_module_actions.gen.go index 4ffffc049..71357c621 100644 --- a/federation/service/shared_module_actions.gen.go +++ b/federation/service/shared_module_actions.gen.go @@ -514,6 +514,36 @@ func SharedModuleErrNotUnique(mm ...*sharedModuleActionProps) *errors.Error { return e } +// SharedModuleErrNodeNotFound returns "federation:shared_module.nodeNotFound" as *errors.Error +// +// +// This function is auto-generated. +// +func SharedModuleErrNodeNotFound(mm ...*sharedModuleActionProps) *errors.Error { + var p = &sharedModuleActionProps{} + if len(mm) > 0 { + p = mm[0] + } + + var e = errors.New( + errors.KindInternal, + + p.Format("node does not exist", nil), + + errors.Meta("type", "nodeNotFound"), + errors.Meta("resource", "federation:shared_module"), + + errors.Meta(sharedModulePropsMetaKey{}, p), + + errors.StackSkip(1), + ) + + if len(mm) > 0 { + } + + return e +} + // SharedModuleErrNotAllowedToRead returns "federation:shared_module.notAllowedToRead" as *errors.Error // // diff --git a/federation/service/shared_module_actions.yaml b/federation/service/shared_module_actions.yaml index c07729ccf..d9f55e1e5 100644 --- a/federation/service/shared_module_actions.yaml +++ b/federation/service/shared_module_actions.yaml @@ -65,6 +65,10 @@ errors: log: "used duplicate node TODO" severity: warning + - error: nodeNotFound + message: "node does not exist" + severity: warning + - error: notAllowedToRead message: "not allowed to read this module" log: "could not read {module}; insufficient permissions"