diff --git a/app/boot_levels.go b/app/boot_levels.go index ec7bcf7d1..e6fb30f34 100644 --- a/app/boot_levels.go +++ b/app/boot_levels.go @@ -228,11 +228,11 @@ func (app *CortezaApp) Provision(ctx context.Context) (err error) { ctx = auth.SetSuperUserContext(ctx) if err = system.Provision(ctx, app.Log, app.Store); err != nil { - return fmt.Errorf("could not provision messaging: %w", err) + return fmt.Errorf("could not provision system: %w", err) } if err = compose.Provision(ctx, app.Log); err != nil { - return fmt.Errorf("could not provision messaging: %w", err) + return fmt.Errorf("could not provision compose: %w", err) } if err = messaging.Provision(ctx, app.Log); err != nil { diff --git a/compose/importer/importer.go b/compose/importer/importer.go index 17200d706..29e9ab086 100644 --- a/compose/importer/importer.go +++ b/compose/importer/importer.go @@ -3,8 +3,6 @@ package importer import ( "context" "fmt" - "github.com/pkg/errors" - "github.com/cortezaproject/corteza-server/compose/types" "github.com/cortezaproject/corteza-server/pkg/deinterfacer" "github.com/cortezaproject/corteza-server/pkg/importer" @@ -87,6 +85,7 @@ func (imp *Importer) Cast(def interface{}) (err error) { var nsHandle string // Solving a special case where namespace is defined as string // and we're treating value as namespace's handle + println("provisioning namespaces") deinterfacer.KVsetString(&nsHandle, "namespace", def) if nsHandle != "" { delete(def.(map[interface{}]interface{}), "namespace") @@ -140,7 +139,7 @@ func (imp *Importer) Store( if imp.namespaces != nil { err = imp.namespaces.Store(ctx, nsStore, mStore, cStore, pStore, rStore) if err != nil { - return errors.Wrap(err, "could not import namespaces") + return fmt.Errorf("could not import namespaces: %w", err) } } @@ -154,7 +153,7 @@ func (imp *Importer) Store( err = imp.permissions.Store(ctx, pk) if err != nil { - return errors.Wrap(err, "could not import permissions") + return fmt.Errorf("could not import permissions: %w", err) } } diff --git a/messaging/importer/importer.go b/messaging/importer/importer.go index 3f92f04b8..b9a93a772 100644 --- a/messaging/importer/importer.go +++ b/messaging/importer/importer.go @@ -80,14 +80,14 @@ func (imp *Importer) Store(ctx context.Context, rk channelKeeper, pk permissions err = imp.permissions.Store(ctx, pk) if err != nil { - return + return fmt.Errorf("could not provision permissions: %w", err) } } if imp.settings != nil { err = imp.settings.Store(ctx, sk) if err != nil { - return + return fmt.Errorf("could not provision settings: %w", err) } } diff --git a/store/rdbms/messaging_channels.go b/store/rdbms/messaging_channels.go index 0e020ffc8..475d5586e 100644 --- a/store/rdbms/messaging_channels.go +++ b/store/rdbms/messaging_channels.go @@ -38,11 +38,20 @@ func (s Store) convertMessagingChannelFilter(f types.ChannelFilter) (query squir if f.CurrentUserID > 0 { qcm := s.SelectBuilder(s.messagingChannelMemberTable("mcm"), "mcm.rel_channel"). - Where(squirrel.Eq{"cmc.rel_user:": f.CurrentUserID}) + // minor squirrel quirk: change placeholder format to question + // on sub-queries. This will be reset to the right format internally + // when merged with main query + PlaceholderFormat(squirrel.Question). + Where(squirrel.Eq{"mcm.rel_user": f.CurrentUserID}) + + qcmSql, qcmArgs, err := qcm.ToSql() + if err != nil { + return query, err + } query = query.Where(squirrel.Or{ - squirrel.Eq{"c.type": types.ChannelTypePublic}, - squirrel.Eq{"c.id": qcm}, + squirrel.Eq{"mch.type": types.ChannelTypePublic}, + squirrel.Expr("mch.id IN ("+qcmSql+")", qcmArgs...), }) } diff --git a/system/importer/importer.go b/system/importer/importer.go index 508d7ec14..8c6f1e8c3 100644 --- a/system/importer/importer.go +++ b/system/importer/importer.go @@ -96,7 +96,7 @@ func (imp *Importer) Store( } if err != nil { - return + return fmt.Errorf("could not provision permissions: %w", err) } }