From 2094684d5b03841ea3409836e6282e7dd2be91b0 Mon Sep 17 00:00:00 2001 From: Denis Arh Date: Mon, 5 Aug 2019 14:25:34 +0200 Subject: [PATCH] Removing old trigger struct, svc, repo --- compose/internal/repository/trigger.go | 132 --------------------- compose/internal/service/access_control.go | 6 - compose/internal/service/record.go | 2 - compose/types/trigger.gen.go | 67 ----------- compose/types/trigger.gen_test.go | 91 -------------- compose/types/trigger.go | 130 -------------------- 6 files changed, 428 deletions(-) delete mode 100644 compose/internal/repository/trigger.go delete mode 100644 compose/types/trigger.gen.go delete mode 100644 compose/types/trigger.gen_test.go delete mode 100644 compose/types/trigger.go diff --git a/compose/internal/repository/trigger.go b/compose/internal/repository/trigger.go deleted file mode 100644 index db851812f..000000000 --- a/compose/internal/repository/trigger.go +++ /dev/null @@ -1,132 +0,0 @@ -package repository - -import ( - "context" - "time" - - "github.com/titpetric/factory" - "gopkg.in/Masterminds/squirrel.v1" - - "github.com/cortezaproject/corteza-server/compose/types" -) - -type ( - TriggerRepository interface { - With(ctx context.Context, db *factory.DB) TriggerRepository - - FindByID(namespaceID, triggerID uint64) (*types.Trigger, error) - Find(filter types.TriggerFilter) (set types.TriggerSet, f types.TriggerFilter, err error) - Create(mod *types.Trigger) (*types.Trigger, error) - Update(mod *types.Trigger) (*types.Trigger, error) - DeleteByID(namespaceID, triggerID uint64) error - } - - trigger struct { - *repository - } -) - -const ( - ErrTriggerNotFound = repositoryError("TriggerNotFound") -) - -func Trigger(ctx context.Context, db *factory.DB) TriggerRepository { - return (&trigger{}).With(ctx, db) -} - -func (r trigger) With(ctx context.Context, db *factory.DB) TriggerRepository { - return &trigger{ - repository: r.repository.With(ctx, db), - } -} - -func (r trigger) table() string { - return "compose_trigger" -} - -func (r trigger) columns() []string { - return []string{ - "id", "rel_namespace", "name", - "actions", "enabled", "source", "rel_module", - "created_at", "updated_at", "deleted_at", - } -} - -func (r trigger) query() squirrel.SelectBuilder { - return squirrel. - Select(). - From(r.table()). - Where("deleted_at IS NULL") -} - -func (r trigger) FindByID(namespaceID, triggerID uint64) (*types.Trigger, error) { - var ( - query = r.query(). - Columns(r.columns()...). - Where("id = ?", triggerID) - - c = &types.Trigger{} - ) - - if namespaceID > 0 { - query = query.Where("rel_namespace = ?", namespaceID) - } - - return c, isFound(r.fetchOne(c, query), c.ID > 0, ErrTriggerNotFound) -} - -func (r trigger) Find(filter types.TriggerFilter) (set types.TriggerSet, f types.TriggerFilter, err error) { - f = filter - - query := r.query() - - if filter.NamespaceID > 0 { - query = query.Where("rel_namespace = ?", filter.NamespaceID) - } - - if filter.ModuleID > 0 { - query = query.Where("rel_module = ?", filter.ModuleID) - } - - if f.Query != "" { - q := "%" + f.Query + "%" - query = query.Where("name like ?", q) - } - - if f.EnabledOnly { - query = query.Where("enabled") - } - - if f.Count, err = r.count(query); err != nil || f.Count == 0 { - return - } - - query = query. - Columns(r.columns()...). - OrderBy("id ASC") - - return set, f, r.fetchPaged(&set, query, f.Page, f.PerPage) -} - -func (r trigger) Create(mod *types.Trigger) (*types.Trigger, error) { - mod.ID = factory.Sonyflake.NextID() - mod.CreatedAt = time.Now().Truncate(time.Second) - - return mod, r.db().Insert(r.table(), mod) -} - -func (r trigger) Update(mod *types.Trigger) (*types.Trigger, error) { - now := time.Now().Truncate(time.Second) - mod.UpdatedAt = &now - return mod, r.db().Update(r.table(), mod, "id") -} - -func (r trigger) DeleteByID(namespaceID, triggerID uint64) error { - _, err := r.db().Exec( - "UPDATE "+r.table()+" SET deleted_at = NOW() WHERE rel_namespace = ? AND id = ?", - namespaceID, - triggerID, - ) - - return err -} diff --git a/compose/internal/service/access_control.go b/compose/internal/service/access_control.go index 72fdca181..75b35255b 100644 --- a/compose/internal/service/access_control.go +++ b/compose/internal/service/access_control.go @@ -180,7 +180,6 @@ func (svc accessControl) DefaultRules() permissions.RuleSet { namespaces = types.NamespacePermissionResource.AppendWildcard() modules = types.ModulePermissionResource.AppendWildcard() charts = types.ChartPermissionResource.AppendWildcard() - triggers = types.TriggerPermissionResource.AppendWildcard() pages = types.PagePermissionResource.AppendWildcard() allowAdm = func(res permissions.Resource, op permissions.Operation) *permissions.Rule { @@ -216,10 +215,6 @@ func (svc accessControl) DefaultRules() permissions.RuleSet { allowAdm(charts, "update"), allowAdm(charts, "delete"), - allowAdm(triggers, "read"), - allowAdm(triggers, "update"), - allowAdm(triggers, "delete"), - allowAdm(pages, "read"), allowAdm(pages, "update"), allowAdm(pages, "delete"), @@ -244,7 +239,6 @@ func (svc accessControl) Whitelist() permissions.Whitelist { "manage", "module.create", "chart.create", - "trigger.create", "page.create", ) diff --git a/compose/internal/service/record.go b/compose/internal/service/record.go index 84124655e..80e39b64f 100644 --- a/compose/internal/service/record.go +++ b/compose/internal/service/record.go @@ -27,7 +27,6 @@ type ( recordRepo repository.RecordRepository moduleRepo repository.ModuleRepository nsRepo repository.NamespaceRepository - tRepo repository.TriggerRepository } recordAccessController interface { @@ -95,7 +94,6 @@ func (svc record) With(ctx context.Context) RecordService { recordRepo: repository.Record(ctx, db), moduleRepo: repository.Module(ctx, db), nsRepo: repository.Namespace(ctx, db), - tRepo: repository.Trigger(ctx, db), } } diff --git a/compose/types/trigger.gen.go b/compose/types/trigger.gen.go deleted file mode 100644 index d2433a55c..000000000 --- a/compose/types/trigger.gen.go +++ /dev/null @@ -1,67 +0,0 @@ -package types - -// Hello! This file is auto-generated. - -type ( - - // TriggerSet slice of Trigger - // - // This type is auto-generated. - TriggerSet []*Trigger -) - -// Walk iterates through every slice item and calls w(Trigger) err -// -// This function is auto-generated. -func (set TriggerSet) Walk(w func(*Trigger) error) (err error) { - for i := range set { - if err = w(set[i]); err != nil { - return - } - } - - return -} - -// Filter iterates through every slice item, calls f(Trigger) (bool, err) and return filtered slice -// -// This function is auto-generated. -func (set TriggerSet) Filter(f func(*Trigger) (bool, error)) (out TriggerSet, err error) { - var ok bool - out = TriggerSet{} - for i := range set { - if ok, err = f(set[i]); err != nil { - return - } else if ok { - out = append(out, set[i]) - } - } - - return -} - -// FindByID finds items from slice by its ID property -// -// This function is auto-generated. -func (set TriggerSet) FindByID(ID uint64) *Trigger { - for i := range set { - if set[i].ID == ID { - return set[i] - } - } - - return nil -} - -// IDs returns a slice of uint64s from all items in the set -// -// This function is auto-generated. -func (set TriggerSet) IDs() (IDs []uint64) { - IDs = make([]uint64, len(set)) - - for i := range set { - IDs[i] = set[i].ID - } - - return -} diff --git a/compose/types/trigger.gen_test.go b/compose/types/trigger.gen_test.go deleted file mode 100644 index ac4da168d..000000000 --- a/compose/types/trigger.gen_test.go +++ /dev/null @@ -1,91 +0,0 @@ -package types - -import ( - "testing" - - "errors" - - "github.com/cortezaproject/corteza-server/internal/test" -) - -// Hello! This file is auto-generated. - -func TestTriggerSetWalk(t *testing.T) { - value := make(TriggerSet, 3) - - // check walk with no errors - { - err := value.Walk(func(*Trigger) error { - return nil - }) - test.NoError(t, err, "Expected no returned error from Walk, got %+v", err) - } - - // check walk with error - test.Error(t, value.Walk(func(*Trigger) error { return errors.New("Walk error") }), "Expected error from walk, got nil") -} - -func TestTriggerSetFilter(t *testing.T) { - value := make(TriggerSet, 3) - - // filter nothing - { - set, err := value.Filter(func(*Trigger) (bool, error) { - return true, nil - }) - test.NoError(t, err, "Didn't expect error when filtering set: %+v", err) - test.Assert(t, len(set) == len(value), "Expected equal length filter: %d != %d", len(value), len(set)) - } - - // filter one item - { - found := false - set, err := value.Filter(func(*Trigger) (bool, error) { - if !found { - found = true - return found, nil - } - return false, nil - }) - test.NoError(t, err, "Didn't expect error when filtering set: %+v", err) - test.Assert(t, len(set) == 1, "Expected single item, got %d", len(value)) - } - - // filter error - { - _, err := value.Filter(func(*Trigger) (bool, error) { - return false, errors.New("Filter error") - }) - test.Error(t, err, "Expected error, got %#v", err) - } -} - -func TestTriggerSetIDs(t *testing.T) { - value := make(TriggerSet, 3) - // construct objects - value[0] = new(Trigger) - value[1] = new(Trigger) - value[2] = new(Trigger) - // set ids - value[0].ID = 1 - value[1].ID = 2 - value[2].ID = 3 - - // Find existing - { - val := value.FindByID(2) - test.Assert(t, val.ID == 2, "Expected ID 2, got %d", val.ID) - } - - // Find non-existing - { - val := value.FindByID(4) - test.Assert(t, val == nil, "Expected no value, got %#v", val) - } - - // List IDs from set - { - val := value.IDs() - test.Assert(t, len(val) == len(value), "Expected ID count mismatch, %d != %d", len(val), len(value)) - } -} diff --git a/compose/types/trigger.go b/compose/types/trigger.go deleted file mode 100644 index c375d4bdf..000000000 --- a/compose/types/trigger.go +++ /dev/null @@ -1,130 +0,0 @@ -package types - -import ( - "database/sql/driver" - "fmt" - "strings" - "time" - - "github.com/cortezaproject/corteza-server/internal/permissions" -) - -type ( - ActionSet []string - - Trigger struct { - ID uint64 `json:"triggerID,string" db:"id"` - NamespaceID uint64 `json:"namespaceID,string" db:"rel_namespace"` - ModuleID uint64 `json:"moduleID,string,omitempty" db:"rel_module"` - Name string `json:"name" db:"name"` - Actions ActionSet `json:"actions" db:"actions"` - - Enabled bool `json:"enabled" db:"enabled"` - - // What is running this? browser? corredor? - Engine string `json:"engine" db:"engine"` - - Source string `json:"source" db:"source"` - - // Is execution of this script critical? - Critical bool `json:"critical" db:"critical"` - - // No need to wait for script to return the value - Async bool `json:"async" db:"async"` - - // Order in which script(s) will be executed - Weight int `json:"weight" db:"weight"` - - // Who is running this script? - // Leave it at 0 for the current user - RunAs uint64 `json:"runAs", db:"rel_runner"` - - // Are you doing something that can take more time? - // specify timeout (in secods) - Timeout uint32 `json:"timeout" db:"timeout"` - - CreatedAt time.Time `db:"created_at" json:"createdAt,omitempty"` - UpdatedAt *time.Time `db:"updated_at" json:"updatedAt,omitempty"` - DeletedAt *time.Time `db:"deleted_at" json:"deletedAt,omitempty"` - } - - TriggerFilter struct { - NamespaceID uint64 `json:"namespaceID,string"` - Query string `json:"query"` - EnabledOnly bool `json:"-"` - Page uint `json:"page"` - PerPage uint `json:"perPage"` - // Sort string `json:"sort"` - Count uint `json:"count"` - ModuleID uint64 `json:"moduleID,string"` - } -) - -func (t Trigger) IsCritical() bool { - return t.Critical -} - -func (t Trigger) IsAsync() bool { - return t.Async -} - -func (t Trigger) GetRunnerID() uint64 { - return t.RunAs -} - -func (t Trigger) GetTimeout() uint32 { - return t.Timeout -} - -func (t Trigger) GetName() string { - return fmt.Sprintf("%d %s", t.ID, t.Name) -} - -func (t Trigger) GetSource() string { - return t.Source -} - -func (set *ActionSet) Scan(src interface{}) error { - if ser, ok := src.([]uint8); ok { - var tmp = make([]string, 0) - for _, a := range strings.Split(string(ser), ",") { - if a = strings.TrimSpace(a); len(a) > 0 { - tmp = append(tmp, a) - } - } - - *set = ActionSet(tmp) - } - return nil -} - -func (set ActionSet) Value() (driver.Value, error) { - return strings.Trim(strings.Join(set, ","), " ,"), nil -} - -func (set ActionSet) Has(action ...string) bool { - for _, a := range set { - for _, i := range action { - if i == a { - return true - } - } - } - - return false -} - -func (set TriggerSet) WalkByAction(action string, fn func(t *Trigger) error) error { - return set.Walk(func(t *Trigger) error { - if !t.Actions.Has(action) { - return nil - } - - return fn(t) - }) -} - -// Resource returns a system resource ID for this type -func (t Trigger) PermissionResource() permissions.Resource { - return TriggerPermissionResource.AppendID(t.ID) -}