From 4dbd8bea88f0b2becf9ed2ea63d612c68208b65f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toma=C5=BE=20Jerman?= Date: Tue, 24 Sep 2019 09:29:52 +0200 Subject: [PATCH] Add Reminder type --- codegen.sh | 2 + system/types/reminder.gen.go | 67 +++++++++++++++++++++++ system/types/reminder.gen_test.go | 91 +++++++++++++++++++++++++++++++ system/types/reminder.go | 36 ++++++++++++ 4 files changed, 196 insertions(+) create mode 100644 system/types/reminder.gen.go create mode 100644 system/types/reminder.gen_test.go create mode 100644 system/types/reminder.go diff --git a/codegen.sh b/codegen.sh index 773342113..8344a3b7b 100755 --- a/codegen.sh +++ b/codegen.sh @@ -81,12 +81,14 @@ function types { ./build/gen-type-set --types Role --output system/types/role.gen.go ./build/gen-type-set --types Organisation --output system/types/organisation.gen.go ./build/gen-type-set --types Credentials --output system/types/credentials.gen.go + ./build/gen-type-set --types Reminder --output system/types/reminder.gen.go ./build/gen-type-set-test --types User --output system/types/user.gen_test.go ./build/gen-type-set-test --types Application --output system/types/application.gen_test.go ./build/gen-type-set-test --types Role --output system/types/role.gen_test.go ./build/gen-type-set-test --types Organisation --output system/types/organisation.gen_test.go ./build/gen-type-set-test --types Credentials --output system/types/credentials.gen_test.go + ./build/gen-type-set-test --types Reminder --output system/types/reminder.gen_test.go ./build/gen-type-set --types Value --output internal/settings/types.gen.go --with-primary-key=false --package settings ./build/gen-type-set-test --types Value --output internal/settings/types.gen_test.go --with-primary-key=false --package settings diff --git a/system/types/reminder.gen.go b/system/types/reminder.gen.go new file mode 100644 index 000000000..e9d4ae60a --- /dev/null +++ b/system/types/reminder.gen.go @@ -0,0 +1,67 @@ +package types + +// Hello! This file is auto-generated. + +type ( + + // ReminderSet slice of Reminder + // + // This type is auto-generated. + ReminderSet []*Reminder +) + +// Walk iterates through every slice item and calls w(Reminder) err +// +// This function is auto-generated. +func (set ReminderSet) Walk(w func(*Reminder) error) (err error) { + for i := range set { + if err = w(set[i]); err != nil { + return + } + } + + return +} + +// Filter iterates through every slice item, calls f(Reminder) (bool, err) and return filtered slice +// +// This function is auto-generated. +func (set ReminderSet) Filter(f func(*Reminder) (bool, error)) (out ReminderSet, err error) { + var ok bool + out = ReminderSet{} + 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 ReminderSet) FindByID(ID uint64) *Reminder { + 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 ReminderSet) IDs() (IDs []uint64) { + IDs = make([]uint64, len(set)) + + for i := range set { + IDs[i] = set[i].ID + } + + return +} diff --git a/system/types/reminder.gen_test.go b/system/types/reminder.gen_test.go new file mode 100644 index 000000000..e7c7dd97b --- /dev/null +++ b/system/types/reminder.gen_test.go @@ -0,0 +1,91 @@ +package types + +import ( + "testing" + + "errors" + + "github.com/cortezaproject/corteza-server/internal/test" +) + +// Hello! This file is auto-generated. + +func TestReminderSetWalk(t *testing.T) { + value := make(ReminderSet, 3) + + // check walk with no errors + { + err := value.Walk(func(*Reminder) 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(*Reminder) error { return errors.New("Walk error") }), "Expected error from walk, got nil") +} + +func TestReminderSetFilter(t *testing.T) { + value := make(ReminderSet, 3) + + // filter nothing + { + set, err := value.Filter(func(*Reminder) (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(*Reminder) (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(*Reminder) (bool, error) { + return false, errors.New("Filter error") + }) + test.Error(t, err, "Expected error, got %#v", err) + } +} + +func TestReminderSetIDs(t *testing.T) { + value := make(ReminderSet, 3) + // construct objects + value[0] = new(Reminder) + value[1] = new(Reminder) + value[2] = new(Reminder) + // 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/system/types/reminder.go b/system/types/reminder.go new file mode 100644 index 000000000..ef6b055b4 --- /dev/null +++ b/system/types/reminder.go @@ -0,0 +1,36 @@ +package types + +import ( + "time" + + "github.com/jmoiron/sqlx/types" +) + +type ( + Reminder struct { + ID uint64 `json:"notificationID,string" db:"id"` + Resource string `json:"resource" db:"resource"` + Payload types.JSONText `json:"payload" db:"payload"` + SnoozeCount uint `json:"snoozeCount" db:"snooze_count"` + + AssignedTo uint64 `json:"assignedTo,string" db:"assigned_to"` + AssignedBy uint64 `json:"assignedBy,string" db:"assigned_by"` + AssignedAt time.Time `json:"assignedAt" db:"assigned_at"` + + DismissedBy uint64 `json:"dismissedBy,string" db:"dismissed_by"` + DismissedAt time.Time `json:"dismissedAt" db:"dismissed_at"` + + RemindAt time.Time `json:"remindAt" db:"remind_at"` + + CreatedAt time.Time `json:"createdAt,omitempty" db:"created_at"` + UpdatedAt *time.Time `json:"updatedAt,omitempty" db:"updated_at"` + DeletedAt *time.Time `json:"deletedAt,omitempty" db:"deleted_at"` + } + + ReminderFilter struct { + Resource string `json:"resource"` + AssignedTo uint64 `json:"assignedTo,uint64"` + Page uint `json:"page,uint"` + PerPage uint `json:"perPage,uint"` + } +)