* upd(crm): split types, closes #79 * upd(crm): split generated types, codegen
This commit is contained in:
parent
7b79fcb617
commit
191f815444
15
codegen.sh
15
codegen.sh
@ -22,12 +22,15 @@ function types {
|
||||
CGO_ENABLED=0 go build -o ./build/gen-type-set codegen/v2/type-set.go
|
||||
fi
|
||||
|
||||
./build/gen-type-set --types Module,Page,Chart,Trigger,Record \
|
||||
--output crm/types/type.primary.gen.go
|
||||
./build/gen-type-set --with-primary-key=false --types ModuleField,RecordValue \
|
||||
--output crm/types/type.other.gen.go
|
||||
./build/gen-type-set --types Attachment \
|
||||
--output crm/types/attachment.gen.go
|
||||
./build/gen-type-set --types Attachment --output crm/types/attachment.gen.go
|
||||
./build/gen-type-set --types Module --output crm/types/module.gen.go
|
||||
./build/gen-type-set --types Page --output crm/types/page.gen.go
|
||||
./build/gen-type-set --types Chart --output crm/types/chart.gen.go
|
||||
./build/gen-type-set --types Trigger --output crm/types/trigger.gen.go
|
||||
./build/gen-type-set --types Record --output crm/types/record.gen.go
|
||||
|
||||
./build/gen-type-set --with-primary-key=false --types ModuleField --output crm/types/module_field.gen.go
|
||||
./build/gen-type-set --with-primary-key=false --types RecordValue --output crm/types/record_value.gen.go
|
||||
|
||||
./build/gen-type-set --types MessageAttachment --output messaging/types/attachment.gen.go
|
||||
./build/gen-type-set --with-resources=true --types Channel --resource-type "rules.Resource" --imports "github.com/crusttech/crust/internal/rules" --output messaging/types/channel.gen.go
|
||||
|
||||
67
crm/types/chart.gen.go
Normal file
67
crm/types/chart.gen.go
Normal file
@ -0,0 +1,67 @@
|
||||
package types
|
||||
|
||||
// Hello! This file is auto-generated.
|
||||
|
||||
type (
|
||||
|
||||
// ChartSet slice of Chart
|
||||
//
|
||||
// This type is auto-generated.
|
||||
ChartSet []*Chart
|
||||
)
|
||||
|
||||
// Walk iterates through every slice item and calls w(Chart) err
|
||||
//
|
||||
// This function is auto-generated.
|
||||
func (set ChartSet) Walk(w func(*Chart) error) (err error) {
|
||||
for i := range set {
|
||||
if err = w(set[i]); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Filter iterates through every slice item, calls f(Chart) (bool, err) and return filtered slice
|
||||
//
|
||||
// This function is auto-generated.
|
||||
func (set ChartSet) Filter(f func(*Chart) (bool, error)) (out ChartSet, err error) {
|
||||
var ok bool
|
||||
out = ChartSet{}
|
||||
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 ChartSet) FindByID(ID uint64) *Chart {
|
||||
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 ChartSet) IDs() (IDs []uint64) {
|
||||
IDs = make([]uint64, len(set))
|
||||
|
||||
for i := range set {
|
||||
IDs[i] = set[i].ID
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
67
crm/types/module.gen.go
Normal file
67
crm/types/module.gen.go
Normal file
@ -0,0 +1,67 @@
|
||||
package types
|
||||
|
||||
// Hello! This file is auto-generated.
|
||||
|
||||
type (
|
||||
|
||||
// ModuleSet slice of Module
|
||||
//
|
||||
// This type is auto-generated.
|
||||
ModuleSet []*Module
|
||||
)
|
||||
|
||||
// Walk iterates through every slice item and calls w(Module) err
|
||||
//
|
||||
// This function is auto-generated.
|
||||
func (set ModuleSet) Walk(w func(*Module) error) (err error) {
|
||||
for i := range set {
|
||||
if err = w(set[i]); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Filter iterates through every slice item, calls f(Module) (bool, err) and return filtered slice
|
||||
//
|
||||
// This function is auto-generated.
|
||||
func (set ModuleSet) Filter(f func(*Module) (bool, error)) (out ModuleSet, err error) {
|
||||
var ok bool
|
||||
out = ModuleSet{}
|
||||
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 ModuleSet) FindByID(ID uint64) *Module {
|
||||
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 ModuleSet) IDs() (IDs []uint64) {
|
||||
IDs = make([]uint64, len(set))
|
||||
|
||||
for i := range set {
|
||||
IDs[i] = set[i].ID
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
35
crm/types/module.go
Normal file
35
crm/types/module.go
Normal file
@ -0,0 +1,35 @@
|
||||
package types
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/jmoiron/sqlx/types"
|
||||
|
||||
"github.com/crusttech/crust/internal/rules"
|
||||
)
|
||||
|
||||
type (
|
||||
// Modules - CRM module definitions
|
||||
Module struct {
|
||||
ID uint64 `json:"moduleID,string" db:"id"`
|
||||
Name string `json:"name" db:"name"`
|
||||
Meta types.JSONText `json:"meta" db:"json"`
|
||||
Fields ModuleFieldSet `json:"fields" db:"-"`
|
||||
Page *Page `json:"page,omitempty"`
|
||||
|
||||
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"`
|
||||
}
|
||||
)
|
||||
|
||||
// Resource returns a system resource ID for this type
|
||||
func (r *Module) Resource() rules.Resource {
|
||||
resource := rules.Resource{
|
||||
Service: "compose",
|
||||
Scope: "module",
|
||||
ID: r.ID,
|
||||
}
|
||||
|
||||
return resource
|
||||
}
|
||||
@ -8,11 +8,6 @@ type (
|
||||
//
|
||||
// This type is auto-generated.
|
||||
ModuleFieldSet []*ModuleField
|
||||
|
||||
// RecordValueSet slice of RecordValue
|
||||
//
|
||||
// This type is auto-generated.
|
||||
RecordValueSet []*RecordValue
|
||||
)
|
||||
|
||||
// Walk iterates through every slice item and calls w(ModuleField) err
|
||||
@ -44,33 +39,3 @@ func (set ModuleFieldSet) Filter(f func(*ModuleField) (bool, error)) (out Module
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Walk iterates through every slice item and calls w(RecordValue) err
|
||||
//
|
||||
// This function is auto-generated.
|
||||
func (set RecordValueSet) Walk(w func(*RecordValue) error) (err error) {
|
||||
for i := range set {
|
||||
if err = w(set[i]); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Filter iterates through every slice item, calls f(RecordValue) (bool, err) and return filtered slice
|
||||
//
|
||||
// This function is auto-generated.
|
||||
func (set RecordValueSet) Filter(f func(*RecordValue) (bool, error)) (out RecordValueSet, err error) {
|
||||
var ok bool
|
||||
out = RecordValueSet{}
|
||||
for i := range set {
|
||||
if ok, err = f(set[i]); err != nil {
|
||||
return
|
||||
} else if ok {
|
||||
out = append(out, set[i])
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
83
crm/types/module_field.go
Normal file
83
crm/types/module_field.go
Normal file
@ -0,0 +1,83 @@
|
||||
package types
|
||||
|
||||
import (
|
||||
"database/sql/driver"
|
||||
"encoding/json"
|
||||
|
||||
"github.com/jmoiron/sqlx/types"
|
||||
)
|
||||
|
||||
type (
|
||||
// Modules - CRM module definitions
|
||||
ModuleField struct {
|
||||
ModuleID uint64 `json:"moduleID,string" db:"module_id"`
|
||||
Place int `json:"-" db:"place"`
|
||||
|
||||
Kind string `json:"kind" db:"kind"`
|
||||
Name string `json:"name" db:"name"`
|
||||
Label string `json:"label" db:"label"`
|
||||
|
||||
Options types.JSONText `json:"options" db:"json"`
|
||||
|
||||
Private bool `json:"isPrivate" db:"is_private"`
|
||||
Required bool `json:"isRequired" db:"is_required"`
|
||||
Visible bool `json:"isVisible" db:"is_visible"`
|
||||
Multi bool `json:"isMulti" db:"is_multi"`
|
||||
}
|
||||
)
|
||||
|
||||
func (set *ModuleFieldSet) Scan(src interface{}) error {
|
||||
if data, ok := src.([]byte); ok {
|
||||
return json.Unmarshal(data, set)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (set ModuleFieldSet) Value() (driver.Value, error) {
|
||||
return json.Marshal(set)
|
||||
}
|
||||
|
||||
func (set ModuleFieldSet) Names() (names []string) {
|
||||
names = make([]string, len(set))
|
||||
|
||||
for i := range set {
|
||||
names[i] = set[i].Name
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (set ModuleFieldSet) HasName(name string) bool {
|
||||
for i := range set {
|
||||
if name == set[i].Name {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func (set ModuleFieldSet) FindByName(name string) *ModuleField {
|
||||
for i := range set {
|
||||
if name == set[i].Name {
|
||||
return set[i]
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (set ModuleFieldSet) FilterByModule(moduleID uint64) (ff ModuleFieldSet) {
|
||||
for i := range set {
|
||||
if set[i].ModuleID == moduleID {
|
||||
ff = append(ff, set[i])
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// IsRef tells us if value of this field be a reference to something (another record, user)?
|
||||
func (f ModuleField) IsRef() bool {
|
||||
return f.Kind == "Record" || f.Kind == "Owner" || f.Kind == "File"
|
||||
}
|
||||
67
crm/types/page.gen.go
Normal file
67
crm/types/page.gen.go
Normal file
@ -0,0 +1,67 @@
|
||||
package types
|
||||
|
||||
// Hello! This file is auto-generated.
|
||||
|
||||
type (
|
||||
|
||||
// PageSet slice of Page
|
||||
//
|
||||
// This type is auto-generated.
|
||||
PageSet []*Page
|
||||
)
|
||||
|
||||
// Walk iterates through every slice item and calls w(Page) err
|
||||
//
|
||||
// This function is auto-generated.
|
||||
func (set PageSet) Walk(w func(*Page) error) (err error) {
|
||||
for i := range set {
|
||||
if err = w(set[i]); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Filter iterates through every slice item, calls f(Page) (bool, err) and return filtered slice
|
||||
//
|
||||
// This function is auto-generated.
|
||||
func (set PageSet) Filter(f func(*Page) (bool, error)) (out PageSet, err error) {
|
||||
var ok bool
|
||||
out = PageSet{}
|
||||
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 PageSet) FindByID(ID uint64) *Page {
|
||||
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 PageSet) IDs() (IDs []uint64) {
|
||||
IDs = make([]uint64, len(set))
|
||||
|
||||
for i := range set {
|
||||
IDs[i] = set[i].ID
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
51
crm/types/page.go
Normal file
51
crm/types/page.go
Normal file
@ -0,0 +1,51 @@
|
||||
package types
|
||||
|
||||
import (
|
||||
"github.com/jmoiron/sqlx/types"
|
||||
|
||||
"github.com/crusttech/crust/internal/rules"
|
||||
)
|
||||
|
||||
type (
|
||||
// Page - page structure
|
||||
Page struct {
|
||||
ID uint64 `json:"pageID,string" db:"id"`
|
||||
SelfID uint64 `json:"selfID,string" db:"self_id"`
|
||||
|
||||
ModuleID uint64 `json:"moduleID,string" db:"module_id"`
|
||||
Module *Module `json:"module,omitempty" db:"-"`
|
||||
|
||||
Title string `json:"title" db:"title"`
|
||||
Description string `json:"description" db:"description"`
|
||||
|
||||
Blocks types.JSONText `json:"blocks" db:"blocks"`
|
||||
|
||||
Children PageSet `json:"children,omitempty" db:"-"`
|
||||
|
||||
Visible bool `json:"visible" db:"visible"`
|
||||
Weight int `json:"-" db:"weight"`
|
||||
}
|
||||
|
||||
// Block - value of Page.Blocks ([]Block)
|
||||
Block struct {
|
||||
Title string `json:"title"`
|
||||
Description string `json:"description"`
|
||||
Options types.JSONText `json:"options"`
|
||||
Kind string `json:"kind"`
|
||||
X int `json:"x"`
|
||||
Y int `json:"y"`
|
||||
Width int `json:"width"`
|
||||
Height int `json:"height"`
|
||||
}
|
||||
)
|
||||
|
||||
// Resource returns a system resource ID for this type
|
||||
func (r *Page) Resource() rules.Resource {
|
||||
resource := rules.Resource{
|
||||
Service: "compose",
|
||||
Scope: "page",
|
||||
ID: r.ID,
|
||||
}
|
||||
|
||||
return resource
|
||||
}
|
||||
67
crm/types/record.gen.go
Normal file
67
crm/types/record.gen.go
Normal file
@ -0,0 +1,67 @@
|
||||
package types
|
||||
|
||||
// Hello! This file is auto-generated.
|
||||
|
||||
type (
|
||||
|
||||
// RecordSet slice of Record
|
||||
//
|
||||
// This type is auto-generated.
|
||||
RecordSet []*Record
|
||||
)
|
||||
|
||||
// Walk iterates through every slice item and calls w(Record) err
|
||||
//
|
||||
// This function is auto-generated.
|
||||
func (set RecordSet) Walk(w func(*Record) error) (err error) {
|
||||
for i := range set {
|
||||
if err = w(set[i]); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Filter iterates through every slice item, calls f(Record) (bool, err) and return filtered slice
|
||||
//
|
||||
// This function is auto-generated.
|
||||
func (set RecordSet) Filter(f func(*Record) (bool, error)) (out RecordSet, err error) {
|
||||
var ok bool
|
||||
out = RecordSet{}
|
||||
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 RecordSet) FindByID(ID uint64) *Record {
|
||||
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 RecordSet) IDs() (IDs []uint64) {
|
||||
IDs = make([]uint64, len(set))
|
||||
|
||||
for i := range set {
|
||||
IDs[i] = set[i].ID
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
54
crm/types/record.go
Normal file
54
crm/types/record.go
Normal file
@ -0,0 +1,54 @@
|
||||
package types
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/crusttech/crust/internal/rules"
|
||||
)
|
||||
|
||||
type (
|
||||
// Record is a stored row in the `record` table
|
||||
Record struct {
|
||||
ID uint64 `json:"recordID,string" db:"id"`
|
||||
ModuleID uint64 `json:"moduleID,string" db:"module_id"`
|
||||
|
||||
Values RecordValueSet `json:"values,omitempty" db:"-"`
|
||||
|
||||
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"`
|
||||
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" `
|
||||
}
|
||||
)
|
||||
|
||||
// UserIDs returns a slice of user IDs from all items in the set
|
||||
func (set RecordSet) UserIDs() (IDs []uint64) {
|
||||
IDs = make([]uint64, 0)
|
||||
|
||||
loop:
|
||||
for i := range set {
|
||||
for _, id := range IDs {
|
||||
if id == set[i].OwnedBy {
|
||||
continue loop
|
||||
}
|
||||
}
|
||||
|
||||
IDs = append(IDs, set[i].OwnedBy)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Resource returns a system resource ID for this type
|
||||
func (r *Record) Resource() rules.Resource {
|
||||
resource := rules.Resource{
|
||||
Service: "compose",
|
||||
Scope: "module", // intentionally using module here so we can use Record's resource
|
||||
ID: r.ModuleID,
|
||||
}
|
||||
|
||||
return resource
|
||||
}
|
||||
41
crm/types/record_value.gen.go
Normal file
41
crm/types/record_value.gen.go
Normal file
@ -0,0 +1,41 @@
|
||||
package types
|
||||
|
||||
// Hello! This file is auto-generated.
|
||||
|
||||
type (
|
||||
|
||||
// RecordValueSet slice of RecordValue
|
||||
//
|
||||
// This type is auto-generated.
|
||||
RecordValueSet []*RecordValue
|
||||
)
|
||||
|
||||
// Walk iterates through every slice item and calls w(RecordValue) err
|
||||
//
|
||||
// This function is auto-generated.
|
||||
func (set RecordValueSet) Walk(w func(*RecordValue) error) (err error) {
|
||||
for i := range set {
|
||||
if err = w(set[i]); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Filter iterates through every slice item, calls f(RecordValue) (bool, err) and return filtered slice
|
||||
//
|
||||
// This function is auto-generated.
|
||||
func (set RecordValueSet) Filter(f func(*RecordValue) (bool, error)) (out RecordValueSet, err error) {
|
||||
var ok bool
|
||||
out = RecordValueSet{}
|
||||
for i := range set {
|
||||
if ok, err = f(set[i]); err != nil {
|
||||
return
|
||||
} else if ok {
|
||||
out = append(out, set[i])
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
37
crm/types/record_value.go
Normal file
37
crm/types/record_value.go
Normal file
@ -0,0 +1,37 @@
|
||||
package types
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type (
|
||||
// RecordValue is a stored row in the `record_value` table
|
||||
RecordValue struct {
|
||||
RecordID uint64 `db:"record_id" json:"-"`
|
||||
Name string `db:"name" json:"name"`
|
||||
Value string `db:"value" json:"value,omitempty"`
|
||||
Ref uint64 `db:"ref" json:"-"`
|
||||
Place uint `db:"place" json:"-"`
|
||||
DeletedAt *time.Time `db:"deleted_at" json:"deletedAt,omitempty"`
|
||||
}
|
||||
)
|
||||
|
||||
func (set RecordValueSet) FilterByName(name string) (vv RecordValueSet) {
|
||||
for i := range set {
|
||||
if set[i].Name == name {
|
||||
vv = append(vv, set[i])
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (set RecordValueSet) FilterByRecordID(recordID uint64) (vv RecordValueSet) {
|
||||
for i := range set {
|
||||
if set[i].RecordID == recordID {
|
||||
vv = append(vv, set[i])
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
67
crm/types/trigger.gen.go
Normal file
67
crm/types/trigger.gen.go
Normal file
@ -0,0 +1,67 @@
|
||||
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
|
||||
}
|
||||
@ -1,311 +0,0 @@
|
||||
package types
|
||||
|
||||
// Hello! This file is auto-generated.
|
||||
|
||||
type (
|
||||
|
||||
// ModuleSet slice of Module
|
||||
//
|
||||
// This type is auto-generated.
|
||||
ModuleSet []*Module
|
||||
|
||||
// PageSet slice of Page
|
||||
//
|
||||
// This type is auto-generated.
|
||||
PageSet []*Page
|
||||
|
||||
// ChartSet slice of Chart
|
||||
//
|
||||
// This type is auto-generated.
|
||||
ChartSet []*Chart
|
||||
|
||||
// TriggerSet slice of Trigger
|
||||
//
|
||||
// This type is auto-generated.
|
||||
TriggerSet []*Trigger
|
||||
|
||||
// RecordSet slice of Record
|
||||
//
|
||||
// This type is auto-generated.
|
||||
RecordSet []*Record
|
||||
)
|
||||
|
||||
// Walk iterates through every slice item and calls w(Module) err
|
||||
//
|
||||
// This function is auto-generated.
|
||||
func (set ModuleSet) Walk(w func(*Module) error) (err error) {
|
||||
for i := range set {
|
||||
if err = w(set[i]); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Filter iterates through every slice item, calls f(Module) (bool, err) and return filtered slice
|
||||
//
|
||||
// This function is auto-generated.
|
||||
func (set ModuleSet) Filter(f func(*Module) (bool, error)) (out ModuleSet, err error) {
|
||||
var ok bool
|
||||
out = ModuleSet{}
|
||||
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 ModuleSet) FindByID(ID uint64) *Module {
|
||||
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 ModuleSet) IDs() (IDs []uint64) {
|
||||
IDs = make([]uint64, len(set))
|
||||
|
||||
for i := range set {
|
||||
IDs[i] = set[i].ID
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Walk iterates through every slice item and calls w(Page) err
|
||||
//
|
||||
// This function is auto-generated.
|
||||
func (set PageSet) Walk(w func(*Page) error) (err error) {
|
||||
for i := range set {
|
||||
if err = w(set[i]); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Filter iterates through every slice item, calls f(Page) (bool, err) and return filtered slice
|
||||
//
|
||||
// This function is auto-generated.
|
||||
func (set PageSet) Filter(f func(*Page) (bool, error)) (out PageSet, err error) {
|
||||
var ok bool
|
||||
out = PageSet{}
|
||||
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 PageSet) FindByID(ID uint64) *Page {
|
||||
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 PageSet) IDs() (IDs []uint64) {
|
||||
IDs = make([]uint64, len(set))
|
||||
|
||||
for i := range set {
|
||||
IDs[i] = set[i].ID
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Walk iterates through every slice item and calls w(Chart) err
|
||||
//
|
||||
// This function is auto-generated.
|
||||
func (set ChartSet) Walk(w func(*Chart) error) (err error) {
|
||||
for i := range set {
|
||||
if err = w(set[i]); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Filter iterates through every slice item, calls f(Chart) (bool, err) and return filtered slice
|
||||
//
|
||||
// This function is auto-generated.
|
||||
func (set ChartSet) Filter(f func(*Chart) (bool, error)) (out ChartSet, err error) {
|
||||
var ok bool
|
||||
out = ChartSet{}
|
||||
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 ChartSet) FindByID(ID uint64) *Chart {
|
||||
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 ChartSet) IDs() (IDs []uint64) {
|
||||
IDs = make([]uint64, len(set))
|
||||
|
||||
for i := range set {
|
||||
IDs[i] = set[i].ID
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// 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
|
||||
}
|
||||
|
||||
// Walk iterates through every slice item and calls w(Record) err
|
||||
//
|
||||
// This function is auto-generated.
|
||||
func (set RecordSet) Walk(w func(*Record) error) (err error) {
|
||||
for i := range set {
|
||||
if err = w(set[i]); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Filter iterates through every slice item, calls f(Record) (bool, err) and return filtered slice
|
||||
//
|
||||
// This function is auto-generated.
|
||||
func (set RecordSet) Filter(f func(*Record) (bool, error)) (out RecordSet, err error) {
|
||||
var ok bool
|
||||
out = RecordSet{}
|
||||
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 RecordSet) FindByID(ID uint64) *Record {
|
||||
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 RecordSet) IDs() (IDs []uint64) {
|
||||
IDs = make([]uint64, len(set))
|
||||
|
||||
for i := range set {
|
||||
IDs[i] = set[i].ID
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
@ -1,229 +0,0 @@
|
||||
package types
|
||||
|
||||
import (
|
||||
"database/sql/driver"
|
||||
"encoding/json"
|
||||
"time"
|
||||
|
||||
"github.com/jmoiron/sqlx/types"
|
||||
|
||||
"github.com/crusttech/crust/internal/rules"
|
||||
)
|
||||
|
||||
type (
|
||||
// Record is a stored row in the `record` table
|
||||
Record struct {
|
||||
ID uint64 `json:"recordID,string" db:"id"`
|
||||
ModuleID uint64 `json:"moduleID,string" db:"module_id"`
|
||||
|
||||
Values RecordValueSet `json:"values,omitempty" db:"-"`
|
||||
|
||||
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"`
|
||||
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" `
|
||||
}
|
||||
|
||||
// RecordValue is a stored row in the `record_value` table
|
||||
RecordValue struct {
|
||||
RecordID uint64 `db:"record_id" json:"-"`
|
||||
Name string `db:"name" json:"name"`
|
||||
Value string `db:"value" json:"value,omitempty"`
|
||||
Ref uint64 `db:"ref" json:"-"`
|
||||
Place uint `db:"place" json:"-"`
|
||||
DeletedAt *time.Time `db:"deleted_at" json:"deletedAt,omitempty"`
|
||||
}
|
||||
|
||||
// Modules - CRM module definitions
|
||||
Module struct {
|
||||
ID uint64 `json:"moduleID,string" db:"id"`
|
||||
Name string `json:"name" db:"name"`
|
||||
Meta types.JSONText `json:"meta" db:"json"`
|
||||
Fields ModuleFieldSet `json:"fields" db:"-"`
|
||||
Page *Page `json:"page,omitempty"`
|
||||
|
||||
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"`
|
||||
}
|
||||
|
||||
// Modules - CRM module definitions
|
||||
ModuleField struct {
|
||||
ModuleID uint64 `json:"moduleID,string" db:"module_id"`
|
||||
Place int `json:"-" db:"place"`
|
||||
|
||||
Kind string `json:"kind" db:"kind"`
|
||||
Name string `json:"name" db:"name"`
|
||||
Label string `json:"label" db:"label"`
|
||||
|
||||
Options types.JSONText `json:"options" db:"json"`
|
||||
|
||||
Private bool `json:"isPrivate" db:"is_private"`
|
||||
Required bool `json:"isRequired" db:"is_required"`
|
||||
Visible bool `json:"isVisible" db:"is_visible"`
|
||||
Multi bool `json:"isMulti" db:"is_multi"`
|
||||
}
|
||||
|
||||
// Page - page structure
|
||||
Page struct {
|
||||
ID uint64 `json:"pageID,string" db:"id"`
|
||||
SelfID uint64 `json:"selfID,string" db:"self_id"`
|
||||
|
||||
ModuleID uint64 `json:"moduleID,string" db:"module_id"`
|
||||
Module *Module `json:"module,omitempty" db:"-"`
|
||||
|
||||
Title string `json:"title" db:"title"`
|
||||
Description string `json:"description" db:"description"`
|
||||
|
||||
Blocks types.JSONText `json:"blocks" db:"blocks"`
|
||||
|
||||
Children PageSet `json:"children,omitempty" db:"-"`
|
||||
|
||||
Visible bool `json:"visible" db:"visible"`
|
||||
Weight int `json:"-" db:"weight"`
|
||||
}
|
||||
|
||||
// Block - value of Page.Blocks ([]Block)
|
||||
Block struct {
|
||||
Title string `json:"title"`
|
||||
Description string `json:"description"`
|
||||
Options types.JSONText `json:"options"`
|
||||
Kind string `json:"kind"`
|
||||
X int `json:"x"`
|
||||
Y int `json:"y"`
|
||||
Width int `json:"width"`
|
||||
Height int `json:"height"`
|
||||
}
|
||||
)
|
||||
|
||||
func (set *ModuleFieldSet) Scan(src interface{}) error {
|
||||
if data, ok := src.([]byte); ok {
|
||||
return json.Unmarshal(data, set)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (set ModuleFieldSet) Value() (driver.Value, error) {
|
||||
return json.Marshal(set)
|
||||
}
|
||||
|
||||
func (set ModuleFieldSet) Names() (names []string) {
|
||||
names = make([]string, len(set))
|
||||
|
||||
for i := range set {
|
||||
names[i] = set[i].Name
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (set ModuleFieldSet) HasName(name string) bool {
|
||||
for i := range set {
|
||||
if name == set[i].Name {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func (set ModuleFieldSet) FindByName(name string) *ModuleField {
|
||||
for i := range set {
|
||||
if name == set[i].Name {
|
||||
return set[i]
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (set ModuleFieldSet) FilterByModule(moduleID uint64) (ff ModuleFieldSet) {
|
||||
for i := range set {
|
||||
if set[i].ModuleID == moduleID {
|
||||
ff = append(ff, set[i])
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// IsRef tells us if value of this field be a reference to something (another record, user)?
|
||||
func (f ModuleField) IsRef() bool {
|
||||
return f.Kind == "Record" || f.Kind == "Owner" || f.Kind == "File"
|
||||
}
|
||||
|
||||
// UserIDs returns a slice of user IDs from all items in the set
|
||||
//
|
||||
// This function is auto-generated.
|
||||
func (set RecordSet) UserIDs() (IDs []uint64) {
|
||||
IDs = make([]uint64, 0)
|
||||
|
||||
loop:
|
||||
for i := range set {
|
||||
for _, id := range IDs {
|
||||
if id == set[i].OwnedBy {
|
||||
continue loop
|
||||
}
|
||||
}
|
||||
|
||||
IDs = append(IDs, set[i].OwnedBy)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (set RecordValueSet) FilterByName(name string) (vv RecordValueSet) {
|
||||
for i := range set {
|
||||
if set[i].Name == name {
|
||||
vv = append(vv, set[i])
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (set RecordValueSet) FilterByRecordID(recordID uint64) (vv RecordValueSet) {
|
||||
for i := range set {
|
||||
if set[i].RecordID == recordID {
|
||||
vv = append(vv, set[i])
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Resource returns a system resource ID for this type
|
||||
func (r *Module) Resource() rules.Resource {
|
||||
resource := rules.Resource{
|
||||
Service: "compose",
|
||||
Scope: "module",
|
||||
ID: r.ID,
|
||||
}
|
||||
|
||||
return resource
|
||||
}
|
||||
|
||||
// Resource returns a system resource ID for this type
|
||||
func (r *Record) Resource() rules.Resource {
|
||||
resource := rules.Resource{
|
||||
Service: "compose",
|
||||
Scope: "module", // intentionally using module here so we can use Record's resource
|
||||
ID: r.ModuleID,
|
||||
}
|
||||
|
||||
return resource
|
||||
}
|
||||
|
||||
// Resource returns a system resource ID for this type
|
||||
func (r *Page) Resource() rules.Resource {
|
||||
resource := rules.Resource{
|
||||
Service: "compose",
|
||||
Scope: "page",
|
||||
ID: r.ID,
|
||||
}
|
||||
|
||||
return resource
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user