3
0

Added name, handle to exposed module

This commit is contained in:
Peter Grlica
2020-11-09 17:13:01 +01:00
parent b9dd563a05
commit 2690427f5d
7 changed files with 130 additions and 2 deletions

View File

@@ -168,6 +168,14 @@ endpoints:
name: composeNamespaceID
required: true
title: Compose namespace id
- type: string
name: name
required: true
title: Module name
- type: string
name: handle
required: true
title: Module handle
- type: types.ModuleFieldSet
name: fields
required: false
@@ -195,6 +203,14 @@ endpoints:
name: composeNamespaceID
required: true
title: Compose namespace id
- type: string
name: name
required: true
title: Module name
- type: string
name: handle
required: true
title: Module handle
- type: types.ModuleFieldSet
name: fields
required: false

View File

@@ -7,6 +7,7 @@ import (
"github.com/cortezaproject/corteza-server/federation/rest/request"
"github.com/cortezaproject/corteza-server/federation/service"
"github.com/cortezaproject/corteza-server/federation/types"
"github.com/davecgh/go-spew/spew"
)
type (
@@ -23,6 +24,8 @@ func (ctrl ManageStructure) CreateExposed(ctx context.Context, r *request.Manage
NodeID: r.NodeID,
ComposeModuleID: r.ComposeModuleID,
ComposeNamespaceID: r.ComposeNamespaceID,
Name: r.Name,
Handle: r.Handle,
Fields: r.Fields,
}
)
@@ -40,6 +43,8 @@ func (ctrl ManageStructure) UpdateExposed(ctx context.Context, r *request.Manage
NodeID: r.NodeID,
ComposeModuleID: r.ComposeModuleID,
ComposeNamespaceID: r.ComposeNamespaceID,
Name: r.Name,
Handle: r.Handle,
Fields: r.Fields,
}
)
@@ -62,7 +67,23 @@ func (ctrl ManageStructure) CreateMappings(ctx context.Context, r *request.Manag
FieldMapping: r.Fields,
}
return (service.DefaultModuleMapping).Create(ctx, mm)
// check if it exists, do an upsert
existing, _, err := service.DefaultModuleMapping.Find(ctx, types.ModuleMappingFilter{
ComposeModuleID: r.ComposeModuleID,
ComposeNamespaceID: r.ComposeNamespaceID,
FederationModuleID: r.ModuleID,
})
if err != nil {
return nil, err
}
if len(existing) > 0 {
// do an update
return service.DefaultModuleMapping.Update(ctx, mm)
}
return service.DefaultModuleMapping.Create(ctx, mm)
}
func (ctrl ManageStructure) ReadMappings(ctx context.Context, r *request.ManageStructureReadMappings) (interface{}, error) {
@@ -90,5 +111,7 @@ func (ctrl ManageStructure) ListAll(ctx context.Context, r *request.ManageStruct
return nil, errors.New("TODO - http 400 bad request - either use ?exposed or ?shared")
}
spew.Dump("ERR", err)
return list, err
}

View File

@@ -58,6 +58,16 @@ type (
// Compose namespace id
ComposeNamespaceID uint64 `json:",string"`
// Name POST parameter
//
// Module name
Name string
// Handle POST parameter
//
// Module handle
Handle string
// Fields POST parameter
//
// Exposed module fields
@@ -85,6 +95,16 @@ type (
// Compose namespace id
ComposeNamespaceID uint64 `json:",string"`
// Name POST parameter
//
// Module name
Name string
// Handle POST parameter
//
// Module handle
Handle string
// Fields POST parameter
//
// Exposed module fields
@@ -240,6 +260,8 @@ func (r ManageStructureCreateExposed) Auditable() map[string]interface{} {
"nodeID": r.NodeID,
"composeModuleID": r.ComposeModuleID,
"composeNamespaceID": r.ComposeNamespaceID,
"name": r.Name,
"handle": r.Handle,
"fields": r.Fields,
}
}
@@ -259,6 +281,16 @@ func (r ManageStructureCreateExposed) GetComposeNamespaceID() uint64 {
return r.ComposeNamespaceID
}
// Auditable returns all auditable/loggable parameters
func (r ManageStructureCreateExposed) GetName() string {
return r.Name
}
// Auditable returns all auditable/loggable parameters
func (r ManageStructureCreateExposed) GetHandle() string {
return r.Handle
}
// Auditable returns all auditable/loggable parameters
func (r ManageStructureCreateExposed) GetFields() types.ModuleFieldSet {
return r.Fields
@@ -298,6 +330,20 @@ func (r *ManageStructureCreateExposed) Fill(req *http.Request) (err error) {
}
}
if val, ok := req.Form["name"]; ok && len(val) > 0 {
r.Name, err = val[0], nil
if err != nil {
return err
}
}
if val, ok := req.Form["handle"]; ok && len(val) > 0 {
r.Handle, err = val[0], nil
if err != nil {
return err
}
}
//if val, ok := req.Form["fields[]"]; ok && len(val) > 0 {
// r.Fields, err = types.ModuleFieldSet(val), nil
// if err != nil {
@@ -333,6 +379,8 @@ func (r ManageStructureUpdateExposed) Auditable() map[string]interface{} {
"moduleID": r.ModuleID,
"composeModuleID": r.ComposeModuleID,
"composeNamespaceID": r.ComposeNamespaceID,
"name": r.Name,
"handle": r.Handle,
"fields": r.Fields,
}
}
@@ -357,6 +405,16 @@ func (r ManageStructureUpdateExposed) GetComposeNamespaceID() uint64 {
return r.ComposeNamespaceID
}
// Auditable returns all auditable/loggable parameters
func (r ManageStructureUpdateExposed) GetName() string {
return r.Name
}
// Auditable returns all auditable/loggable parameters
func (r ManageStructureUpdateExposed) GetHandle() string {
return r.Handle
}
// Auditable returns all auditable/loggable parameters
func (r ManageStructureUpdateExposed) GetFields() types.ModuleFieldSet {
return r.Fields
@@ -396,6 +454,20 @@ func (r *ManageStructureUpdateExposed) Fill(req *http.Request) (err error) {
}
}
if val, ok := req.Form["name"]; ok && len(val) > 0 {
r.Name, err = val[0], nil
if err != nil {
return err
}
}
if val, ok := req.Form["handle"]; ok && len(val) > 0 {
r.Handle, err = val[0], nil
if err != nil {
return err
}
}
//if val, ok := req.Form["fields[]"]; ok && len(val) > 0 {
// r.Fields, err = types.ModuleFieldSet(val), nil
// if err != nil {

View File

@@ -12,6 +12,8 @@ type (
NodeID uint64 `json:"nodeID,string"`
ComposeModuleID uint64 `json:"composeModuleID,string"`
ComposeNamespaceID uint64 `json:"composeNamespaceID,string"`
Handle string `json:"handle"`
Name string `json:"name"`
Fields ModuleFieldSet `json:"fields"`
CreatedAt time.Time `json:"createdAt,omitempty"`
@@ -25,6 +27,8 @@ type (
ComposeNamespaceID uint64 `json:"composeNamespaceID,string"`
LastSync uint64 `json:"lastSync"`
Handle string `json:"handle"`
Name string `json:"name"`
Query string `json:"query"`
Check func(*ExposedModule) (bool, error) `json:"-"`

View File

@@ -6,6 +6,8 @@ types:
fields:
- { field: ID, isPrimaryKey: true, sortable: true }
- { field: Handle }
- { field: Name }
- { field: NodeID }
- { field: ComposeModuleID }
- { field: ComposeNamespaceID }

View File

@@ -43,9 +43,12 @@ func (s Store) SearchFederationExposedModules(ctx context.Context, f types.Expos
// This tells us to flip the descending flag on all used sort keys
reversedCursor := f.PageCursor != nil && f.PageCursor.Reverse
// Sorting and paging are both enabled in definition yaml file
// {search: {enableSorting:true, enablePaging:true}}
curSort := f.Sort.Clone()
// If paging with reverse cursor, change the sorting
// direction for all columns we're sorting by
curSort := f.Sort.Clone()
if reversedCursor {
curSort.Reverse()
}
@@ -375,6 +378,8 @@ func (s Store) internalFederationExposedModuleRowScanner(row rowScanner) (res *t
} else {
err = row.Scan(
&res.ID,
&res.Handle,
&res.Name,
&res.NodeID,
&res.ComposeModuleID,
&res.ComposeNamespaceID,
@@ -422,6 +427,8 @@ func (Store) federationExposedModuleColumns(aa ...string) []string {
return []string{
alias + "id",
alias + "handle",
alias + "name",
alias + "rel_node",
alias + "rel_compose_module",
alias + "rel_compose_namespace",
@@ -453,6 +460,8 @@ func (Store) sortableFederationExposedModuleColumns() []string {
func (s Store) internalFederationExposedModuleEncoder(res *types.ExposedModule) store.Payload {
return store.Payload{
"id": res.ID,
"handle": res.Handle,
"name": res.Name,
"rel_node": res.NodeID,
"rel_compose_module": res.ComposeModuleID,
"rel_compose_namespace": res.ComposeNamespaceID,

View File

@@ -509,6 +509,8 @@ func (Schema) FederationModuleShared() *Table {
func (Schema) FederationModuleExposed() *Table {
return TableDef("federation_module_exposed",
ID,
ColumnDef("handle", ColumnTypeVarchar, ColumnTypeLength(handleLength)),
ColumnDef("name", ColumnTypeText),
ColumnDef("rel_node", ColumnTypeIdentifier),
ColumnDef("rel_compose_module", ColumnTypeIdentifier),
ColumnDef("rel_compose_namespace", ColumnTypeIdentifier),