From b66ed811365ceabeeaa1ed7e8aa286e1a9efebf2 Mon Sep 17 00:00:00 2001 From: Denis Arh Date: Fri, 24 May 2019 12:42:35 +0200 Subject: [PATCH] More flexible "compose", move to Corteza - more control over starting procedure, cli commands... - fix package paths - renaming symbols, comments, strings from Crust to Corteza --- compose/compose.go | 160 ++++++++++++++++++ compose/db/migrate.go | 9 +- compose/db/migrate_test.go | 18 +- compose/flags.go | 61 ------- compose/internal/repository/attachment.go | 3 +- compose/internal/repository/chart.go | 2 +- compose/internal/repository/error.go | 10 +- compose/internal/repository/flags.go | 25 --- compose/internal/repository/main_test.go | 10 +- compose/internal/repository/module.go | 2 +- compose/internal/repository/module_test.go | 4 +- compose/internal/repository/namespace.go | 2 +- compose/internal/repository/page.go | 2 +- compose/internal/repository/record.go | 4 +- .../repository/record_report_builder.go | 4 +- .../repository/record_report_builder_test.go | 4 +- compose/internal/repository/record_test.go | 4 +- compose/internal/repository/repository.go | 2 +- .../internal/repository/repository_test.go | 4 +- compose/internal/repository/trigger.go | 2 +- compose/internal/service/access_control.go | 4 +- compose/internal/service/attachment.go | 20 +-- compose/internal/service/chart.go | 12 +- compose/internal/service/chart_test.go | 6 +- compose/internal/service/error.go | 2 +- compose/internal/service/main_test.go | 16 +- compose/internal/service/module.go | 12 +- compose/internal/service/module_test.go | 6 +- compose/internal/service/namespace.go | 12 +- compose/internal/service/namespace_test.go | 6 +- compose/internal/service/notification.go | 10 +- compose/internal/service/page.go | 12 +- compose/internal/service/page_test.go | 6 +- compose/internal/service/record.go | 14 +- compose/internal/service/record_test.go | 8 +- compose/internal/service/service.go | 22 +-- compose/internal/service/trigger.go | 12 +- compose/internal/service/trigger_test.go | 6 +- compose/provision.go | 26 --- compose/rest/attachment.go | 8 +- compose/rest/chart.go | 6 +- compose/rest/handlers/attachment.go | 4 +- compose/rest/handlers/chart.go | 4 +- compose/rest/handlers/module.go | 4 +- compose/rest/handlers/namespace.go | 4 +- compose/rest/handlers/notification.go | 4 +- compose/rest/handlers/page.go | 4 +- compose/rest/handlers/permissions.go | 4 +- compose/rest/handlers/record.go | 4 +- compose/rest/handlers/trigger.go | 4 +- compose/rest/middleware.go | 2 +- compose/rest/module.go | 6 +- compose/rest/namespace.go | 6 +- compose/rest/notification.go | 6 +- compose/rest/page.go | 8 +- compose/rest/permissions.go | 6 +- compose/rest/record.go | 6 +- compose/rest/request/module.go | 5 +- compose/rest/request/permissions.go | 2 +- compose/rest/request/record.go | 2 +- compose/rest/request/util.go | 6 +- compose/rest/router.go | 43 +++-- compose/rest/trigger.go | 6 +- compose/routes.go | 37 ---- compose/start.go | 86 ---------- compose/types/attachment.gen_test.go | 2 +- compose/types/attachment.go | 1 + compose/types/chart.gen_test.go | 2 +- compose/types/chart.go | 2 +- compose/types/module.gen_test.go | 2 +- compose/types/module.go | 2 +- compose/types/module_field.gen_test.go | 2 +- compose/types/module_field.go | 2 +- compose/types/namespace.gen_test.go | 2 +- compose/types/namespace.go | 2 +- compose/types/page.gen_test.go | 2 +- compose/types/page.go | 2 +- compose/types/permission_resources.go | 2 +- compose/types/record.gen_test.go | 2 +- compose/types/record.go | 4 +- compose/types/record_value.gen_test.go | 2 +- compose/types/trigger.gen_test.go | 2 +- compose/types/trigger.go | 2 +- 83 files changed, 369 insertions(+), 489 deletions(-) create mode 100644 compose/compose.go delete mode 100644 compose/flags.go delete mode 100644 compose/internal/repository/flags.go delete mode 100644 compose/provision.go delete mode 100644 compose/routes.go delete mode 100644 compose/start.go diff --git a/compose/compose.go b/compose/compose.go new file mode 100644 index 000000000..51669b6ff --- /dev/null +++ b/compose/compose.go @@ -0,0 +1,160 @@ +package compose + +import ( + "context" + + "github.com/go-chi/chi" + _ "github.com/joho/godotenv/autoload" + "github.com/pkg/errors" + "github.com/spf13/cobra" + "github.com/titpetric/factory" + "go.uber.org/zap" + + migrate "github.com/cortezaproject/corteza-server/compose/db" + "github.com/cortezaproject/corteza-server/compose/internal/service" + "github.com/cortezaproject/corteza-server/compose/rest" + "github.com/cortezaproject/corteza-server/internal/db" + "github.com/cortezaproject/corteza-server/internal/logger" + "github.com/cortezaproject/corteza-server/pkg/api" + "github.com/cortezaproject/corteza-server/pkg/cli" + "github.com/cortezaproject/corteza-server/pkg/cli/flags" +) + +const ( + compose = "compose" +) + +type ( + Compose struct { + log *zap.Logger + + // General + logOpt *flags.LogOpt + smtpOpt *flags.SMTPOpt + jwtOpt *flags.JWTOpt + httpClientOpt *flags.HttpClientOpt + + // Compose specific + dbOpt *flags.DBOpt + provisionOpt *flags.ProvisionOpt + } +) + +func init() { + logger.Init(zap.DebugLevel) +} + +func InitCompose() *Compose { + return &Compose{ + log: logger.Default().Named(compose), + } +} + +// Command produces cobra.Command +func (m *Compose) Command(ctx context.Context) (cmd *cobra.Command) { + cmd = &cobra.Command{ + Use: "corteza-server-compose", + TraverseChildren: true, + PersistentPreRunE: func(cmd *cobra.Command, args []string) (err error) { + cli.InitGeneralServices(m.logOpt, m.smtpOpt, m.jwtOpt, m.httpClientOpt) + + return m.StartServices(ctx) + }, + } + + m.BindGlobalFlags(cmd) + + srv := api.NewServer(m.log) + serveApiCmd := srv.Command(ctx, compose, m.ApiServerPreRun) + + // Bind all flags we need for serving compose + m.BindApiServerFlags(serveApiCmd) + + srv.MountRoutes(m.ApiServerRoutes) + + cmd.AddCommand( + serveApiCmd, + cli.SetupProvisionSubcommands(ctx, m), + ) + + m.AddCommands(cmd, ctx) + + return +} + +// AddCommands - other commands that this subservice needs +func (m *Compose) AddCommands(cmd *cobra.Command, ctx context.Context) {} + +// Binds all global flags +func (m *Compose) BindGlobalFlags(cmd *cobra.Command) { + m.logOpt = flags.Log(cmd) + m.smtpOpt = flags.SMTP(cmd) + m.jwtOpt = flags.JWT(cmd) + m.httpClientOpt = flags.HttpClient(cmd) +} + +// BindApiServerFlags sets & binds all API server flags +func (m *Compose) BindApiServerFlags(cmd *cobra.Command) { + m.dbOpt = flags.DB(cmd, compose) + m.provisionOpt = flags.Provision(cmd, compose) +} + +// StartServices +func (m *Compose) StartServices(ctx context.Context) (err error) { + _, err = db.TryToConnect(ctx, m.log, compose, m.dbOpt.DSN, m.dbOpt.Profiler) + if err != nil { + return errors.Wrap(err, "could not connect to database") + } + + if m.provisionOpt.Database { + err = m.ProvisionMigrateDatabase(ctx) + if err != nil { + return + } + } + + err = service.Init(ctx) + if err != nil { + return + } + + return +} + +// ApiServerPreRun is executed before serve-api command runs REST API server +// +// Should initialize all that needs to run in the background +func (m Compose) ApiServerPreRun(ctx context.Context) error { + service.DefaultPermissions.Watch(ctx) + return nil +} + +// ApiServerRoutes mounts api server routes +func (m *Compose) ApiServerRoutes(r chi.Router) { + rest.MountRoutes(r) +} + +// ProvisionMigrateDatabase migrates database to new version +// +// This is ran by default on serve-api (when not explicitly disabled with --compose-provision-database=false) +// or on demand with "provision migrate-database" +func (m Compose) ProvisionMigrateDatabase(ctx context.Context) error { + var db, err = factory.Database.Get(compose) + if err != nil { + return err + } + + db = db.With(ctx) + // Disable profiler for migrations + db.Profiler = nil + + return migrate.Migrate(db) +} + +// ProvisionAccessControl resets access-control rules for roles admin (2) and everyone (1) +// +// Run with emand with "provision access-control-rules" +func (m Compose) ProvisionAccessControl(ctx context.Context) error { + var ac = service.DefaultAccessControl + return ac.Grant(ctx, ac.DefaultRules()...) +} diff --git a/compose/db/migrate.go b/compose/db/migrate.go index 57eb8b12d..1f02f6ce7 100644 --- a/compose/db/migrate.go +++ b/compose/db/migrate.go @@ -13,7 +13,7 @@ import ( "github.com/pkg/errors" "github.com/titpetric/factory" - "github.com/crusttech/crust/compose/db/mysql" + "github.com/cortezaproject/corteza-server/compose/db/mysql" ) func statements(contents []byte, err error) ([]string, error) { @@ -31,13 +31,16 @@ func Migrate(db *factory.DB) error { var files []string - if err := fs.Walk(statikFS, "/", func(filename string, info os.FileInfo, err error) error { + fn := func(filename string, info os.FileInfo, err error) error { + _ = err matched, err := filepath.Match("/*.up.sql", filename) if matched { files = append(files, filename) } return err - }); err != nil { + } + + if err = fs.Walk(statikFS, "/", fn); err != nil { return errors.Wrap(err, "Error when listing files for migrations") } diff --git a/compose/db/migrate_test.go b/compose/db/migrate_test.go index 3c7682330..32afc0d4d 100644 --- a/compose/db/migrate_test.go +++ b/compose/db/migrate_test.go @@ -3,27 +3,15 @@ package db import ( + "os" "testing" - "github.com/namsral/flag" "github.com/titpetric/factory" ) func TestMigrations(t *testing.T) { - if testing.Short() { - t.Skip("skipping test in short mode.") - return - } - - var dsn string - - flag.StringVar(&dsn, "db-dsn", "crust:crust@tcp(crust-db:3306)/crust?collation=utf8mb4_general_ci", "DSN for database connection") - flag.Parse() - - factory.Database.Add("default", dsn) - factory.Database.Add("system", dsn) - - db := factory.Database.MustGet() + factory.Database.Add("compose", os.Getenv("COMPOSE_DB_DSN")) + db := factory.Database.MustGet("compose") if err := Migrate(db); err != nil { t.Fatalf("Unexpected error: %+v", err) } diff --git a/compose/flags.go b/compose/flags.go deleted file mode 100644 index 4c616d35f..000000000 --- a/compose/flags.go +++ /dev/null @@ -1,61 +0,0 @@ -package service - -import ( - "github.com/pkg/errors" - - "github.com/crusttech/crust/compose/internal/repository" - "github.com/crusttech/crust/internal/config" -) - -type ( - appFlags struct { - smtp *config.SMTP - http *config.HTTP - monitor *config.Monitor - db *config.Database - repository *repository.Flags - jwt *config.JWT - } -) - -var flags *appFlags - -func (c *appFlags) Validate() error { - if c == nil { - return errors.New("Flags are not initialized, need to call Flags()") - } - if err := c.http.Validate(); err != nil { - return err - } - if err := c.smtp.Validate(); err != nil { - return err - } - if err := c.monitor.Validate(); err != nil { - return err - } - if err := c.db.Validate(); err != nil { - return err - } - if err := c.repository.Validate(); err != nil { - return err - } - return nil -} - -func Flags(prefix ...string) { - if flags != nil { - return - } - if len(prefix) == 0 { - panic("Flags() needs prefix on first call") - } - - flags = &appFlags{ - new(config.SMTP).Init(prefix...), - new(config.HTTP).Init(prefix...), - new(config.Monitor).Init(prefix...), - new(config.Database).Init(prefix...), - new(repository.Flags).Init(prefix...), - new(config.JWT).Init(), - } -} diff --git a/compose/internal/repository/attachment.go b/compose/internal/repository/attachment.go index 49da1f1d4..a58710be2 100644 --- a/compose/internal/repository/attachment.go +++ b/compose/internal/repository/attachment.go @@ -8,7 +8,7 @@ import ( "github.com/titpetric/factory" "gopkg.in/Masterminds/squirrel.v1" - "github.com/crusttech/crust/compose/types" + "github.com/cortezaproject/corteza-server/compose/types" ) type ( @@ -115,6 +115,7 @@ func (r attachment) Find(filter types.AttachmentFilter) (set types.AttachmentSet } default: err = errors.New("unsupported kind value") + return } if f.Filter != "" { diff --git a/compose/internal/repository/chart.go b/compose/internal/repository/chart.go index cdb151b92..cf8ebb413 100644 --- a/compose/internal/repository/chart.go +++ b/compose/internal/repository/chart.go @@ -7,7 +7,7 @@ import ( "github.com/titpetric/factory" "gopkg.in/Masterminds/squirrel.v1" - "github.com/crusttech/crust/compose/types" + "github.com/cortezaproject/corteza-server/compose/types" ) type ( diff --git a/compose/internal/repository/error.go b/compose/internal/repository/error.go index f1d4dd37f..5f883cdce 100644 --- a/compose/internal/repository/error.go +++ b/compose/internal/repository/error.go @@ -1,9 +1,5 @@ package repository -import ( - "github.com/pkg/errors" -) - type ( repositoryError string ) @@ -17,9 +13,5 @@ func (e repositoryError) Error() string { } func (e repositoryError) String() string { - return "crust.compose.repository." + string(e) -} - -func (e repositoryError) new() error { - return errors.WithStack(e) + return "compose.repository." + string(e) } diff --git a/compose/internal/repository/flags.go b/compose/internal/repository/flags.go deleted file mode 100644 index f170e784b..000000000 --- a/compose/internal/repository/flags.go +++ /dev/null @@ -1,25 +0,0 @@ -package repository - -import ( - _ "github.com/crusttech/crust/internal/config" -) - -type ( - Flags struct { - // No config yet - } -) - -var flags *Flags - -func (f *Flags) Validate() error { - return nil -} - -func (f *Flags) Init(prefix ...string) *Flags { - if flags != nil { - return flags - } - flags = &Flags{} - return flags -} diff --git a/compose/internal/repository/main_test.go b/compose/internal/repository/main_test.go index c4c8fd5a9..0a7686baa 100644 --- a/compose/internal/repository/main_test.go +++ b/compose/internal/repository/main_test.go @@ -7,20 +7,18 @@ import ( "testing" "time" - "github.com/namsral/flag" "github.com/titpetric/factory" "go.uber.org/zap/zapcore" - "github.com/crusttech/crust/internal/logger" + "github.com/cortezaproject/corteza-server/internal/logger" ) func TestMain(m *testing.M) { logger.Init(zapcore.DebugLevel) - dsn := "" - flag.StringVar(&dsn, "compose-db-dsn", "", "") - flag.Parse() - factory.Database.Add("compose", dsn) + factory.Database.Add("compose", os.Getenv("COMPOSE_DB_DSN")) + db := factory.Database.MustGet("compose") + db.Profiler = &factory.DatabaseProfilerStdout{} os.Exit(m.Run()) } diff --git a/compose/internal/repository/module.go b/compose/internal/repository/module.go index d86c48033..8f87ce7fc 100644 --- a/compose/internal/repository/module.go +++ b/compose/internal/repository/module.go @@ -10,7 +10,7 @@ import ( "github.com/titpetric/factory" "gopkg.in/Masterminds/squirrel.v1" - "github.com/crusttech/crust/compose/types" + "github.com/cortezaproject/corteza-server/compose/types" ) type ( diff --git a/compose/internal/repository/module_test.go b/compose/internal/repository/module_test.go index da9a173a0..3f0244c72 100644 --- a/compose/internal/repository/module_test.go +++ b/compose/internal/repository/module_test.go @@ -6,8 +6,8 @@ import ( "context" "testing" - "github.com/crusttech/crust/compose/types" - "github.com/crusttech/crust/internal/test" + "github.com/cortezaproject/corteza-server/compose/types" + "github.com/cortezaproject/corteza-server/internal/test" "github.com/titpetric/factory" ) diff --git a/compose/internal/repository/namespace.go b/compose/internal/repository/namespace.go index 6629a80bb..48149f464 100644 --- a/compose/internal/repository/namespace.go +++ b/compose/internal/repository/namespace.go @@ -7,7 +7,7 @@ import ( "github.com/titpetric/factory" "gopkg.in/Masterminds/squirrel.v1" - "github.com/crusttech/crust/compose/types" + "github.com/cortezaproject/corteza-server/compose/types" ) type ( diff --git a/compose/internal/repository/page.go b/compose/internal/repository/page.go index f0d34713c..13579a027 100644 --- a/compose/internal/repository/page.go +++ b/compose/internal/repository/page.go @@ -7,7 +7,7 @@ import ( "github.com/titpetric/factory" "gopkg.in/Masterminds/squirrel.v1" - "github.com/crusttech/crust/compose/types" + "github.com/cortezaproject/corteza-server/compose/types" ) type ( diff --git a/compose/internal/repository/record.go b/compose/internal/repository/record.go index 8d88966eb..7b99703f2 100644 --- a/compose/internal/repository/record.go +++ b/compose/internal/repository/record.go @@ -10,9 +10,9 @@ import ( "github.com/titpetric/factory" "gopkg.in/Masterminds/squirrel.v1" - "github.com/crusttech/crust/compose/internal/repository/ql" + "github.com/cortezaproject/corteza-server/compose/internal/repository/ql" - "github.com/crusttech/crust/compose/types" + "github.com/cortezaproject/corteza-server/compose/types" ) type ( diff --git a/compose/internal/repository/record_report_builder.go b/compose/internal/repository/record_report_builder.go index d3b1e036a..40bc224cd 100644 --- a/compose/internal/repository/record_report_builder.go +++ b/compose/internal/repository/record_report_builder.go @@ -9,8 +9,8 @@ import ( "github.com/pkg/errors" "gopkg.in/Masterminds/squirrel.v1" - "github.com/crusttech/crust/compose/internal/repository/ql" - "github.com/crusttech/crust/compose/types" + "github.com/cortezaproject/corteza-server/compose/internal/repository/ql" + "github.com/cortezaproject/corteza-server/compose/types" ) type ( diff --git a/compose/internal/repository/record_report_builder_test.go b/compose/internal/repository/record_report_builder_test.go index c71fa2958..8b8fbc7a7 100644 --- a/compose/internal/repository/record_report_builder_test.go +++ b/compose/internal/repository/record_report_builder_test.go @@ -3,8 +3,8 @@ package repository import ( "testing" - "github.com/crusttech/crust/compose/types" - "github.com/crusttech/crust/internal/test" + "github.com/cortezaproject/corteza-server/compose/types" + "github.com/cortezaproject/corteza-server/internal/test" ) func TestRecordReportBuilder2(t *testing.T) { diff --git a/compose/internal/repository/record_test.go b/compose/internal/repository/record_test.go index 611686a53..62e4a2e6d 100644 --- a/compose/internal/repository/record_test.go +++ b/compose/internal/repository/record_test.go @@ -6,8 +6,8 @@ import ( "strings" "testing" - "github.com/crusttech/crust/compose/types" - "github.com/crusttech/crust/internal/test" + "github.com/cortezaproject/corteza-server/compose/types" + "github.com/cortezaproject/corteza-server/internal/test" ) */ diff --git a/compose/internal/repository/repository.go b/compose/internal/repository/repository.go index 6e82c6a0f..e417da524 100644 --- a/compose/internal/repository/repository.go +++ b/compose/internal/repository/repository.go @@ -7,7 +7,7 @@ import ( "github.com/titpetric/factory" "gopkg.in/Masterminds/squirrel.v1" - "github.com/crusttech/crust/internal/auth" + "github.com/cortezaproject/corteza-server/internal/auth" ) type ( diff --git a/compose/internal/repository/repository_test.go b/compose/internal/repository/repository_test.go index a2b20f8ca..b7fd1fd8b 100644 --- a/compose/internal/repository/repository_test.go +++ b/compose/internal/repository/repository_test.go @@ -8,8 +8,8 @@ import ( "github.com/titpetric/factory" - "github.com/crusttech/crust/compose/types" - "github.com/crusttech/crust/internal/test" + "github.com/cortezaproject/corteza-server/compose/types" + "github.com/cortezaproject/corteza-server/internal/test" ) func TestRepository(t *testing.T) { diff --git a/compose/internal/repository/trigger.go b/compose/internal/repository/trigger.go index 24829dcbc..8abaffc25 100644 --- a/compose/internal/repository/trigger.go +++ b/compose/internal/repository/trigger.go @@ -7,7 +7,7 @@ import ( "github.com/titpetric/factory" "gopkg.in/Masterminds/squirrel.v1" - "github.com/crusttech/crust/compose/types" + "github.com/cortezaproject/corteza-server/compose/types" ) type ( diff --git a/compose/internal/service/access_control.go b/compose/internal/service/access_control.go index 7bf33dbf6..074c060f8 100644 --- a/compose/internal/service/access_control.go +++ b/compose/internal/service/access_control.go @@ -3,8 +3,8 @@ package service import ( "context" - "github.com/crusttech/crust/compose/types" - "github.com/crusttech/crust/internal/permissions" + "github.com/cortezaproject/corteza-server/compose/types" + "github.com/cortezaproject/corteza-server/internal/permissions" ) type ( diff --git a/compose/internal/service/attachment.go b/compose/internal/service/attachment.go index 4ad5b9051..c87dcd644 100644 --- a/compose/internal/service/attachment.go +++ b/compose/internal/service/attachment.go @@ -17,11 +17,11 @@ import ( "go.uber.org/zap" "go.uber.org/zap/zapcore" - "github.com/crusttech/crust/compose/internal/repository" - "github.com/crusttech/crust/compose/types" - "github.com/crusttech/crust/internal/auth" - "github.com/crusttech/crust/internal/logger" - "github.com/crusttech/crust/internal/store" + "github.com/cortezaproject/corteza-server/compose/internal/repository" + "github.com/cortezaproject/corteza-server/compose/types" + "github.com/cortezaproject/corteza-server/internal/auth" + "github.com/cortezaproject/corteza-server/internal/logger" + "github.com/cortezaproject/corteza-server/internal/store" ) const ( @@ -298,10 +298,10 @@ func (svc attachment) processImage(original io.ReadSeeker, att *types.Attachment if imaging.JPEG == format { // Rotate image if needed - if preview, _, err = exiffix.Decode(original); err != nil { - //return errors.Wrapf(err, "Could not decode EXIF from JPEG") - } - + // if preview, _, err = exiffix.Decode(original); err != nil { + // return errors.Wrapf(err, "Could not decode EXIF from JPEG") + // } + preview, _, _ = exiffix.Decode(original) } if imaging.GIF == format { @@ -346,7 +346,7 @@ func (svc attachment) processImage(original io.ReadSeeker, att *types.Attachment width, height = preview.Bounds().Max.X, preview.Bounds().Max.Y var buf = &bytes.Buffer{} - if err = imaging.Encode(buf, preview, previewFormat); err != nil { + if err = imaging.Encode(buf, preview, previewFormat, opts...); err != nil { return } diff --git a/compose/internal/service/chart.go b/compose/internal/service/chart.go index 1e8a3f8c5..e436a4a08 100644 --- a/compose/internal/service/chart.go +++ b/compose/internal/service/chart.go @@ -5,11 +5,9 @@ import ( "github.com/titpetric/factory" "go.uber.org/zap" - "go.uber.org/zap/zapcore" - "github.com/crusttech/crust/compose/internal/repository" - "github.com/crusttech/crust/compose/types" - "github.com/crusttech/crust/internal/logger" + "github.com/cortezaproject/corteza-server/compose/internal/repository" + "github.com/cortezaproject/corteza-server/compose/types" ) type ( @@ -66,9 +64,9 @@ func (svc chart) With(ctx context.Context) ChartService { } // log() returns zap's logger with requestID from current context and fields. -func (svc chart) log(fields ...zapcore.Field) *zap.Logger { - return logger.AddRequestID(svc.ctx, svc.logger).With(fields...) -} +// func (svc chart) log(fields ...zapcore.Field) *zap.Logger { +// return logger.AddRequestID(svc.ctx, svc.logger).With(fields...) +// } func (svc chart) FindByID(namespaceID, chartID uint64) (c *types.Chart, err error) { if namespaceID == 0 { diff --git a/compose/internal/service/chart_test.go b/compose/internal/service/chart_test.go index f9a031dd0..c359a501d 100644 --- a/compose/internal/service/chart_test.go +++ b/compose/internal/service/chart_test.go @@ -9,9 +9,9 @@ import ( "github.com/pkg/errors" "github.com/titpetric/factory" - "github.com/crusttech/crust/compose/types" - "github.com/crusttech/crust/internal/auth" - "github.com/crusttech/crust/internal/test" + "github.com/cortezaproject/corteza-server/compose/types" + "github.com/cortezaproject/corteza-server/internal/auth" + "github.com/cortezaproject/corteza-server/internal/test" ) func TestChart(t *testing.T) { diff --git a/compose/internal/service/error.go b/compose/internal/service/error.go index d9190c46d..cc64fc639 100644 --- a/compose/internal/service/error.go +++ b/compose/internal/service/error.go @@ -26,7 +26,7 @@ func (e serviceError) Error() string { } func (e serviceError) String() string { - return "crust.compose.service." + string(e) + return "compose.service." + string(e) } func (e serviceError) withStack() error { diff --git a/compose/internal/service/main_test.go b/compose/internal/service/main_test.go index f01007063..dcebb99b1 100644 --- a/compose/internal/service/main_test.go +++ b/compose/internal/service/main_test.go @@ -9,14 +9,13 @@ import ( "testing" "time" - "github.com/namsral/flag" "github.com/titpetric/factory" "go.uber.org/zap/zapcore" - composeMigrate "github.com/crusttech/crust/compose/db" - "github.com/crusttech/crust/compose/types" - "github.com/crusttech/crust/internal/logger" - "github.com/crusttech/crust/internal/test" + composeMigrate "github.com/cortezaproject/corteza-server/compose/db" + "github.com/cortezaproject/corteza-server/compose/types" + "github.com/cortezaproject/corteza-server/internal/logger" + "github.com/cortezaproject/corteza-server/internal/test" ) type ( @@ -28,12 +27,7 @@ func (mockDB) Transaction(callback func() error) error { return callback() } func TestMain(m *testing.M) { logger.Init(zapcore.DebugLevel) - dsn := "" - flag.StringVar(&dsn, "compose-db-dsn", "", "") - flag.Parse() - - factory.Database.Add("compose", dsn) - + factory.Database.Add("compose", os.Getenv("COMPOSE_DB_DSN")) db := factory.Database.MustGet("compose") db.Profiler = &factory.DatabaseProfilerStdout{} diff --git a/compose/internal/service/module.go b/compose/internal/service/module.go index ff21467dc..417268d72 100644 --- a/compose/internal/service/module.go +++ b/compose/internal/service/module.go @@ -5,11 +5,9 @@ import ( "github.com/titpetric/factory" "go.uber.org/zap" - "go.uber.org/zap/zapcore" - "github.com/crusttech/crust/compose/internal/repository" - "github.com/crusttech/crust/compose/types" - "github.com/crusttech/crust/internal/logger" + "github.com/cortezaproject/corteza-server/compose/internal/repository" + "github.com/cortezaproject/corteza-server/compose/types" ) type ( @@ -68,9 +66,9 @@ func (svc module) With(ctx context.Context) ModuleService { } // log() returns zap's logger with requestID from current context and fields. -func (svc module) log(fields ...zapcore.Field) *zap.Logger { - return logger.AddRequestID(svc.ctx, svc.logger).With(fields...) -} +// func (svc module) log(fields ...zapcore.Field) *zap.Logger { +// return logger.AddRequestID(svc.ctx, svc.logger).With(fields...) +// } func (svc module) FindByID(namespaceID, moduleID uint64) (m *types.Module, err error) { if namespaceID == 0 { diff --git a/compose/internal/service/module_test.go b/compose/internal/service/module_test.go index 8ec0486b7..504d42a3c 100644 --- a/compose/internal/service/module_test.go +++ b/compose/internal/service/module_test.go @@ -8,9 +8,9 @@ import ( "github.com/titpetric/factory" - "github.com/crusttech/crust/compose/types" - "github.com/crusttech/crust/internal/auth" - "github.com/crusttech/crust/internal/test" + "github.com/cortezaproject/corteza-server/compose/types" + "github.com/cortezaproject/corteza-server/internal/auth" + "github.com/cortezaproject/corteza-server/internal/test" ) func TestModule(t *testing.T) { diff --git a/compose/internal/service/namespace.go b/compose/internal/service/namespace.go index a6a795b86..1766e177c 100644 --- a/compose/internal/service/namespace.go +++ b/compose/internal/service/namespace.go @@ -5,11 +5,9 @@ import ( "github.com/titpetric/factory" "go.uber.org/zap" - "go.uber.org/zap/zapcore" - "github.com/crusttech/crust/compose/internal/repository" - "github.com/crusttech/crust/compose/types" - "github.com/crusttech/crust/internal/logger" + "github.com/cortezaproject/corteza-server/compose/internal/repository" + "github.com/cortezaproject/corteza-server/compose/types" ) type ( @@ -63,9 +61,9 @@ func (svc namespace) With(ctx context.Context) NamespaceService { } // log() returns zap's logger with requestID from current context and fields. -func (svc namespace) log(fields ...zapcore.Field) *zap.Logger { - return logger.AddRequestID(svc.ctx, svc.logger).With(fields...) -} +// func (svc namespace) log(fields ...zapcore.Field) *zap.Logger { +// return logger.AddRequestID(svc.ctx, svc.logger).With(fields...) +// } func (svc namespace) FindByID(ID uint64) (ns *types.Namespace, err error) { if ID == 0 { diff --git a/compose/internal/service/namespace_test.go b/compose/internal/service/namespace_test.go index 2fb3fc842..fc3eea4d5 100644 --- a/compose/internal/service/namespace_test.go +++ b/compose/internal/service/namespace_test.go @@ -8,9 +8,9 @@ import ( "github.com/titpetric/factory" - "github.com/crusttech/crust/compose/types" - "github.com/crusttech/crust/internal/auth" - "github.com/crusttech/crust/internal/test" + "github.com/cortezaproject/corteza-server/compose/types" + "github.com/cortezaproject/corteza-server/internal/auth" + "github.com/cortezaproject/corteza-server/internal/test" ) func TestNamespace(t *testing.T) { diff --git a/compose/internal/service/notification.go b/compose/internal/service/notification.go index 84ef6589a..7ba1ed46c 100644 --- a/compose/internal/service/notification.go +++ b/compose/internal/service/notification.go @@ -6,11 +6,9 @@ import ( "github.com/pkg/errors" "go.uber.org/zap" - "go.uber.org/zap/zapcore" gomail "gopkg.in/mail.v2" - "github.com/crusttech/crust/internal/logger" - "github.com/crusttech/crust/internal/mail" + "github.com/cortezaproject/corteza-server/internal/mail" ) type ( @@ -41,9 +39,9 @@ func (svc notification) With(ctx context.Context) NotificationService { } // log() returns zap's logger with requestID from current context and fields. -func (svc notification) log(fields ...zapcore.Field) *zap.Logger { - return logger.AddRequestID(svc.ctx, svc.logger).With(fields...) -} +// func (svc notification) log(fields ...zapcore.Field) *zap.Logger { +// return logger.AddRequestID(svc.ctx, svc.logger).With(fields...) +// } func (svc notification) SendEmail(message *gomail.Message) error { return mail.Send(message) diff --git a/compose/internal/service/page.go b/compose/internal/service/page.go index fadb3ef45..a9459e232 100644 --- a/compose/internal/service/page.go +++ b/compose/internal/service/page.go @@ -6,11 +6,9 @@ import ( "github.com/pkg/errors" "github.com/titpetric/factory" "go.uber.org/zap" - "go.uber.org/zap/zapcore" - "github.com/crusttech/crust/compose/internal/repository" - "github.com/crusttech/crust/compose/types" - "github.com/crusttech/crust/internal/logger" + "github.com/cortezaproject/corteza-server/compose/internal/repository" + "github.com/cortezaproject/corteza-server/compose/types" ) type ( @@ -74,9 +72,9 @@ func (svc page) With(ctx context.Context) PageService { } // log() returns zap's logger with requestID from current context and fields. -func (svc page) log(fields ...zapcore.Field) *zap.Logger { - return logger.AddRequestID(svc.ctx, svc.logger).With(fields...) -} +// func (svc page) log(fields ...zapcore.Field) *zap.Logger { +// return logger.AddRequestID(svc.ctx, svc.logger).With(fields...) +// } func (svc page) FindByID(namespaceID, pageID uint64) (p *types.Page, err error) { return svc.checkPermissions(svc.pageRepo.FindByID(namespaceID, pageID)) diff --git a/compose/internal/service/page_test.go b/compose/internal/service/page_test.go index b895ec920..258a0148e 100644 --- a/compose/internal/service/page_test.go +++ b/compose/internal/service/page_test.go @@ -10,9 +10,9 @@ import ( "github.com/pkg/errors" "github.com/titpetric/factory" - "github.com/crusttech/crust/compose/types" - "github.com/crusttech/crust/internal/auth" - "github.com/crusttech/crust/internal/test" + "github.com/cortezaproject/corteza-server/compose/types" + "github.com/cortezaproject/corteza-server/internal/auth" + "github.com/cortezaproject/corteza-server/internal/test" ) func TestPage(t *testing.T) { diff --git a/compose/internal/service/record.go b/compose/internal/service/record.go index 4409ee8f6..0825bcd43 100644 --- a/compose/internal/service/record.go +++ b/compose/internal/service/record.go @@ -8,12 +8,10 @@ import ( "github.com/pkg/errors" "github.com/titpetric/factory" "go.uber.org/zap" - "go.uber.org/zap/zapcore" - "github.com/crusttech/crust/compose/internal/repository" - "github.com/crusttech/crust/compose/types" - "github.com/crusttech/crust/internal/auth" - "github.com/crusttech/crust/internal/logger" + "github.com/cortezaproject/corteza-server/compose/internal/repository" + "github.com/cortezaproject/corteza-server/compose/types" + "github.com/cortezaproject/corteza-server/internal/auth" ) type ( @@ -77,9 +75,9 @@ func (svc record) With(ctx context.Context) RecordService { } // log() returns zap's logger with requestID from current context and fields. -func (svc record) log(fields ...zapcore.Field) *zap.Logger { - return logger.AddRequestID(svc.ctx, svc.logger).With(fields...) -} +// func (svc record) log(fields ...zapcore.Field) *zap.Logger { +// return logger.AddRequestID(svc.ctx, svc.logger).With(fields...) +// } func (svc record) FindByID(namespaceID, recordID uint64) (r *types.Record, err error) { if namespaceID == 0 { diff --git a/compose/internal/service/record_test.go b/compose/internal/service/record_test.go index 43f010541..39f49f95f 100644 --- a/compose/internal/service/record_test.go +++ b/compose/internal/service/record_test.go @@ -8,10 +8,10 @@ import ( "github.com/titpetric/factory" - "github.com/crusttech/crust/compose/types" - "github.com/crusttech/crust/internal/auth" - "github.com/crusttech/crust/internal/permissions" - "github.com/crusttech/crust/internal/test" + "github.com/cortezaproject/corteza-server/compose/types" + "github.com/cortezaproject/corteza-server/internal/auth" + "github.com/cortezaproject/corteza-server/internal/permissions" + "github.com/cortezaproject/corteza-server/internal/test" ) func TestRecord(t *testing.T) { diff --git a/compose/internal/service/service.go b/compose/internal/service/service.go index fb48faf3c..96d498aeb 100644 --- a/compose/internal/service/service.go +++ b/compose/internal/service/service.go @@ -6,17 +6,13 @@ import ( "go.uber.org/zap" - "github.com/crusttech/crust/compose/internal/repository" - "github.com/crusttech/crust/internal/logger" - "github.com/crusttech/crust/internal/permissions" - "github.com/crusttech/crust/internal/store" + "github.com/cortezaproject/corteza-server/compose/internal/repository" + "github.com/cortezaproject/corteza-server/internal/logger" + "github.com/cortezaproject/corteza-server/internal/permissions" + "github.com/cortezaproject/corteza-server/internal/store" ) type ( - db interface { - Transaction(callback func() error) error - } - permissionServicer interface { accessControlPermissionServicer Watch(ctx context.Context) @@ -24,7 +20,7 @@ type ( ) var ( - permSvc permissionServicer + DefaultPermissions permissionServicer DefaultLogger *zap.Logger @@ -48,12 +44,12 @@ func Init(ctx context.Context) error { return err } - permSvc = permissions.Service( + DefaultPermissions = permissions.Service( ctx, DefaultLogger, permissions.Repository(repository.DB(ctx), "compose_permission_rules")) - DefaultAccessControl = AccessControl(permSvc) + DefaultAccessControl = AccessControl(DefaultPermissions) DefaultRecord = Record() DefaultModule = Module() @@ -67,10 +63,6 @@ func Init(ctx context.Context) error { return nil } -func Watchers(ctx context.Context) { - permSvc.Watch(ctx) -} - // Data is stale when new date does not match updatedAt or createdAt (before first update) func isStale(new *time.Time, updatedAt *time.Time, createdAt time.Time) bool { if new == nil { diff --git a/compose/internal/service/trigger.go b/compose/internal/service/trigger.go index debf90309..fe5152f56 100644 --- a/compose/internal/service/trigger.go +++ b/compose/internal/service/trigger.go @@ -5,11 +5,9 @@ import ( "github.com/titpetric/factory" "go.uber.org/zap" - "go.uber.org/zap/zapcore" - "github.com/crusttech/crust/compose/internal/repository" - "github.com/crusttech/crust/compose/types" - "github.com/crusttech/crust/internal/logger" + "github.com/cortezaproject/corteza-server/compose/internal/repository" + "github.com/cortezaproject/corteza-server/compose/types" ) type ( @@ -66,9 +64,9 @@ func (svc trigger) With(ctx context.Context) TriggerService { } // log() returns zap's logger with requestID from current context and fields. -func (svc trigger) log(fields ...zapcore.Field) *zap.Logger { - return logger.AddRequestID(svc.ctx, svc.logger).With(fields...) -} +// func (svc trigger) log(fields ...zapcore.Field) *zap.Logger { +// return logger.AddRequestID(svc.ctx, svc.logger).With(fields...) +// } func (svc trigger) FindByID(namespaceID, triggerID uint64) (t *types.Trigger, err error) { if namespaceID == 0 { diff --git a/compose/internal/service/trigger_test.go b/compose/internal/service/trigger_test.go index 056b6a6f2..61515da81 100644 --- a/compose/internal/service/trigger_test.go +++ b/compose/internal/service/trigger_test.go @@ -9,9 +9,9 @@ import ( "github.com/pkg/errors" "github.com/titpetric/factory" - "github.com/crusttech/crust/compose/types" - "github.com/crusttech/crust/internal/auth" - "github.com/crusttech/crust/internal/test" + "github.com/cortezaproject/corteza-server/compose/types" + "github.com/cortezaproject/corteza-server/internal/auth" + "github.com/cortezaproject/corteza-server/internal/test" ) func TestTrigger(t *testing.T) { diff --git a/compose/provision.go b/compose/provision.go deleted file mode 100644 index 409aa64da..000000000 --- a/compose/provision.go +++ /dev/null @@ -1,26 +0,0 @@ -package service - -import ( - "context" - - "github.com/crusttech/crust/compose/internal/service" -) - -// Provision orchestrates various tasks after deployment -// -func Provision(ctx context.Context) (err error) { - if err = resetDefaultPermissionRules(ctx); err != nil { - return - } - - // @todo move migration here - - return -} - -// Resets default permission rules for compose resources -func resetDefaultPermissionRules(ctx context.Context) error { - var ac = service.DefaultAccessControl - - return ac.Grant(ctx, ac.DefaultRules()...) -} diff --git a/compose/rest/attachment.go b/compose/rest/attachment.go index 4e25dcd53..175c6f63e 100644 --- a/compose/rest/attachment.go +++ b/compose/rest/attachment.go @@ -9,10 +9,10 @@ import ( "github.com/titpetric/factory/resputil" - "github.com/crusttech/crust/compose/internal/service" - "github.com/crusttech/crust/compose/rest/request" - "github.com/crusttech/crust/compose/types" - "github.com/crusttech/crust/internal/auth" + "github.com/cortezaproject/corteza-server/compose/internal/service" + "github.com/cortezaproject/corteza-server/compose/rest/request" + "github.com/cortezaproject/corteza-server/compose/types" + "github.com/cortezaproject/corteza-server/internal/auth" "github.com/pkg/errors" ) diff --git a/compose/rest/chart.go b/compose/rest/chart.go index 7b3164c53..3716b8a7d 100644 --- a/compose/rest/chart.go +++ b/compose/rest/chart.go @@ -5,9 +5,9 @@ import ( "github.com/titpetric/factory/resputil" - "github.com/crusttech/crust/compose/internal/service" - "github.com/crusttech/crust/compose/rest/request" - "github.com/crusttech/crust/compose/types" + "github.com/cortezaproject/corteza-server/compose/internal/service" + "github.com/cortezaproject/corteza-server/compose/rest/request" + "github.com/cortezaproject/corteza-server/compose/types" "github.com/pkg/errors" ) diff --git a/compose/rest/handlers/attachment.go b/compose/rest/handlers/attachment.go index 5aa3ca824..0c73bed23 100644 --- a/compose/rest/handlers/attachment.go +++ b/compose/rest/handlers/attachment.go @@ -23,8 +23,8 @@ import ( "github.com/go-chi/chi" "github.com/titpetric/factory/resputil" - "github.com/crusttech/crust/compose/rest/request" - "github.com/crusttech/crust/internal/logger" + "github.com/cortezaproject/corteza-server/compose/rest/request" + "github.com/cortezaproject/corteza-server/internal/logger" ) // Internal API interface diff --git a/compose/rest/handlers/chart.go b/compose/rest/handlers/chart.go index 3514b9683..123283ee3 100644 --- a/compose/rest/handlers/chart.go +++ b/compose/rest/handlers/chart.go @@ -23,8 +23,8 @@ import ( "github.com/go-chi/chi" "github.com/titpetric/factory/resputil" - "github.com/crusttech/crust/compose/rest/request" - "github.com/crusttech/crust/internal/logger" + "github.com/cortezaproject/corteza-server/compose/rest/request" + "github.com/cortezaproject/corteza-server/internal/logger" ) // Internal API interface diff --git a/compose/rest/handlers/module.go b/compose/rest/handlers/module.go index 8144a177a..bbe30cdac 100644 --- a/compose/rest/handlers/module.go +++ b/compose/rest/handlers/module.go @@ -23,8 +23,8 @@ import ( "github.com/go-chi/chi" "github.com/titpetric/factory/resputil" - "github.com/crusttech/crust/compose/rest/request" - "github.com/crusttech/crust/internal/logger" + "github.com/cortezaproject/corteza-server/compose/rest/request" + "github.com/cortezaproject/corteza-server/internal/logger" ) // Internal API interface diff --git a/compose/rest/handlers/namespace.go b/compose/rest/handlers/namespace.go index ecfeb75d1..34e6d2a0a 100644 --- a/compose/rest/handlers/namespace.go +++ b/compose/rest/handlers/namespace.go @@ -23,8 +23,8 @@ import ( "github.com/go-chi/chi" "github.com/titpetric/factory/resputil" - "github.com/crusttech/crust/compose/rest/request" - "github.com/crusttech/crust/internal/logger" + "github.com/cortezaproject/corteza-server/compose/rest/request" + "github.com/cortezaproject/corteza-server/internal/logger" ) // Internal API interface diff --git a/compose/rest/handlers/notification.go b/compose/rest/handlers/notification.go index 2dfe375fa..0673599d4 100644 --- a/compose/rest/handlers/notification.go +++ b/compose/rest/handlers/notification.go @@ -23,8 +23,8 @@ import ( "github.com/go-chi/chi" "github.com/titpetric/factory/resputil" - "github.com/crusttech/crust/compose/rest/request" - "github.com/crusttech/crust/internal/logger" + "github.com/cortezaproject/corteza-server/compose/rest/request" + "github.com/cortezaproject/corteza-server/internal/logger" ) // Internal API interface diff --git a/compose/rest/handlers/page.go b/compose/rest/handlers/page.go index bf9b991c9..0c431513b 100644 --- a/compose/rest/handlers/page.go +++ b/compose/rest/handlers/page.go @@ -23,8 +23,8 @@ import ( "github.com/go-chi/chi" "github.com/titpetric/factory/resputil" - "github.com/crusttech/crust/compose/rest/request" - "github.com/crusttech/crust/internal/logger" + "github.com/cortezaproject/corteza-server/compose/rest/request" + "github.com/cortezaproject/corteza-server/internal/logger" ) // Internal API interface diff --git a/compose/rest/handlers/permissions.go b/compose/rest/handlers/permissions.go index ec3d51177..1ab8cb3ef 100644 --- a/compose/rest/handlers/permissions.go +++ b/compose/rest/handlers/permissions.go @@ -23,8 +23,8 @@ import ( "github.com/go-chi/chi" "github.com/titpetric/factory/resputil" - "github.com/crusttech/crust/compose/rest/request" - "github.com/crusttech/crust/internal/logger" + "github.com/cortezaproject/corteza-server/compose/rest/request" + "github.com/cortezaproject/corteza-server/internal/logger" ) // Internal API interface diff --git a/compose/rest/handlers/record.go b/compose/rest/handlers/record.go index 2d83c51ff..88fc8869b 100644 --- a/compose/rest/handlers/record.go +++ b/compose/rest/handlers/record.go @@ -23,8 +23,8 @@ import ( "github.com/go-chi/chi" "github.com/titpetric/factory/resputil" - "github.com/crusttech/crust/compose/rest/request" - "github.com/crusttech/crust/internal/logger" + "github.com/cortezaproject/corteza-server/compose/rest/request" + "github.com/cortezaproject/corteza-server/internal/logger" ) // Internal API interface diff --git a/compose/rest/handlers/trigger.go b/compose/rest/handlers/trigger.go index e09b26078..4000f4a54 100644 --- a/compose/rest/handlers/trigger.go +++ b/compose/rest/handlers/trigger.go @@ -23,8 +23,8 @@ import ( "github.com/go-chi/chi" "github.com/titpetric/factory/resputil" - "github.com/crusttech/crust/compose/rest/request" - "github.com/crusttech/crust/internal/logger" + "github.com/cortezaproject/corteza-server/compose/rest/request" + "github.com/cortezaproject/corteza-server/internal/logger" ) // Internal API interface diff --git a/compose/rest/middleware.go b/compose/rest/middleware.go index e8080daae..f0e81c127 100644 --- a/compose/rest/middleware.go +++ b/compose/rest/middleware.go @@ -3,7 +3,7 @@ package rest import ( "net/http" - "github.com/crusttech/crust/compose/internal/service" + "github.com/cortezaproject/corteza-server/compose/internal/service" ) func middlewareAllowedAccess(next http.Handler) http.Handler { diff --git a/compose/rest/module.go b/compose/rest/module.go index 9df1c6288..c92d4037e 100644 --- a/compose/rest/module.go +++ b/compose/rest/module.go @@ -5,9 +5,9 @@ import ( "github.com/titpetric/factory/resputil" - "github.com/crusttech/crust/compose/internal/service" - "github.com/crusttech/crust/compose/rest/request" - "github.com/crusttech/crust/compose/types" + "github.com/cortezaproject/corteza-server/compose/internal/service" + "github.com/cortezaproject/corteza-server/compose/rest/request" + "github.com/cortezaproject/corteza-server/compose/types" ) type ( diff --git a/compose/rest/namespace.go b/compose/rest/namespace.go index 86bd1a10f..6a08a05b9 100644 --- a/compose/rest/namespace.go +++ b/compose/rest/namespace.go @@ -5,9 +5,9 @@ import ( "github.com/titpetric/factory/resputil" - "github.com/crusttech/crust/compose/internal/service" - "github.com/crusttech/crust/compose/rest/request" - "github.com/crusttech/crust/compose/types" + "github.com/cortezaproject/corteza-server/compose/internal/service" + "github.com/cortezaproject/corteza-server/compose/rest/request" + "github.com/cortezaproject/corteza-server/compose/types" ) type ( diff --git a/compose/rest/notification.go b/compose/rest/notification.go index 52a9f706c..62a9d2a74 100644 --- a/compose/rest/notification.go +++ b/compose/rest/notification.go @@ -3,9 +3,9 @@ package rest import ( "context" - "github.com/crusttech/crust/compose/internal/service" - "github.com/crusttech/crust/compose/rest/request" - "github.com/crusttech/crust/internal/mail" + "github.com/cortezaproject/corteza-server/compose/internal/service" + "github.com/cortezaproject/corteza-server/compose/rest/request" + "github.com/cortezaproject/corteza-server/internal/mail" "github.com/pkg/errors" ) diff --git a/compose/rest/page.go b/compose/rest/page.go index d9820a8d9..9ad42bd29 100644 --- a/compose/rest/page.go +++ b/compose/rest/page.go @@ -5,10 +5,10 @@ import ( "github.com/titpetric/factory/resputil" - "github.com/crusttech/crust/compose/internal/service" - "github.com/crusttech/crust/compose/rest/request" - "github.com/crusttech/crust/compose/types" - "github.com/crusttech/crust/internal/payload" + "github.com/cortezaproject/corteza-server/compose/internal/service" + "github.com/cortezaproject/corteza-server/compose/rest/request" + "github.com/cortezaproject/corteza-server/compose/types" + "github.com/cortezaproject/corteza-server/internal/payload" ) type ( diff --git a/compose/rest/permissions.go b/compose/rest/permissions.go index 1da2c13da..66799d18f 100644 --- a/compose/rest/permissions.go +++ b/compose/rest/permissions.go @@ -5,9 +5,9 @@ import ( "github.com/titpetric/factory/resputil" - "github.com/crusttech/crust/compose/internal/service" - "github.com/crusttech/crust/compose/rest/request" - "github.com/crusttech/crust/internal/permissions" + "github.com/cortezaproject/corteza-server/compose/internal/service" + "github.com/cortezaproject/corteza-server/compose/rest/request" + "github.com/cortezaproject/corteza-server/internal/permissions" ) type ( diff --git a/compose/rest/record.go b/compose/rest/record.go index 4fe9ef21b..39086b76f 100644 --- a/compose/rest/record.go +++ b/compose/rest/record.go @@ -7,9 +7,9 @@ import ( "github.com/pkg/errors" - "github.com/crusttech/crust/compose/internal/service" - "github.com/crusttech/crust/compose/rest/request" - "github.com/crusttech/crust/compose/types" + "github.com/cortezaproject/corteza-server/compose/internal/service" + "github.com/cortezaproject/corteza-server/compose/rest/request" + "github.com/cortezaproject/corteza-server/compose/types" ) var _ = errors.Wrap diff --git a/compose/rest/request/module.go b/compose/rest/request/module.go index 7a6a4263b..988b61e36 100644 --- a/compose/rest/request/module.go +++ b/compose/rest/request/module.go @@ -26,9 +26,10 @@ import ( "github.com/go-chi/chi" "github.com/pkg/errors" - "github.com/crusttech/crust/compose/types" - sqlxTypes "github.com/jmoiron/sqlx/types" "time" + + "github.com/cortezaproject/corteza-server/compose/types" + sqlxTypes "github.com/jmoiron/sqlx/types" ) var _ = chi.URLParam diff --git a/compose/rest/request/permissions.go b/compose/rest/request/permissions.go index e270f9a08..4a0e7116f 100644 --- a/compose/rest/request/permissions.go +++ b/compose/rest/request/permissions.go @@ -26,7 +26,7 @@ import ( "github.com/go-chi/chi" "github.com/pkg/errors" - "github.com/crusttech/crust/internal/permissions" + "github.com/cortezaproject/corteza-server/internal/permissions" ) var _ = chi.URLParam diff --git a/compose/rest/request/record.go b/compose/rest/request/record.go index ee42a7e46..7eb07b738 100644 --- a/compose/rest/request/record.go +++ b/compose/rest/request/record.go @@ -26,7 +26,7 @@ import ( "github.com/go-chi/chi" "github.com/pkg/errors" - "github.com/crusttech/crust/compose/types" + "github.com/cortezaproject/corteza-server/compose/types" ) var _ = chi.URLParam diff --git a/compose/rest/request/util.go b/compose/rest/request/util.go index fc9a011d5..40faa24fb 100644 --- a/compose/rest/request/util.go +++ b/compose/rest/request/util.go @@ -1,5 +1,7 @@ package request +//lint:file-ignore U1000 Ignore unused code, part of request pkg toolset + import ( "regexp" "strconv" @@ -10,7 +12,7 @@ import ( "github.com/pkg/errors" ) -var truthy = regexp.MustCompile("^\\s*(t(rue)?|y(es)?|1)\\s*$") +var truthy = regexp.MustCompile(`^\s*(t(rue)?|y(es)?|1)\s*$`) func parseJSONTextWithErr(s string) (types.JSONText, error) { result := &types.JSONText{} @@ -69,7 +71,7 @@ func parseUInt64(s string) uint64 { func parseUInt64A(values []string) []uint64 { var result []uint64 - if values != nil && len(values) > 0 { + if len(values) > 0 { for _, val := range values { result = append(result, parseUInt64(val)) } diff --git a/compose/rest/router.go b/compose/rest/router.go index ebbbcad76..58acef364 100644 --- a/compose/rest/router.go +++ b/compose/rest/router.go @@ -3,11 +3,11 @@ package rest import ( "github.com/go-chi/chi" - "github.com/crusttech/crust/compose/rest/handlers" - "github.com/crusttech/crust/internal/auth" + "github.com/cortezaproject/corteza-server/compose/rest/handlers" + "github.com/cortezaproject/corteza-server/internal/auth" ) -func MountRoutes() func(chi.Router) { +func MountRoutes(r chi.Router) { var ( namespace = Namespace{}.New() module = Module{}.New() @@ -20,27 +20,24 @@ func MountRoutes() func(chi.Router) { ) // Initialize handlers & controllers. - return func(r chi.Router) { + r.Group(func(r chi.Router) { + handlers.NewPermissions(Permissions{}.New()).MountRoutes(r) + }) - r.Group(func(r chi.Router) { - handlers.NewPermissions(Permissions{}.New()).MountRoutes(r) - }) + // Protect all _private_ routes + r.Group(func(r chi.Router) { + r.Use(auth.MiddlewareValidOnly) + r.Use(middlewareAllowedAccess) - // Protect all _private_ routes - r.Group(func(r chi.Router) { - r.Use(auth.MiddlewareValidOnly) - r.Use(middlewareAllowedAccess) + handlers.NewNamespace(namespace).MountRoutes(r) + handlers.NewPage(page).MountRoutes(r) + handlers.NewModule(module).MountRoutes(r) + handlers.NewRecord(record).MountRoutes(r) + handlers.NewChart(chart).MountRoutes(r) + handlers.NewTrigger(trigger).MountRoutes(r) + handlers.NewNotification(notification).MountRoutes(r) + }) - handlers.NewNamespace(namespace).MountRoutes(r) - handlers.NewPage(page).MountRoutes(r) - handlers.NewModule(module).MountRoutes(r) - handlers.NewRecord(record).MountRoutes(r) - handlers.NewChart(chart).MountRoutes(r) - handlers.NewTrigger(trigger).MountRoutes(r) - handlers.NewNotification(notification).MountRoutes(r) - }) - - // Use alternative handlers that support file serving - handlers.NewAttachment(attachment).MountRoutes(r) - } + // Use alternative handlers that support file serving + handlers.NewAttachment(attachment).MountRoutes(r) } diff --git a/compose/rest/trigger.go b/compose/rest/trigger.go index 0fbd58765..c1e37395c 100644 --- a/compose/rest/trigger.go +++ b/compose/rest/trigger.go @@ -5,9 +5,9 @@ import ( "github.com/titpetric/factory/resputil" - "github.com/crusttech/crust/compose/internal/service" - "github.com/crusttech/crust/compose/rest/request" - "github.com/crusttech/crust/compose/types" + "github.com/cortezaproject/corteza-server/compose/internal/service" + "github.com/cortezaproject/corteza-server/compose/rest/request" + "github.com/cortezaproject/corteza-server/compose/types" ) type ( diff --git a/compose/routes.go b/compose/routes.go deleted file mode 100644 index f3faadb56..000000000 --- a/compose/routes.go +++ /dev/null @@ -1,37 +0,0 @@ -package service - -import ( - "context" - - "github.com/go-chi/chi" - - "github.com/crusttech/crust/compose/rest" - "github.com/crusttech/crust/internal/auth" - "github.com/crusttech/crust/internal/config" - "github.com/crusttech/crust/internal/middleware" -) - -func Routes(ctx context.Context) *chi.Mux { - r := chi.NewRouter() - middleware.Mount(ctx, r, flags.http) - MountRoutes(ctx, r) - middleware.MountSystemRoutes(ctx, r, flags.http) - return r -} - -func MountRoutes(ctx context.Context, r chi.Router) { - // Only protect application routes with JWT - r.Group(func(r chi.Router) { - r.Use( - auth.DefaultJwtHandler.Verifier(), - auth.DefaultJwtHandler.Authenticator(), - ) - mountRoutes(r, flags.http, rest.MountRoutes()) - }) -} - -func mountRoutes(r chi.Router, opts *config.HTTP, mounts ...func(r chi.Router)) { - for _, mount := range mounts { - mount(r) - } -} diff --git a/compose/start.go b/compose/start.go deleted file mode 100644 index 5a3e53b3a..000000000 --- a/compose/start.go +++ /dev/null @@ -1,86 +0,0 @@ -package service - -import ( - "context" - "fmt" - "net" - "net/http" - - "github.com/pkg/errors" - "github.com/titpetric/factory/resputil" - "go.uber.org/zap" - - migrate "github.com/crusttech/crust/compose/db" - "github.com/crusttech/crust/compose/internal/service" - "github.com/crusttech/crust/internal/auth" - "github.com/crusttech/crust/internal/db" - "github.com/crusttech/crust/internal/logger" - "github.com/crusttech/crust/internal/mail" - "github.com/crusttech/crust/internal/metrics" -) - -func Init(ctx context.Context) (err error) { - // validate configuration - if err = flags.Validate(); err != nil { - return - } - - mail.SetupDialer(flags.smtp) - - if err = InitDatabase(ctx); err != nil { - return - } - - // configure resputil options - resputil.SetConfig(resputil.Options{ - Pretty: flags.http.Pretty, - Trace: flags.http.Tracing, - Logger: func(err error) {}, - }) - - // Use JWT secret for hmac signer for now - auth.DefaultSigner = auth.HmacSigner(flags.jwt.Secret) - auth.DefaultJwtHandler, err = auth.JWT(flags.jwt.Secret, flags.jwt.Expiry) - if err != nil { - return err - } - - // Don't change this to init(), it needs Database - return service.Init(ctx) -} - -func InitDatabase(ctx context.Context) error { - // start/configure database connection - db, err := db.TryToConnect(ctx, "compose", flags.db.DSN, flags.db.Profiler) - if err != nil { - return errors.Wrap(err, "could not connect to database") - } - - // migrate database schema - if err := migrate.Migrate(db); err != nil { - return err - } - - return nil -} - -func StartWatchers(ctx context.Context) { - service.Watchers(ctx) -} - -func StartRestAPI(ctx context.Context) error { - logger.Default().Info("Starting HTTP server", zap.String("address", flags.http.Addr)) - listener, err := net.Listen("tcp", flags.http.Addr) - if err != nil { - return errors.Wrap(err, fmt.Sprintf("Can't listen on addr %s", flags.http.Addr)) - } - - if flags.monitor.Interval > 0 { - go metrics.NewMonitor(flags.monitor.Interval) - } - - go http.Serve(listener, Routes(ctx)) - <-ctx.Done() - - return nil -} diff --git a/compose/types/attachment.gen_test.go b/compose/types/attachment.gen_test.go index 5da0d52e4..8a298f7db 100644 --- a/compose/types/attachment.gen_test.go +++ b/compose/types/attachment.gen_test.go @@ -5,7 +5,7 @@ import ( "errors" - "github.com/crusttech/crust/internal/test" + "github.com/cortezaproject/corteza-server/internal/test" ) // Hello! This file is auto-generated. diff --git a/compose/types/attachment.go b/compose/types/attachment.go index f23028e75..4f204cfa5 100644 --- a/compose/types/attachment.go +++ b/compose/types/attachment.go @@ -91,6 +91,7 @@ func (a *Attachment) imageMeta(in *attachmentFileMeta, width, height int, animat } func (meta *attachmentMeta) Scan(value interface{}) error { + //lint:ignore S1034 This typecast is intentional, we need to get []byte out of a []uint8 switch value.(type) { case nil: *meta = attachmentMeta{} diff --git a/compose/types/chart.gen_test.go b/compose/types/chart.gen_test.go index 60b662e88..12cbe2a8c 100644 --- a/compose/types/chart.gen_test.go +++ b/compose/types/chart.gen_test.go @@ -5,7 +5,7 @@ import ( "errors" - "github.com/crusttech/crust/internal/test" + "github.com/cortezaproject/corteza-server/internal/test" ) // Hello! This file is auto-generated. diff --git a/compose/types/chart.go b/compose/types/chart.go index a2b6ba000..d2e94f131 100644 --- a/compose/types/chart.go +++ b/compose/types/chart.go @@ -3,7 +3,7 @@ package types import ( "time" - "github.com/crusttech/crust/internal/permissions" + "github.com/cortezaproject/corteza-server/internal/permissions" "github.com/jmoiron/sqlx/types" ) diff --git a/compose/types/module.gen_test.go b/compose/types/module.gen_test.go index 9d17e9b10..dc562dc6a 100644 --- a/compose/types/module.gen_test.go +++ b/compose/types/module.gen_test.go @@ -5,7 +5,7 @@ import ( "errors" - "github.com/crusttech/crust/internal/test" + "github.com/cortezaproject/corteza-server/internal/test" ) // Hello! This file is auto-generated. diff --git a/compose/types/module.go b/compose/types/module.go index 5d8cdcb5b..218bd6800 100644 --- a/compose/types/module.go +++ b/compose/types/module.go @@ -3,7 +3,7 @@ package types import ( "time" - "github.com/crusttech/crust/internal/permissions" + "github.com/cortezaproject/corteza-server/internal/permissions" "github.com/jmoiron/sqlx/types" ) diff --git a/compose/types/module_field.gen_test.go b/compose/types/module_field.gen_test.go index ea94af458..b0839386b 100644 --- a/compose/types/module_field.gen_test.go +++ b/compose/types/module_field.gen_test.go @@ -5,7 +5,7 @@ import ( "errors" - "github.com/crusttech/crust/internal/test" + "github.com/cortezaproject/corteza-server/internal/test" ) // Hello! This file is auto-generated. diff --git a/compose/types/module_field.go b/compose/types/module_field.go index 088e917ed..573bb25f4 100644 --- a/compose/types/module_field.go +++ b/compose/types/module_field.go @@ -7,7 +7,7 @@ import ( "github.com/jmoiron/sqlx/types" - "github.com/crusttech/crust/internal/permissions" + "github.com/cortezaproject/corteza-server/internal/permissions" ) type ( diff --git a/compose/types/namespace.gen_test.go b/compose/types/namespace.gen_test.go index 3043d9d90..ccf27330c 100644 --- a/compose/types/namespace.gen_test.go +++ b/compose/types/namespace.gen_test.go @@ -5,7 +5,7 @@ import ( "errors" - "github.com/crusttech/crust/internal/test" + "github.com/cortezaproject/corteza-server/internal/test" ) // Hello! This file is auto-generated. diff --git a/compose/types/namespace.go b/compose/types/namespace.go index a91224d87..b08c61df8 100644 --- a/compose/types/namespace.go +++ b/compose/types/namespace.go @@ -3,7 +3,7 @@ package types import ( "time" - "github.com/crusttech/crust/internal/permissions" + "github.com/cortezaproject/corteza-server/internal/permissions" "github.com/jmoiron/sqlx/types" ) diff --git a/compose/types/page.gen_test.go b/compose/types/page.gen_test.go index 72cc8bc08..99e50272e 100644 --- a/compose/types/page.gen_test.go +++ b/compose/types/page.gen_test.go @@ -5,7 +5,7 @@ import ( "errors" - "github.com/crusttech/crust/internal/test" + "github.com/cortezaproject/corteza-server/internal/test" ) // Hello! This file is auto-generated. diff --git a/compose/types/page.go b/compose/types/page.go index 2c5bf63e8..a2f51c93c 100644 --- a/compose/types/page.go +++ b/compose/types/page.go @@ -3,7 +3,7 @@ package types import ( "time" - "github.com/crusttech/crust/internal/permissions" + "github.com/cortezaproject/corteza-server/internal/permissions" "github.com/jmoiron/sqlx/types" ) diff --git a/compose/types/permission_resources.go b/compose/types/permission_resources.go index a968d3052..060005326 100644 --- a/compose/types/permission_resources.go +++ b/compose/types/permission_resources.go @@ -1,7 +1,7 @@ package types import ( - "github.com/crusttech/crust/internal/permissions" + "github.com/cortezaproject/corteza-server/internal/permissions" ) const ComposePermissionResource = permissions.Resource("compose") diff --git a/compose/types/record.gen_test.go b/compose/types/record.gen_test.go index 3a7c4ef91..cfbc7256c 100644 --- a/compose/types/record.gen_test.go +++ b/compose/types/record.gen_test.go @@ -5,7 +5,7 @@ import ( "errors" - "github.com/crusttech/crust/internal/test" + "github.com/cortezaproject/corteza-server/internal/test" ) // Hello! This file is auto-generated. diff --git a/compose/types/record.go b/compose/types/record.go index a376dc2fc..71bbecb19 100644 --- a/compose/types/record.go +++ b/compose/types/record.go @@ -3,7 +3,7 @@ package types import ( "time" - "github.com/crusttech/crust/internal/permissions" + "github.com/cortezaproject/corteza-server/internal/permissions" ) type ( @@ -19,7 +19,7 @@ type ( OwnedBy uint64 `db:"owned_by" json:"ownedBy,string"` CreatedAt time.Time `db:"created_at" json:"createdAt,omitempty"` CreatedBy uint64 `db:"created_by" json:"createdBy,string" ` - UpdatedAt *time.Time `db:"updated_at" json:"updatedAt,omitempty,omitempty"` + UpdatedAt *time.Time `db:"updated_at" json:"updatedAt,omitempty"` UpdatedBy uint64 `db:"updated_by" json:"updatedBy,string,omitempty" ` DeletedAt *time.Time `db:"deleted_at" json:"deletedAt,omitempty"` DeletedBy uint64 `db:"deleted_by" json:"deletedBy,string,omitempty" ` diff --git a/compose/types/record_value.gen_test.go b/compose/types/record_value.gen_test.go index 5a8d7c723..ab09aba93 100644 --- a/compose/types/record_value.gen_test.go +++ b/compose/types/record_value.gen_test.go @@ -5,7 +5,7 @@ import ( "errors" - "github.com/crusttech/crust/internal/test" + "github.com/cortezaproject/corteza-server/internal/test" ) // Hello! This file is auto-generated. diff --git a/compose/types/trigger.gen_test.go b/compose/types/trigger.gen_test.go index 5b7403bb2..ac4da168d 100644 --- a/compose/types/trigger.gen_test.go +++ b/compose/types/trigger.gen_test.go @@ -5,7 +5,7 @@ import ( "errors" - "github.com/crusttech/crust/internal/test" + "github.com/cortezaproject/corteza-server/internal/test" ) // Hello! This file is auto-generated. diff --git a/compose/types/trigger.go b/compose/types/trigger.go index 33e11a75c..816ce8ece 100644 --- a/compose/types/trigger.go +++ b/compose/types/trigger.go @@ -5,7 +5,7 @@ import ( "strings" "time" - "github.com/crusttech/crust/internal/permissions" + "github.com/cortezaproject/corteza-server/internal/permissions" ) type (