Add reference to the namespace
This commit is contained in:
parent
ae6c227cef
commit
80cc9eb9f5
@ -19,13 +19,6 @@ $ docker-compose -f federation/etc/docker-compose.yml up -d node_origin
|
|||||||
$ docker-compose -f federation/etc/docker-compose.yml up -d node_destination
|
$ docker-compose -f federation/etc/docker-compose.yml up -d node_destination
|
||||||
----
|
----
|
||||||
|
|
||||||
Add testing migrations
|
|
||||||
[source,bash]
|
|
||||||
----
|
|
||||||
$ docker-compose -f federation/etc/docker-compose.yml run db_origin mysql -u corteza -prootcorteza corteza -h localhost --port 3306 < federation/migration_federation_origin.sql
|
|
||||||
$ docker-compose -f federation/etc/docker-compose.yml run db_destination mysql -u corteza -prootcorteza corteza -h localhost --port 3307 < federation/migration_federation_destination.sql
|
|
||||||
----
|
|
||||||
|
|
||||||
== Setup db (postgres)
|
== Setup db (postgres)
|
||||||
|
|
||||||
Add db dsn to .env
|
Add db dsn to .env
|
||||||
|
|||||||
@ -164,6 +164,10 @@ endpoints:
|
|||||||
name: composeModuleID
|
name: composeModuleID
|
||||||
required: true
|
required: true
|
||||||
title: Compose module id
|
title: Compose module id
|
||||||
|
- type: uint64
|
||||||
|
name: composeNamespaceID
|
||||||
|
required: true
|
||||||
|
title: Compose namespace id
|
||||||
- type: types.ModuleFieldSet
|
- type: types.ModuleFieldSet
|
||||||
name: fields
|
name: fields
|
||||||
required: false
|
required: false
|
||||||
@ -215,6 +219,10 @@ endpoints:
|
|||||||
name: composeModuleID
|
name: composeModuleID
|
||||||
required: true
|
required: true
|
||||||
title: Compose module id
|
title: Compose module id
|
||||||
|
- type: uint64
|
||||||
|
name: composeNamespaceID
|
||||||
|
required: true
|
||||||
|
title: Compose namespace id
|
||||||
- type: types.ModuleFieldMappingSet
|
- type: types.ModuleFieldMappingSet
|
||||||
name: fields
|
name: fields
|
||||||
required: false
|
required: false
|
||||||
|
|||||||
@ -30,6 +30,7 @@ func (ctrl ManageStructure) CreateExposed(ctx context.Context, r *request.Manage
|
|||||||
mod = &types.ExposedModule{
|
mod = &types.ExposedModule{
|
||||||
NodeID: r.NodeID,
|
NodeID: r.NodeID,
|
||||||
ComposeModuleID: r.ComposeModuleID,
|
ComposeModuleID: r.ComposeModuleID,
|
||||||
|
ComposeNamespaceID: r.ComposeNamespaceID,
|
||||||
Fields: r.Fields,
|
Fields: r.Fields,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -38,6 +39,10 @@ func (ctrl ManageStructure) CreateExposed(ctx context.Context, r *request.Manage
|
|||||||
return nil, errors.New("TODO - http 400 bad request - use compose module id in request")
|
return nil, errors.New("TODO - http 400 bad request - use compose module id in request")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if r.ComposeNamespaceID == 0 {
|
||||||
|
return nil, errors.New("TODO - http 400 bad request - use compose namespace id in request")
|
||||||
|
}
|
||||||
|
|
||||||
return (service.ExposedModule()).Create(context.Background(), mod)
|
return (service.ExposedModule()).Create(context.Background(), mod)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,6 +54,7 @@ func (ctrl ManageStructure) CreateMappings(ctx context.Context, r *request.Manag
|
|||||||
mm := &types.ModuleMapping{
|
mm := &types.ModuleMapping{
|
||||||
FederationModuleID: r.ModuleID,
|
FederationModuleID: r.ModuleID,
|
||||||
ComposeModuleID: r.ComposeModuleID,
|
ComposeModuleID: r.ComposeModuleID,
|
||||||
|
ComposeNamespaceID: r.ComposeNamespaceID,
|
||||||
FieldMapping: r.Fields,
|
FieldMapping: r.Fields,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -53,6 +53,11 @@ type (
|
|||||||
// Compose module id
|
// Compose module id
|
||||||
ComposeModuleID uint64 `json:",string"`
|
ComposeModuleID uint64 `json:",string"`
|
||||||
|
|
||||||
|
// ComposeNamespaceID POST parameter
|
||||||
|
//
|
||||||
|
// Compose namespace id
|
||||||
|
ComposeNamespaceID uint64 `json:",string"`
|
||||||
|
|
||||||
// Fields POST parameter
|
// Fields POST parameter
|
||||||
//
|
//
|
||||||
// Exposed module fields
|
// Exposed module fields
|
||||||
@ -99,6 +104,11 @@ type (
|
|||||||
// Compose module id
|
// Compose module id
|
||||||
ComposeModuleID uint64 `json:",string"`
|
ComposeModuleID uint64 `json:",string"`
|
||||||
|
|
||||||
|
// ComposeNamespaceID POST parameter
|
||||||
|
//
|
||||||
|
// Compose namespace id
|
||||||
|
ComposeNamespaceID uint64 `json:",string"`
|
||||||
|
|
||||||
// Fields POST parameter
|
// Fields POST parameter
|
||||||
//
|
//
|
||||||
// Exposed module fields
|
// Exposed module fields
|
||||||
@ -202,6 +212,7 @@ func (r ManageStructureCreateExposed) Auditable() map[string]interface{} {
|
|||||||
return map[string]interface{}{
|
return map[string]interface{}{
|
||||||
"nodeID": r.NodeID,
|
"nodeID": r.NodeID,
|
||||||
"composeModuleID": r.ComposeModuleID,
|
"composeModuleID": r.ComposeModuleID,
|
||||||
|
"composeNamespaceID": r.ComposeNamespaceID,
|
||||||
"fields": r.Fields,
|
"fields": r.Fields,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -216,6 +227,11 @@ func (r ManageStructureCreateExposed) GetComposeModuleID() uint64 {
|
|||||||
return r.ComposeModuleID
|
return r.ComposeModuleID
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Auditable returns all auditable/loggable parameters
|
||||||
|
func (r ManageStructureCreateExposed) GetComposeNamespaceID() uint64 {
|
||||||
|
return r.ComposeNamespaceID
|
||||||
|
}
|
||||||
|
|
||||||
// Auditable returns all auditable/loggable parameters
|
// Auditable returns all auditable/loggable parameters
|
||||||
func (r ManageStructureCreateExposed) GetFields() types.ModuleFieldSet {
|
func (r ManageStructureCreateExposed) GetFields() types.ModuleFieldSet {
|
||||||
return r.Fields
|
return r.Fields
|
||||||
@ -248,6 +264,13 @@ func (r *ManageStructureCreateExposed) Fill(req *http.Request) (err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if val, ok := req.Form["composeNamespaceID"]; ok && len(val) > 0 {
|
||||||
|
r.ComposeNamespaceID, err = payload.ParseUint64(val[0]), nil
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//if val, ok := req.Form["fields[]"]; ok && len(val) > 0 {
|
//if val, ok := req.Form["fields[]"]; ok && len(val) > 0 {
|
||||||
// r.Fields, err = types.ModuleFieldSet(val), nil
|
// r.Fields, err = types.ModuleFieldSet(val), nil
|
||||||
// if err != nil {
|
// if err != nil {
|
||||||
@ -396,6 +419,7 @@ func (r ManageStructureCreateMappings) Auditable() map[string]interface{} {
|
|||||||
"nodeID": r.NodeID,
|
"nodeID": r.NodeID,
|
||||||
"moduleID": r.ModuleID,
|
"moduleID": r.ModuleID,
|
||||||
"composeModuleID": r.ComposeModuleID,
|
"composeModuleID": r.ComposeModuleID,
|
||||||
|
"composeNamespaceID": r.ComposeNamespaceID,
|
||||||
"fields": r.Fields,
|
"fields": r.Fields,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -415,6 +439,11 @@ func (r ManageStructureCreateMappings) GetComposeModuleID() uint64 {
|
|||||||
return r.ComposeModuleID
|
return r.ComposeModuleID
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Auditable returns all auditable/loggable parameters
|
||||||
|
func (r ManageStructureCreateMappings) GetComposeNamespaceID() uint64 {
|
||||||
|
return r.ComposeNamespaceID
|
||||||
|
}
|
||||||
|
|
||||||
// Auditable returns all auditable/loggable parameters
|
// Auditable returns all auditable/loggable parameters
|
||||||
func (r ManageStructureCreateMappings) GetFields() types.ModuleFieldMappingSet {
|
func (r ManageStructureCreateMappings) GetFields() types.ModuleFieldMappingSet {
|
||||||
return r.Fields
|
return r.Fields
|
||||||
@ -447,6 +476,13 @@ func (r *ManageStructureCreateMappings) Fill(req *http.Request) (err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if val, ok := req.Form["composeNamespaceID"]; ok && len(val) > 0 {
|
||||||
|
r.ComposeNamespaceID, err = payload.ParseUint64(val[0]), nil
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//if val, ok := req.Form["fields[]"]; ok && len(val) > 0 {
|
//if val, ok := req.Form["fields[]"]; ok && len(val) > 0 {
|
||||||
// r.Fields, err = types.ModuleFieldMappingSet(val), nil
|
// r.Fields, err = types.ModuleFieldMappingSet(val), nil
|
||||||
// if err != nil {
|
// if err != nil {
|
||||||
|
|||||||
@ -175,10 +175,13 @@ func (svc exposedModule) uniqueCheck(ctx context.Context, m *types.ExposedModule
|
|||||||
f := types.ExposedModuleFilter{
|
f := types.ExposedModuleFilter{
|
||||||
NodeID: m.NodeID,
|
NodeID: m.NodeID,
|
||||||
ComposeModuleID: m.ComposeModuleID,
|
ComposeModuleID: m.ComposeModuleID,
|
||||||
|
ComposeNamespaceID: m.ComposeNamespaceID,
|
||||||
}
|
}
|
||||||
|
|
||||||
if set, _, err := store.SearchFederationExposedModules(ctx, svc.store, f); len(set) > 0 && err != nil {
|
if set, _, err := store.SearchFederationExposedModules(ctx, svc.store, f); len(set) > 0 && err == nil {
|
||||||
return ExposedModuleErrNotUnique()
|
return ExposedModuleErrNotUnique()
|
||||||
|
} else if err != nil {
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package service
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
|
composeService "github.com/cortezaproject/corteza-server/compose/service"
|
||||||
"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/store"
|
"github.com/cortezaproject/corteza-server/store"
|
||||||
@ -12,6 +13,7 @@ type (
|
|||||||
moduleMapping struct {
|
moduleMapping struct {
|
||||||
ctx context.Context
|
ctx context.Context
|
||||||
store store.Storer
|
store store.Storer
|
||||||
|
compose composeService.ModuleService
|
||||||
actionlog actionlog.Recorder
|
actionlog actionlog.Recorder
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -30,6 +32,7 @@ func ModuleMapping() ModuleMappingService {
|
|||||||
return &moduleMapping{
|
return &moduleMapping{
|
||||||
ctx: context.Background(),
|
ctx: context.Background(),
|
||||||
store: DefaultStore,
|
store: DefaultStore,
|
||||||
|
compose: composeService.Module(),
|
||||||
actionlog: DefaultActionlog,
|
actionlog: DefaultActionlog,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -131,10 +134,13 @@ func (svc moduleMapping) uniqueCheck(ctx context.Context, m *types.ModuleMapping
|
|||||||
f := types.ModuleMappingFilter{
|
f := types.ModuleMappingFilter{
|
||||||
FederationModuleID: m.FederationModuleID,
|
FederationModuleID: m.FederationModuleID,
|
||||||
ComposeModuleID: m.ComposeModuleID,
|
ComposeModuleID: m.ComposeModuleID,
|
||||||
|
ComposeNamespaceID: m.ComposeNamespaceID,
|
||||||
}
|
}
|
||||||
|
|
||||||
if set, _, err := store.SearchFederationModuleMappings(ctx, svc.store, f); len(set) > 0 && err == nil {
|
if set, _, err := store.SearchFederationModuleMappings(ctx, svc.store, f); len(set) > 0 && err == nil {
|
||||||
return ModuleMappingErrModuleMappingExists()
|
return ModuleMappingErrModuleMappingExists()
|
||||||
|
} else if err != nil {
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return err
|
return err
|
||||||
|
|||||||
@ -22,6 +22,7 @@ type (
|
|||||||
Find(ctx context.Context, filter types.SharedModuleFilter) (types.SharedModuleSet, types.SharedModuleFilter, error)
|
Find(ctx context.Context, filter types.SharedModuleFilter) (types.SharedModuleSet, types.SharedModuleFilter, error)
|
||||||
FindByID(ctx context.Context, nodeID uint64, moduleID uint64) (*types.SharedModule, error)
|
FindByID(ctx context.Context, nodeID uint64, moduleID uint64) (*types.SharedModule, error)
|
||||||
FindByAny(ctx context.Context, nodeID uint64, identifier interface{}) (*types.SharedModule, error)
|
FindByAny(ctx context.Context, nodeID uint64, identifier interface{}) (*types.SharedModule, error)
|
||||||
|
Create(ctx context.Context, new *types.SharedModule) (*types.SharedModule, error)
|
||||||
// DeleteByID(ctx context.Context, nodeID, moduleID uint64) error
|
// DeleteByID(ctx context.Context, nodeID, moduleID uint64) error
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,6 +71,62 @@ func (svc sharedModule) FindByID(ctx context.Context, nodeID uint64, moduleID ui
|
|||||||
return module, err
|
return module, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (svc sharedModule) Create(ctx context.Context, new *types.SharedModule) (*types.SharedModule, error) {
|
||||||
|
var (
|
||||||
|
aProps = &sharedModuleActionProps{changed: new}
|
||||||
|
)
|
||||||
|
|
||||||
|
err := store.Tx(ctx, svc.store, func(ctx context.Context, s store.Storer) (err error) {
|
||||||
|
// TODO
|
||||||
|
// if !svc.ac.CanCreateFederationExposedModule(ctx, ns) {
|
||||||
|
// return ExposedModuleErrNotAllowedToCreate()
|
||||||
|
// }
|
||||||
|
|
||||||
|
// TODO - fetch Node
|
||||||
|
aProps.setNode(nil)
|
||||||
|
|
||||||
|
// Check for node - compose.Module combo
|
||||||
|
if err = svc.uniqueCheck(ctx, new); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
new.ID = nextID()
|
||||||
|
new.CreatedAt = *now()
|
||||||
|
new.UpdatedAt = nil
|
||||||
|
new.DeletedAt = nil
|
||||||
|
|
||||||
|
// check if Fields can be unmarshaled to the fields structure
|
||||||
|
if new.Fields != nil {
|
||||||
|
}
|
||||||
|
|
||||||
|
aProps.setModule(new)
|
||||||
|
|
||||||
|
if err = store.CreateFederationSharedModule(ctx, s, new); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
return new, svc.recordAction(ctx, aProps, SharedModuleActionCreate, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (svc sharedModule) uniqueCheck(ctx context.Context, m *types.SharedModule) (err error) {
|
||||||
|
f := types.SharedModuleFilter{
|
||||||
|
NodeID: m.NodeID,
|
||||||
|
Handle: m.Handle,
|
||||||
|
Name: m.Name,
|
||||||
|
}
|
||||||
|
|
||||||
|
if set, _, err := store.SearchFederationSharedModules(ctx, svc.store, f); len(set) > 0 && err == nil {
|
||||||
|
return SharedModuleErrNotUnique()
|
||||||
|
} else if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// func (svc sharedModule) DeleteByID(ctx context.Context, nodeID, moduleID uint64) error {
|
// func (svc sharedModule) DeleteByID(ctx context.Context, nodeID, moduleID uint64) error {
|
||||||
// return trim1st(svc.updater(ctx, nodeID, moduleID, ModuleActionDelete, svc.handleDelete))
|
// return trim1st(svc.updater(ctx, nodeID, moduleID, ModuleActionDelete, svc.handleDelete))
|
||||||
// }
|
// }
|
||||||
|
|||||||
@ -593,6 +593,36 @@ func SharedModuleErrStaleData(props ...*sharedModuleActionProps) *sharedModuleEr
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SharedModuleErrNotUnique returns "federation:shared_module.notUnique" audit event as actionlog.Warning
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// This function is auto-generated.
|
||||||
|
//
|
||||||
|
func SharedModuleErrNotUnique(props ...*sharedModuleActionProps) *sharedModuleError {
|
||||||
|
var e = &sharedModuleError{
|
||||||
|
timestamp: time.Now(),
|
||||||
|
resource: "federation:shared_module",
|
||||||
|
error: "notUnique",
|
||||||
|
action: "error",
|
||||||
|
message: "node not unique",
|
||||||
|
log: "used duplicate node TODO",
|
||||||
|
severity: actionlog.Warning,
|
||||||
|
props: func() *sharedModuleActionProps {
|
||||||
|
if len(props) > 0 {
|
||||||
|
return props[0]
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}(),
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(props) > 0 {
|
||||||
|
e.props = props[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
return e
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// SharedModuleErrNotAllowedToRead returns "federation:shared_module.notAllowedToRead" audit event as actionlog.Error
|
// SharedModuleErrNotAllowedToRead returns "federation:shared_module.notAllowedToRead" audit event as actionlog.Error
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
|
|||||||
@ -60,6 +60,11 @@ errors:
|
|||||||
message: "stale data"
|
message: "stale data"
|
||||||
severity: warning
|
severity: warning
|
||||||
|
|
||||||
|
- error: notUnique
|
||||||
|
message: "node not unique"
|
||||||
|
log: "used duplicate node TODO"
|
||||||
|
severity: warning
|
||||||
|
|
||||||
- error: notAllowedToRead
|
- error: notAllowedToRead
|
||||||
message: "not allowed to read this module"
|
message: "not allowed to read this module"
|
||||||
log: "could not read {module}; insufficient permissions"
|
log: "could not read {module}; insufficient permissions"
|
||||||
|
|||||||
@ -11,6 +11,7 @@ type (
|
|||||||
ID uint64 `json:"moduleID,string"`
|
ID uint64 `json:"moduleID,string"`
|
||||||
NodeID uint64 `json:"nodeID,string"`
|
NodeID uint64 `json:"nodeID,string"`
|
||||||
ComposeModuleID uint64 `json:"composeModuleID,string"`
|
ComposeModuleID uint64 `json:"composeModuleID,string"`
|
||||||
|
ComposeNamespaceID uint64 `json:"composeNamespaceID,string"`
|
||||||
Fields ModuleFieldSet `json:"fields"`
|
Fields ModuleFieldSet `json:"fields"`
|
||||||
|
|
||||||
CreatedAt time.Time `json:"createdAt,omitempty"`
|
CreatedAt time.Time `json:"createdAt,omitempty"`
|
||||||
@ -21,6 +22,7 @@ type (
|
|||||||
ExposedModuleFilter struct {
|
ExposedModuleFilter struct {
|
||||||
NodeID uint64 `json:"node"`
|
NodeID uint64 `json:"node"`
|
||||||
ComposeModuleID uint64 `json:"composeModuleID"`
|
ComposeModuleID uint64 `json:"composeModuleID"`
|
||||||
|
ComposeNamespaceID uint64 `json:"composeNamespaceID"`
|
||||||
Query string `json:"query"`
|
Query string `json:"query"`
|
||||||
|
|
||||||
Check func(*ExposedModule) (bool, error) `json:"-"`
|
Check func(*ExposedModule) (bool, error) `json:"-"`
|
||||||
|
|||||||
@ -8,11 +8,13 @@ type (
|
|||||||
ModuleMapping struct {
|
ModuleMapping struct {
|
||||||
FederationModuleID uint64 `json:"federationModuleID,string"`
|
FederationModuleID uint64 `json:"federationModuleID,string"`
|
||||||
ComposeModuleID uint64 `json:"composeModuleID,string"`
|
ComposeModuleID uint64 `json:"composeModuleID,string"`
|
||||||
|
ComposeNamespaceID uint64 `json:"composeNamespaceID,string"`
|
||||||
FieldMapping ModuleFieldMappingSet `json:"fields"`
|
FieldMapping ModuleFieldMappingSet `json:"fields"`
|
||||||
}
|
}
|
||||||
|
|
||||||
ModuleMappingFilter struct {
|
ModuleMappingFilter struct {
|
||||||
ComposeModuleID uint64 `json:"composeModuleID"`
|
ComposeModuleID uint64 `json:"composeModuleID"`
|
||||||
|
ComposeNamespaceID uint64 `json:"composeNamespaceID"`
|
||||||
FederationModuleID uint64 `json:"federationModuleID"`
|
FederationModuleID uint64 `json:"federationModuleID"`
|
||||||
Query string `json:"query"`
|
Query string `json:"query"`
|
||||||
|
|
||||||
|
|||||||
@ -8,6 +8,7 @@ fields:
|
|||||||
- { field: ID }
|
- { field: ID }
|
||||||
- { field: NodeID }
|
- { field: NodeID }
|
||||||
- { field: ComposeModuleID }
|
- { field: ComposeModuleID }
|
||||||
|
- { field: ComposeNamespaceID }
|
||||||
- { field: Fields, type: "json.Text" }
|
- { field: Fields, type: "json.Text" }
|
||||||
- { field: CreatedAt, sortable: true }
|
- { field: CreatedAt, sortable: true }
|
||||||
- { field: UpdatedAt, sortable: true }
|
- { field: UpdatedAt, sortable: true }
|
||||||
|
|||||||
@ -16,7 +16,7 @@ import (
|
|||||||
type (
|
type (
|
||||||
FederationModuleMappings interface {
|
FederationModuleMappings interface {
|
||||||
SearchFederationModuleMappings(ctx context.Context, f types.ModuleMappingFilter) (types.ModuleMappingSet, types.ModuleMappingFilter, error)
|
SearchFederationModuleMappings(ctx context.Context, f types.ModuleMappingFilter) (types.ModuleMappingSet, types.ModuleMappingFilter, error)
|
||||||
LookupFederationModuleMappingByFederationModuleIDComposeModuleID(ctx context.Context, federation_module_id uint64, compose_module_id uint64) (*types.ModuleMapping, error)
|
LookupFederationModuleMappingByFederationModuleIDComposeModuleIDComposeNamespaceID(ctx context.Context, federation_module_id uint64, compose_module_id uint64, compose_namespace_id uint64) (*types.ModuleMapping, error)
|
||||||
LookupFederationModuleMappingByFederationModuleID(ctx context.Context, federation_module_id uint64) (*types.ModuleMapping, error)
|
LookupFederationModuleMappingByFederationModuleID(ctx context.Context, federation_module_id uint64) (*types.ModuleMapping, error)
|
||||||
|
|
||||||
CreateFederationModuleMapping(ctx context.Context, rr ...*types.ModuleMapping) error
|
CreateFederationModuleMapping(ctx context.Context, rr ...*types.ModuleMapping) error
|
||||||
@ -26,7 +26,7 @@ type (
|
|||||||
UpsertFederationModuleMapping(ctx context.Context, rr ...*types.ModuleMapping) error
|
UpsertFederationModuleMapping(ctx context.Context, rr ...*types.ModuleMapping) error
|
||||||
|
|
||||||
DeleteFederationModuleMapping(ctx context.Context, rr ...*types.ModuleMapping) error
|
DeleteFederationModuleMapping(ctx context.Context, rr ...*types.ModuleMapping) error
|
||||||
DeleteFederationModuleMappingByFederationModuleIDComposeModuleID(ctx context.Context, federationModuleID uint64, composeModuleID uint64) error
|
DeleteFederationModuleMappingByFederationModuleIDComposeModuleIDComposeNamespaceID(ctx context.Context, federationModuleID uint64, composeModuleID uint64, composeNamespaceID uint64) error
|
||||||
|
|
||||||
TruncateFederationModuleMappings(ctx context.Context) error
|
TruncateFederationModuleMappings(ctx context.Context) error
|
||||||
}
|
}
|
||||||
@ -40,11 +40,11 @@ func SearchFederationModuleMappings(ctx context.Context, s FederationModuleMappi
|
|||||||
return s.SearchFederationModuleMappings(ctx, f)
|
return s.SearchFederationModuleMappings(ctx, f)
|
||||||
}
|
}
|
||||||
|
|
||||||
// LookupFederationModuleMappingByFederationModuleIDComposeModuleID searches for module mapping by federation module id and compose module id
|
// LookupFederationModuleMappingByFederationModuleIDComposeModuleIDComposeNamespaceID searches for module mapping by federation module id and compose module id
|
||||||
//
|
//
|
||||||
// It returns module mapping
|
// It returns module mapping
|
||||||
func LookupFederationModuleMappingByFederationModuleIDComposeModuleID(ctx context.Context, s FederationModuleMappings, federation_module_id uint64, compose_module_id uint64) (*types.ModuleMapping, error) {
|
func LookupFederationModuleMappingByFederationModuleIDComposeModuleIDComposeNamespaceID(ctx context.Context, s FederationModuleMappings, federation_module_id uint64, compose_module_id uint64, compose_namespace_id uint64) (*types.ModuleMapping, error) {
|
||||||
return s.LookupFederationModuleMappingByFederationModuleIDComposeModuleID(ctx, federation_module_id, compose_module_id)
|
return s.LookupFederationModuleMappingByFederationModuleIDComposeModuleIDComposeNamespaceID(ctx, federation_module_id, compose_module_id, compose_namespace_id)
|
||||||
}
|
}
|
||||||
|
|
||||||
// LookupFederationModuleMappingByFederationModuleID searches for module mapping by federation module id
|
// LookupFederationModuleMappingByFederationModuleID searches for module mapping by federation module id
|
||||||
@ -74,9 +74,9 @@ func DeleteFederationModuleMapping(ctx context.Context, s FederationModuleMappin
|
|||||||
return s.DeleteFederationModuleMapping(ctx, rr...)
|
return s.DeleteFederationModuleMapping(ctx, rr...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteFederationModuleMappingByFederationModuleIDComposeModuleID Deletes FederationModuleMapping from store
|
// DeleteFederationModuleMappingByFederationModuleIDComposeModuleIDComposeNamespaceID Deletes FederationModuleMapping from store
|
||||||
func DeleteFederationModuleMappingByFederationModuleIDComposeModuleID(ctx context.Context, s FederationModuleMappings, federationModuleID uint64, composeModuleID uint64) error {
|
func DeleteFederationModuleMappingByFederationModuleIDComposeModuleIDComposeNamespaceID(ctx context.Context, s FederationModuleMappings, federationModuleID uint64, composeModuleID uint64, composeNamespaceID uint64) error {
|
||||||
return s.DeleteFederationModuleMappingByFederationModuleIDComposeModuleID(ctx, federationModuleID, composeModuleID)
|
return s.DeleteFederationModuleMappingByFederationModuleIDComposeModuleIDComposeNamespaceID(ctx, federationModuleID, composeModuleID, composeNamespaceID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TruncateFederationModuleMappings Deletes all FederationModuleMappings from store
|
// TruncateFederationModuleMappings Deletes all FederationModuleMappings from store
|
||||||
|
|||||||
@ -5,12 +5,13 @@ types:
|
|||||||
type: types.ModuleMapping
|
type: types.ModuleMapping
|
||||||
|
|
||||||
fields:
|
fields:
|
||||||
- { field: FederationModuleID, isPrimaryKey: true }
|
- { field: FederationModuleID, isPrimaryKey: true, sortable: true }
|
||||||
- { field: ComposeModuleID, isPrimaryKey: true }
|
- { field: ComposeModuleID, isPrimaryKey: true, sortable: true }
|
||||||
|
- { field: ComposeNamespaceID, isPrimaryKey: true, sortable: true }
|
||||||
- { field: FieldMapping, type: "json.Text" }
|
- { field: FieldMapping, type: "json.Text" }
|
||||||
|
|
||||||
lookups:
|
lookups:
|
||||||
- fields: [FederationModuleID, ComposeModuleID]
|
- fields: [FederationModuleID, ComposeModuleID, ComposeNamespaceID]
|
||||||
description: |-
|
description: |-
|
||||||
searches for module mapping by federation module id and compose module id
|
searches for module mapping by federation module id and compose module id
|
||||||
|
|
||||||
@ -28,4 +29,5 @@ rdbms:
|
|||||||
mapFields:
|
mapFields:
|
||||||
FederationModuleID: { column: rel_federation_module }
|
FederationModuleID: { column: rel_federation_module }
|
||||||
ComposeModuleID: { column: rel_compose_module }
|
ComposeModuleID: { column: rel_compose_module }
|
||||||
|
ComposeNamespaceID: { column: rel_compose_namespace }
|
||||||
FieldMapping: { column: field_mapping }
|
FieldMapping: { column: field_mapping }
|
||||||
|
|||||||
@ -377,6 +377,7 @@ func (s Store) internalFederationExposedModuleRowScanner(row rowScanner) (res *t
|
|||||||
&res.ID,
|
&res.ID,
|
||||||
&res.NodeID,
|
&res.NodeID,
|
||||||
&res.ComposeModuleID,
|
&res.ComposeModuleID,
|
||||||
|
&res.ComposeNamespaceID,
|
||||||
&res.Fields,
|
&res.Fields,
|
||||||
&res.CreatedAt,
|
&res.CreatedAt,
|
||||||
&res.UpdatedAt,
|
&res.UpdatedAt,
|
||||||
@ -423,6 +424,7 @@ func (Store) federationExposedModuleColumns(aa ...string) []string {
|
|||||||
alias + "id",
|
alias + "id",
|
||||||
alias + "rel_node",
|
alias + "rel_node",
|
||||||
alias + "rel_compose_module",
|
alias + "rel_compose_module",
|
||||||
|
alias + "rel_compose_namespace",
|
||||||
alias + "fields",
|
alias + "fields",
|
||||||
alias + "created_at",
|
alias + "created_at",
|
||||||
alias + "updated_at",
|
alias + "updated_at",
|
||||||
@ -453,6 +455,7 @@ func (s Store) internalFederationExposedModuleEncoder(res *types.ExposedModule)
|
|||||||
"id": res.ID,
|
"id": res.ID,
|
||||||
"rel_node": res.NodeID,
|
"rel_node": res.NodeID,
|
||||||
"rel_compose_module": res.ComposeModuleID,
|
"rel_compose_module": res.ComposeModuleID,
|
||||||
|
"rel_compose_namespace": res.ComposeNamespaceID,
|
||||||
"fields": res.Fields,
|
"fields": res.Fields,
|
||||||
"created_at": res.CreatedAt,
|
"created_at": res.CreatedAt,
|
||||||
"updated_at": res.UpdatedAt,
|
"updated_at": res.UpdatedAt,
|
||||||
|
|||||||
@ -14,6 +14,14 @@ func (s Store) convertFederationExposedModuleFilter(f types.ExposedModuleFilter)
|
|||||||
query = query.Where("cmd.rel_node = ?", f.NodeID)
|
query = query.Where("cmd.rel_node = ?", f.NodeID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if f.ComposeModuleID > 0 {
|
||||||
|
query = query.Where("cmd.rel_compose_module = ?", f.ComposeModuleID)
|
||||||
|
}
|
||||||
|
|
||||||
|
if f.ComposeNamespaceID > 0 {
|
||||||
|
query = query.Where("cmd.rel_compose_namespace = ?", f.ComposeNamespaceID)
|
||||||
|
}
|
||||||
|
|
||||||
// if f.Query != "" {
|
// if f.Query != "" {
|
||||||
// q := "%" + strings.ToLower(f.Query) + "%"
|
// q := "%" + strings.ToLower(f.Query) + "%"
|
||||||
// query = query.Where(squirrel.Or{
|
// query = query.Where(squirrel.Or{
|
||||||
|
|||||||
@ -115,6 +115,10 @@ func (s Store) fetchFullPageOfFederationModuleMappings(
|
|||||||
sort = append(sort, &filter.SortExpr{Column: "rel_compose_module"})
|
sort = append(sort, &filter.SortExpr{Column: "rel_compose_module"})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if sort.Get("rel_compose_namespace") == nil {
|
||||||
|
sort = append(sort, &filter.SortExpr{Column: "rel_compose_namespace"})
|
||||||
|
}
|
||||||
|
|
||||||
// Apply sorting expr from filter to query
|
// Apply sorting expr from filter to query
|
||||||
if q, err = setOrderBy(q, sort, s.sortableFederationModuleMappingColumns()...); err != nil {
|
if q, err = setOrderBy(q, sort, s.sortableFederationModuleMappingColumns()...); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -222,13 +226,14 @@ func (s Store) QueryFederationModuleMappings(
|
|||||||
return set, fetched, res, rows.Err()
|
return set, fetched, res, rows.Err()
|
||||||
}
|
}
|
||||||
|
|
||||||
// LookupFederationModuleMappingByFederationModuleIDComposeModuleID searches for module mapping by federation module id and compose module id
|
// LookupFederationModuleMappingByFederationModuleIDComposeModuleIDComposeNamespaceID searches for module mapping by federation module id and compose module id
|
||||||
//
|
//
|
||||||
// It returns module mapping
|
// It returns module mapping
|
||||||
func (s Store) LookupFederationModuleMappingByFederationModuleIDComposeModuleID(ctx context.Context, federation_module_id uint64, compose_module_id uint64) (*types.ModuleMapping, error) {
|
func (s Store) LookupFederationModuleMappingByFederationModuleIDComposeModuleIDComposeNamespaceID(ctx context.Context, federation_module_id uint64, compose_module_id uint64, compose_namespace_id uint64) (*types.ModuleMapping, error) {
|
||||||
return s.execLookupFederationModuleMapping(ctx, squirrel.Eq{
|
return s.execLookupFederationModuleMapping(ctx, squirrel.Eq{
|
||||||
s.preprocessColumn("cmd.rel_federation_module", ""): s.preprocessValue(federation_module_id, ""),
|
s.preprocessColumn("cmd.rel_federation_module", ""): s.preprocessValue(federation_module_id, ""),
|
||||||
s.preprocessColumn("cmd.rel_compose_module", ""): s.preprocessValue(compose_module_id, ""),
|
s.preprocessColumn("cmd.rel_compose_module", ""): s.preprocessValue(compose_module_id, ""),
|
||||||
|
s.preprocessColumn("cmd.rel_compose_namespace", ""): s.preprocessValue(compose_namespace_id, ""),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -274,9 +279,9 @@ func (s Store) partialFederationModuleMappingUpdate(ctx context.Context, onlyCol
|
|||||||
err = s.execUpdateFederationModuleMappings(
|
err = s.execUpdateFederationModuleMappings(
|
||||||
ctx,
|
ctx,
|
||||||
squirrel.Eq{
|
squirrel.Eq{
|
||||||
s.preprocessColumn("cmd.rel_federation_module", ""): s.preprocessValue(res.FederationModuleID, ""), s.preprocessColumn("cmd.rel_compose_module", ""): s.preprocessValue(res.ComposeModuleID, ""),
|
s.preprocessColumn("cmd.rel_federation_module", ""): s.preprocessValue(res.FederationModuleID, ""), s.preprocessColumn("cmd.rel_compose_module", ""): s.preprocessValue(res.ComposeModuleID, ""), s.preprocessColumn("cmd.rel_compose_namespace", ""): s.preprocessValue(res.ComposeNamespaceID, ""),
|
||||||
},
|
},
|
||||||
s.internalFederationModuleMappingEncoder(res).Skip("rel_federation_module", "rel_compose_module").Only(onlyColumns...))
|
s.internalFederationModuleMappingEncoder(res).Skip("rel_federation_module", "rel_compose_module", "rel_compose_namespace").Only(onlyColumns...))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return s.config.ErrorHandler(err)
|
return s.config.ErrorHandler(err)
|
||||||
}
|
}
|
||||||
@ -307,7 +312,7 @@ func (s Store) DeleteFederationModuleMapping(ctx context.Context, rr ...*types.M
|
|||||||
for _, res := range rr {
|
for _, res := range rr {
|
||||||
|
|
||||||
err = s.execDeleteFederationModuleMappings(ctx, squirrel.Eq{
|
err = s.execDeleteFederationModuleMappings(ctx, squirrel.Eq{
|
||||||
s.preprocessColumn("cmd.rel_federation_module", ""): s.preprocessValue(res.FederationModuleID, ""), s.preprocessColumn("cmd.rel_compose_module", ""): s.preprocessValue(res.ComposeModuleID, ""),
|
s.preprocessColumn("cmd.rel_federation_module", ""): s.preprocessValue(res.FederationModuleID, ""), s.preprocessColumn("cmd.rel_compose_module", ""): s.preprocessValue(res.ComposeModuleID, ""), s.preprocessColumn("cmd.rel_compose_namespace", ""): s.preprocessValue(res.ComposeNamespaceID, ""),
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return s.config.ErrorHandler(err)
|
return s.config.ErrorHandler(err)
|
||||||
@ -317,11 +322,12 @@ func (s Store) DeleteFederationModuleMapping(ctx context.Context, rr ...*types.M
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteFederationModuleMappingByFederationModuleIDComposeModuleID Deletes row from the federation_module_mapping table
|
// DeleteFederationModuleMappingByFederationModuleIDComposeModuleIDComposeNamespaceID Deletes row from the federation_module_mapping table
|
||||||
func (s Store) DeleteFederationModuleMappingByFederationModuleIDComposeModuleID(ctx context.Context, federationModuleID uint64, composeModuleID uint64) error {
|
func (s Store) DeleteFederationModuleMappingByFederationModuleIDComposeModuleIDComposeNamespaceID(ctx context.Context, federationModuleID uint64, composeModuleID uint64, composeNamespaceID uint64) error {
|
||||||
return s.execDeleteFederationModuleMappings(ctx, squirrel.Eq{
|
return s.execDeleteFederationModuleMappings(ctx, squirrel.Eq{
|
||||||
s.preprocessColumn("cmd.rel_federation_module", ""): s.preprocessValue(federationModuleID, ""),
|
s.preprocessColumn("cmd.rel_federation_module", ""): s.preprocessValue(federationModuleID, ""),
|
||||||
s.preprocessColumn("cmd.rel_compose_module", ""): s.preprocessValue(composeModuleID, ""),
|
s.preprocessColumn("cmd.rel_compose_module", ""): s.preprocessValue(composeModuleID, ""),
|
||||||
|
s.preprocessColumn("cmd.rel_compose_namespace", ""): s.preprocessValue(composeNamespaceID, ""),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -368,6 +374,7 @@ func (s Store) execUpsertFederationModuleMappings(ctx context.Context, set store
|
|||||||
set,
|
set,
|
||||||
"rel_federation_module",
|
"rel_federation_module",
|
||||||
"rel_compose_module",
|
"rel_compose_module",
|
||||||
|
"rel_compose_namespace",
|
||||||
)
|
)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -392,6 +399,7 @@ func (s Store) internalFederationModuleMappingRowScanner(row rowScanner) (res *t
|
|||||||
err = row.Scan(
|
err = row.Scan(
|
||||||
&res.FederationModuleID,
|
&res.FederationModuleID,
|
||||||
&res.ComposeModuleID,
|
&res.ComposeModuleID,
|
||||||
|
&res.ComposeNamespaceID,
|
||||||
&res.FieldMapping,
|
&res.FieldMapping,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -434,6 +442,7 @@ func (Store) federationModuleMappingColumns(aa ...string) []string {
|
|||||||
return []string{
|
return []string{
|
||||||
alias + "rel_federation_module",
|
alias + "rel_federation_module",
|
||||||
alias + "rel_compose_module",
|
alias + "rel_compose_module",
|
||||||
|
alias + "rel_compose_namespace",
|
||||||
alias + "field_mapping",
|
alias + "field_mapping",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -444,7 +453,11 @@ func (Store) federationModuleMappingColumns(aa ...string) []string {
|
|||||||
//
|
//
|
||||||
// With optional string arg, all columns are returned aliased
|
// With optional string arg, all columns are returned aliased
|
||||||
func (Store) sortableFederationModuleMappingColumns() []string {
|
func (Store) sortableFederationModuleMappingColumns() []string {
|
||||||
return []string{}
|
return []string{
|
||||||
|
"rel_federation_module",
|
||||||
|
"rel_compose_module",
|
||||||
|
"rel_compose_namespace",
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// internalFederationModuleMappingEncoder encodes fields from types.ModuleMapping to store.Payload (map)
|
// internalFederationModuleMappingEncoder encodes fields from types.ModuleMapping to store.Payload (map)
|
||||||
@ -455,6 +468,7 @@ func (s Store) internalFederationModuleMappingEncoder(res *types.ModuleMapping)
|
|||||||
return store.Payload{
|
return store.Payload{
|
||||||
"rel_federation_module": res.FederationModuleID,
|
"rel_federation_module": res.FederationModuleID,
|
||||||
"rel_compose_module": res.ComposeModuleID,
|
"rel_compose_module": res.ComposeModuleID,
|
||||||
|
"rel_compose_namespace": res.ComposeNamespaceID,
|
||||||
"field_mapping": res.FieldMapping,
|
"field_mapping": res.FieldMapping,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -480,6 +494,8 @@ func (s Store) collectFederationModuleMappingCursorValues(res *types.ModuleMappi
|
|||||||
|
|
||||||
pkRel_compose_module bool
|
pkRel_compose_module bool
|
||||||
|
|
||||||
|
pkRel_compose_namespace bool
|
||||||
|
|
||||||
collect = func(cc ...string) {
|
collect = func(cc ...string) {
|
||||||
for _, c := range cc {
|
for _, c := range cc {
|
||||||
switch c {
|
switch c {
|
||||||
@ -491,6 +507,10 @@ func (s Store) collectFederationModuleMappingCursorValues(res *types.ModuleMappi
|
|||||||
cursor.Set(c, res.ComposeModuleID, false)
|
cursor.Set(c, res.ComposeModuleID, false)
|
||||||
|
|
||||||
pkRel_compose_module = true
|
pkRel_compose_module = true
|
||||||
|
case "rel_compose_namespace":
|
||||||
|
cursor.Set(c, res.ComposeNamespaceID, false)
|
||||||
|
|
||||||
|
pkRel_compose_namespace = true
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -498,8 +518,8 @@ func (s Store) collectFederationModuleMappingCursorValues(res *types.ModuleMappi
|
|||||||
)
|
)
|
||||||
|
|
||||||
collect(cc...)
|
collect(cc...)
|
||||||
if !hasUnique || !(pkRel_federation_module && pkRel_compose_module && true) {
|
if !hasUnique || !(pkRel_federation_module && pkRel_compose_module && pkRel_compose_namespace && true) {
|
||||||
collect("rel_federation_module", "rel_compose_module")
|
collect("rel_federation_module", "rel_compose_module", "rel_compose_namespace")
|
||||||
}
|
}
|
||||||
|
|
||||||
return cursor
|
return cursor
|
||||||
|
|||||||
@ -16,5 +16,9 @@ func (s Store) convertFederationModuleMappingFilter(f types.ModuleMappingFilter)
|
|||||||
query = query.Where("cmd.rel_federation_module = ?", f.FederationModuleID)
|
query = query.Where("cmd.rel_federation_module = ?", f.FederationModuleID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if f.ComposeNamespaceID > 0 {
|
||||||
|
query = query.Where("cmd.rel_compose_namespace = ?", f.ComposeNamespaceID)
|
||||||
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,6 +16,14 @@ func (s Store) convertFederationSharedModuleFilter(f types.SharedModuleFilter) (
|
|||||||
query = query.Where("cmd.rel_node = ?", f.NodeID)
|
query = query.Where("cmd.rel_node = ?", f.NodeID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if f.Handle != "" {
|
||||||
|
query = query.Where("cmd.handle = ?", f.Handle)
|
||||||
|
}
|
||||||
|
|
||||||
|
if f.Name != "" {
|
||||||
|
query = query.Where("cmd.name = ?", f.Name)
|
||||||
|
}
|
||||||
|
|
||||||
if f.Query != "" {
|
if f.Query != "" {
|
||||||
q := "%" + strings.ToLower(f.Query) + "%"
|
q := "%" + strings.ToLower(f.Query) + "%"
|
||||||
query = query.Where(squirrel.Or{
|
query = query.Where(squirrel.Or{
|
||||||
|
|||||||
@ -509,21 +509,22 @@ func (Schema) FederationModuleExposed() *Table {
|
|||||||
ID,
|
ID,
|
||||||
ColumnDef("rel_node", ColumnTypeIdentifier),
|
ColumnDef("rel_node", ColumnTypeIdentifier),
|
||||||
ColumnDef("rel_compose_module", ColumnTypeIdentifier),
|
ColumnDef("rel_compose_module", ColumnTypeIdentifier),
|
||||||
|
ColumnDef("rel_compose_namespace", ColumnTypeIdentifier),
|
||||||
ColumnDef("fields", ColumnTypeText),
|
ColumnDef("fields", ColumnTypeText),
|
||||||
CUDTimestamps,
|
CUDTimestamps,
|
||||||
|
|
||||||
AddIndex("unique_node_composemodule", IColumn("rel_node", "rel_compose_module")),
|
AddIndex("unique_node_compose_module", IColumn("rel_node", "rel_compose_module", "rel_compose_namespace")),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (Schema) FederationModuleMapping() *Table {
|
func (Schema) FederationModuleMapping() *Table {
|
||||||
return TableDef("federation_module_mapping",
|
return TableDef("federation_module_mapping",
|
||||||
ID,
|
|
||||||
ColumnDef("rel_federation_module", ColumnTypeIdentifier),
|
ColumnDef("rel_federation_module", ColumnTypeIdentifier),
|
||||||
ColumnDef("rel_compose_module", ColumnTypeIdentifier),
|
ColumnDef("rel_compose_module", ColumnTypeIdentifier),
|
||||||
|
ColumnDef("rel_compose_namespace", ColumnTypeIdentifier),
|
||||||
ColumnDef("field_mapping", ColumnTypeText),
|
ColumnDef("field_mapping", ColumnTypeText),
|
||||||
|
|
||||||
AddIndex("unique_federationmodule_composemodule", IColumn("rel_federation_module", "rel_compose_module")),
|
AddIndex("unique_federation_module_compose_module", IColumn("rel_federation_module", "rel_compose_module", "rel_compose_namespace")),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user