diff --git a/app/boot_levels.go b/app/boot_levels.go index 13c01135e..96986cc9c 100644 --- a/app/boot_levels.go +++ b/app/boot_levels.go @@ -14,6 +14,7 @@ import ( autService "github.com/cortezaproject/corteza-server/automation/service" cmpService "github.com/cortezaproject/corteza-server/compose/service" cmpEvent "github.com/cortezaproject/corteza-server/compose/service/event" + discoveryService "github.com/cortezaproject/corteza-server/discovery/service" fdrService "github.com/cortezaproject/corteza-server/federation/service" fedService "github.com/cortezaproject/corteza-server/federation/service" "github.com/cortezaproject/corteza-server/pkg/actionlog" @@ -428,6 +429,14 @@ func (app *CortezaApp) InitServices(ctx context.Context) (err error) { } } + // Initializing discovery + if app.Opt.Discovery.Enabled { + err = discoveryService.Initialize(ctx, app.Opt.Discovery) + if err != nil { + return err + } + } + // Initializing seeder _ = seeder.Seeder(ctx, app.Store, seeder.Faker()) diff --git a/discovery/rest/internal/documents/compose.go b/discovery/rest/internal/documents/compose.go index 889d5d6ed..f803f204e 100644 --- a/discovery/rest/internal/documents/compose.go +++ b/discovery/rest/internal/documents/compose.go @@ -5,8 +5,10 @@ import ( "fmt" cmpService "github.com/cortezaproject/corteza-server/compose/service" cmpTypes "github.com/cortezaproject/corteza-server/compose/types" + "github.com/cortezaproject/corteza-server/discovery/service" "github.com/cortezaproject/corteza-server/pkg/errors" "github.com/cortezaproject/corteza-server/pkg/filter" + "github.com/cortezaproject/corteza-server/pkg/options" "github.com/cortezaproject/corteza-server/pkg/rbac" sysService "github.com/cortezaproject/corteza-server/system/service" sysTypes "github.com/cortezaproject/corteza-server/system/types" @@ -14,6 +16,7 @@ import ( type ( composeResources struct { + opt options.DiscoveryOpt settings *sysTypes.AppSettings rbac interface { @@ -62,6 +65,7 @@ var ( func ComposeResources() *composeResources { return &composeResources{ + opt: service.DefaultOption, settings: sysService.CurrentSettings, rbac: rbac.Global(), ac: cmpService.DefaultAccessControl, @@ -372,24 +376,28 @@ func (d composeResources) UpdateModuleMeta(ctx context.Context) (rsp interface{} // getUrlToResource construct page url for compose resources func (d composeResources) getUrlToResource(page pageDetail) (url string) { var ( + host = d.opt.CortezaDomain validNsSlung = len(page.namespaceSlug) > 0 validModuleID = page.moduleID > 0 validRecord = page.recordID > 0 validPageID = page.pageID > 0 ) + if len(host) == 0 { + return + } if validModuleID && validRecord { // For record, take moduleID & recordID from params(page) then construct url from modulePages map if p, is := modulePages[page.moduleID]; is { - url = fmt.Sprintf("/compose/ns/%s/pages/%d/records/%d", p.namespaceSlug, p.pageID, page.recordID) + url = fmt.Sprintf("%s/compose/ns/%s/pages/%d/records/%d", host, p.namespaceSlug, p.pageID, page.recordID) } } else if validNsSlung && validPageID { // for module? @todo, we need moduleID ref for module home page // we can check page.self_id is 0 that is modules home pages, but ref_module is also 0 - url = fmt.Sprintf("/compose/ns/%s/pages/%d", page.namespaceSlug, page.pageID) + url = fmt.Sprintf("%s/compose/ns/%s/pages/%d", host, page.namespaceSlug, page.pageID) } else if validNsSlung { // For namespace, just send to /pages FE handles fallback to home(default) page - url = fmt.Sprintf("/compose/ns/%s/pages", page.namespaceSlug) + url = fmt.Sprintf("%s/compose/ns/%s/pages", host, page.namespaceSlug) } return } diff --git a/discovery/service/service.go b/discovery/service/service.go new file mode 100644 index 000000000..ae617e819 --- /dev/null +++ b/discovery/service/service.go @@ -0,0 +1,17 @@ +package service + +import ( + "context" + "github.com/cortezaproject/corteza-server/pkg/options" +) + +var ( + DefaultOption options.DiscoveryOpt +) + +// Initialize discovery service +func Initialize(_ context.Context, opt options.DiscoveryOpt) (err error) { + // @todo maybe move pkg/discovery her or other way around + DefaultOption = opt + return +} diff --git a/pkg/options/discovery.gen.go b/pkg/options/discovery.gen.go index fe5930a6f..ce2c52f1d 100644 --- a/pkg/options/discovery.gen.go +++ b/pkg/options/discovery.gen.go @@ -10,16 +10,18 @@ package options type ( DiscoveryOpt struct { - Enabled bool `env:"DISCOVERY_ENABLED"` - Debug bool `env:"DISCOVERY_DEBUG"` + Enabled bool `env:"DISCOVERY_ENABLED"` + Debug bool `env:"DISCOVERY_DEBUG"` + CortezaDomain string `env:"DISCOVERY_CORTEZA_DOMAIN"` } ) // Discovery initializes and returns a DiscoveryOpt with default values func Discovery() (o *DiscoveryOpt) { o = &DiscoveryOpt{ - Enabled: false, - Debug: false, + Enabled: false, + Debug: false, + CortezaDomain: "", } fill(o) diff --git a/pkg/options/discovery.yaml b/pkg/options/discovery.yaml index 1f0b13325..cd7f7b505 100644 --- a/pkg/options/discovery.yaml +++ b/pkg/options/discovery.yaml @@ -9,3 +9,9 @@ props: default: false docs: description: Enable debug activity logging. + + - name: CortezaDomain + type: string + default: "" + docs: + description: Provides host of corteza compose webapp.