3
0

Add Reminder type

This commit is contained in:
Tomaž Jerman 2019-09-24 09:29:52 +02:00
parent 33ad6c878b
commit 4dbd8bea88
4 changed files with 196 additions and 0 deletions

View File

@ -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

View File

@ -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
}

View File

@ -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))
}
}

36
system/types/reminder.go Normal file
View File

@ -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"`
}
)