diff --git a/compose/types/compose_record_store.go b/compose/types/compose_record_store.go new file mode 100644 index 000000000..31f942157 --- /dev/null +++ b/compose/types/compose_record_store.go @@ -0,0 +1,36 @@ +package types + +import "github.com/cortezaproject/corteza-server/compose/crs/capabilities" + +type ( + ComposeRecordStore struct { + ID uint64 + Handle string + DSN string + Location string + // ... + + // @todo IMO having it like so (instead of in a struct) allows for more + // flexibility with less data + Enforced capabilities.Set + Supported capabilities.Set + Unsupported capabilities.Set + Enabled capabilities.Set + } +) + +// @note this conforms to the crs.crsDefiner interface + +func (crs ComposeRecordStore) ComposeRecordStoreID() uint64 { + return crs.ID +} + +func (crs ComposeRecordStore) StoreDSN() string { + return crs.DSN +} + +func (crs ComposeRecordStore) Capabilities() capabilities.Set { + return append(crs.Enforced, crs.Supported...) +} + +// --- diff --git a/compose/types/module.go b/compose/types/module.go index cb209becc..4a0d394d6 100644 --- a/compose/types/module.go +++ b/compose/types/module.go @@ -3,12 +3,14 @@ package types import ( "database/sql/driver" "encoding/json" + "time" + + "github.com/cortezaproject/corteza-server/compose/crs/capabilities" discovery "github.com/cortezaproject/corteza-server/discovery/types" "github.com/cortezaproject/corteza-server/pkg/filter" "github.com/cortezaproject/corteza-server/pkg/locale" "github.com/jmoiron/sqlx/types" "github.com/pkg/errors" - "time" ) type ( diff --git a/compose/types/module_field.go b/compose/types/module_field.go index d6028e7d9..2ba46e871 100644 --- a/compose/types/module_field.go +++ b/compose/types/module_field.go @@ -26,6 +26,8 @@ type ( Options ModuleFieldOptions `json:"options"` + Encoding EncodingStrategy + Private bool `json:"isPrivate"` Required bool `json:"isRequired"` Visible bool `json:"isVisible"` @@ -46,6 +48,20 @@ type ( Label string `json:"label"` } + EncodingStrategy struct { + *EncodingStrategyAlias + *EncodingStrategyJSON + } + + EncodingStrategyAlias struct { + Ident string `json:"ident"` + } + + EncodingStrategyJSON struct { + Ident string `json:"ident"` + Path []any `json:"path"` + } + ModuleFieldFilter struct { ModuleID []uint64 Deleted filter.State diff --git a/compose/types/record.go b/compose/types/record.go index ecd69118b..e34b3d008 100644 --- a/compose/types/record.go +++ b/compose/types/record.go @@ -6,6 +6,7 @@ import ( "strconv" "time" + "github.com/cortezaproject/corteza-server/pkg/expr" "github.com/cortezaproject/corteza-server/pkg/filter" ) @@ -116,6 +117,14 @@ func (r Record) Clone() *Record { return c } +func (r *Record) GetValue(name string, pos int) (expr.TypedValue, error) { + return expr.NewString("@todo") +} + +func (r *Record) SetValue(name string, pos int, value expr.TypedValue) error { + return nil +} + func (r Record) Dict() map[string]interface{} { dict := map[string]interface{}{ "ID": r.ID,