resource

package
v0.0.0-...-5127ed8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 30, 2022 License: MIT Imports: 32 Imported by: 16

Documentation

Index

Constants

View Source
const (
	AutoLoadLinkDisabled contextKey = "autoload_link_disabled"
	AutoLoadDisabled     contextKey = "autoload_disabled"
)
View Source
const BASIC_LAYOUT = "basic"
View Source
const DEFAULT_LAYOUT = "default"
View Source
const DefaultFormInputPrefix = "QorResource"

Variables

View Source
var ErrProcessorSkipLeft = errors.New("resource: skip left")

ErrProcessorSkipLeft skip left processors error, if returned this error in validation, before callbacks, then qor will stop process following processors

View Source
var FormTreeSkipDir = errors.New("skip dir")

Functions

func Decode

func Decode(context *core.Context, result interface{}, res Resourcer, f ...ProcessorFlag) (err error)

Decode decode context to result according to resource definition

func DecodeMetaValues

func DecodeMetaValues(context *core.Context, result interface{}, res Resourcer, prefix string, metaValues *MetaValues, f ...ProcessorFlag) (err error)

func ErrCantBeBlank

func ErrCantBeBlank(ctx *core.Context, record interface{}, fieldName string, label ...string) error

func ErrField

func ErrField(ctx *core.Context, record interface{}, fieldName string, label ...string) func(err interface{}) error

func ErrMetaCantBeBlank

func ErrMetaCantBeBlank(context *core.Context, metaor Metaor) error

func FormTreeWalkMetaValues

func FormTreeWalkMetaValues(t *FormTree, context *core.Context, metaorsMap map[string]Metaor, this *MetaValue) (err error)

func GenericSetter

func GenericSetter(meta Metaor, fieldName string, setter func(field reflect.Value, metaValue *MetaValue, context *core.Context, record interface{}) error) func(record interface{}, metaValue *MetaValue, context *core.Context) error

func GetField

func GetField(context *core.Context, record interface{}, metaValue *MetaValue) (reflect.Value, error)

func IdToPrimaryQuery

func IdToPrimaryQuery(ctx *core.Context, res Resourcer, exclude bool, id ...aorm.ID) (query string, args []interface{}, err error)

IdToPrimaryQuery to returns primary query params

func IsDefaultMetaSetter

func IsDefaultMetaSetter(meta *Meta) bool

func MetaValuesToID

func MetaValuesToID(res Resourcer, metaValues *MetaValues) (aorm.ID, error)

MetaValuesToID to primary query params from meta values

func MustParseID

func MustParseID(res Resourcer, s string) aorm.ID

func OnDBAction

func OnDBAction(dis edis.EventDispatcherInterface, cb func(e *DBEvent), action ...DBActionEvent) (err error)

func OnDBActionE

func OnDBActionE(dis edis.EventDispatcherInterface, cb func(e *DBEvent) error, action ...DBActionEvent) (err error)

func ResultFormatter

func ResultFormatter(slice interface{}, formatter func(i int, record interface{}), makeSlice ...func(len int))

func Setter

func Setter(newValue GetFielder, setter func(ptr bool, value reflect.Value, metaValue *MetaValue, context *core.Context, record interface{}) error) func(record interface{}, metaValue *MetaValue, context *core.Context) error

func SingleFieldIndexSetter

func SingleFieldIndexSetter(fieldIndex []int, setter func(ptr bool, field reflect.Value, metaValue *MetaValue, context *core.Context, record interface{}) error) func(record interface{}, metaValue *MetaValue, context *core.Context) error

func SingleFieldSetter

func SingleFieldSetter(fieldName string, setter func(ptr bool, field reflect.Value, metaValue *MetaValue, context *core.Context, record interface{}) error) func(record interface{}, metaValue *MetaValue, context *core.Context) error

func SliceMetaAppendDeleted

func SliceMetaAppendDeleted(record reflect.Value, metaName string, pks ...ID)

func StringToPrimaryQuery

func StringToPrimaryQuery(ctx *core.Context, res Resourcer, s string, exclude bool) (query string, primaryValues []interface{}, err error)

Types

type Basic

type Basic struct {
	ID    ID
	Label string
	Icon  string
}

func (Basic) BasicIcon

func (b Basic) BasicIcon() string

func (Basic) BasicLabel

func (b Basic) BasicLabel() string

func (Basic) GetID

func (b Basic) GetID() ID

func (Basic) String

func (b Basic) String() string

type BasicDescriptableValue

type BasicDescriptableValue struct {
	Basic
	Description string
}

func (BasicDescriptableValue) BasicDescription

func (this BasicDescriptableValue) BasicDescription() string

func (BasicDescriptableValue) GetDescription

func (this BasicDescriptableValue) GetDescription() string

type BasicDescriptableValuer

type BasicDescriptableValuer interface {
	BasicValuer
	BasicDescription() string
}

type BasicIcon

type BasicIcon interface {
	BasicIcon() string
}

type BasicLabel

type BasicLabel interface {
	BasicLabel() string
}

type BasicValuer

type BasicValuer interface {
	fmt.Stringer
	BasicLabel
	BasicIcon
	GetID() ID
}

type BytesParser

type BytesParser interface {
	ParseBytes(b []byte) error
}

type CRUD

type CRUD struct {
	DefaultDenyMode bool
	edis.EventDispatcher

	Chan              interface{}
	Recorde           interface{}
	HasPermissionFunc func(mode roles.PermissionMode, ctx *core.Context) roles.Perm
	// contains filtered or unexported fields
}

func NewCrud

func NewCrud(res Resourcer, ctx *core.Context) *CRUD

func (*CRUD) CallCreate

func (this *CRUD) CallCreate(record interface{}) (err error)

func (*CRUD) CallDelete

func (this *CRUD) CallDelete(recorde interface{}) (err error)

func (*CRUD) CallUpdate

func (this *CRUD) CallUpdate(recorde interface{}, old ...interface{}) (err error)

func (*CRUD) Context

func (this *CRUD) Context() *core.Context

func (*CRUD) Count

func (this *CRUD) Count(result interface{}) (err error)

func (*CRUD) CountDB

func (this *CRUD) CountDB(result interface{}) (db *aorm.DB, err error)

func (*CRUD) Create

func (this *CRUD) Create(record interface{}) error

func (*CRUD) DB

func (this *CRUD) DB() *aorm.DB

func (*CRUD) DefaultLayout

func (this *CRUD) DefaultLayout() bool

func (*CRUD) Delete

func (this *CRUD) Delete(record interface{}) (err error)

func (*CRUD) Dispatcher

func (this *CRUD) Dispatcher(dis ...edis.EventDispatcherInterface) *CRUD

func (*CRUD) Dispatchers

func (this *CRUD) Dispatchers() []edis.EventDispatcherInterface

func (*CRUD) FindMany

func (this *CRUD) FindMany(result interface{}) (err error)

func (*CRUD) FindManyBasic

func (this *CRUD) FindManyBasic() (result []BasicValuer, err error)

func (*CRUD) FindManyLayout

func (this *CRUD) FindManyLayout(layout ...interface{}) (result interface{}, err error)

func (*CRUD) FindManyLayoutOrDefault

func (this *CRUD) FindManyLayoutOrDefault(layout interface{}, defaul ...interface{}) (interface{}, error)

func (*CRUD) FindOne

func (this *CRUD) FindOne(result interface{}, key ...aorm.ID) (err error)

func (*CRUD) FindOneBasic

func (this *CRUD) FindOneBasic(key aorm.ID) (result BasicValuer, err error)

func (*CRUD) FindOneLayout

func (this *CRUD) FindOneLayout(key aorm.ID, layout ...interface{}) (result interface{}, err error)

func (*CRUD) HasPermission

func (this *CRUD) HasPermission(mode roles.PermissionMode, ctxN ...*core.Context) bool

func (*CRUD) Layout

func (this *CRUD) Layout() LayoutInterface

func (*CRUD) MetaValues

func (this *CRUD) MetaValues() *MetaValues

func (*CRUD) Parent

func (this *CRUD) Parent() *CRUD

func (*CRUD) Resource

func (this *CRUD) Resource() Resourcer

func (*CRUD) SaveOrCreate

func (this *CRUD) SaveOrCreate(recorde interface{}) error

func (*CRUD) SetContext

func (this *CRUD) SetContext(ctx *core.Context) *CRUD

func (*CRUD) SetDB

func (this *CRUD) SetDB(DB *aorm.DB) *CRUD

func (*CRUD) SetLayout

func (this *CRUD) SetLayout(layout interface{}) *CRUD

func (*CRUD) SetLayoutOrDefault

func (this *CRUD) SetLayoutOrDefault(layout interface{}, defaul ...interface{}) *CRUD

func (*CRUD) SetMetaValues

func (this *CRUD) SetMetaValues(metaValues *MetaValues) *CRUD

func (*CRUD) Update

func (this *CRUD) Update(record interface{}, old ...interface{}) error

type CalbackFunc

type CalbackFunc func(resourcer Resourcer, value interface{}, context *core.Context) error

type Callback

type Callback struct {
	Name    string
	Handler CalbackFunc
}

type ConfigureMetaBeforeInitializeInterface

type ConfigureMetaBeforeInitializeInterface interface {
	ConfigureQorMetaBeforeInitialize(Metaor)
}

ConfigureMetaBeforeInitializeInterface if a struct's field's type implemented this interface, it will be called when initializing a meta

type ConfigureMetaInterface

type ConfigureMetaInterface interface {
	ConfigureQorMeta(Metaor)
}

ConfigureMetaInterface if a struct's field's type implemented this interface, it will be called after configed

type ConfigureResourceBeforeInitializeInterface

type ConfigureResourceBeforeInitializeInterface interface {
	ConfigureResourceBeforeInitialize(Resourcer)
}

ConfigureResourceBeforeInitializeInterface if a struct implemented this interface, it will be called before everything when create a resource with the struct

type ConfigureResourceInterface

type ConfigureResourceInterface interface {
	ConfigureResource(Resourcer)
}

ConfigureResourceInterface if a struct implemented this interface, it will be called after configured by user

type ContextScanner

type ContextScanner interface {
	// ContextScan scan value
	ContextScan(ctx *core.Context, src interface{}) error
}

ContextScanner interface Allow to scan value with reflect.StructField arg

type ContextStringsScanner

type ContextStringsScanner interface {
	// ContextScan scan value
	StringsScan(ctx *core.Context, src []string) error
}

ContextStringsScanner interface Allow to scan value with reflect.StructField arg

type DBActionEvent

type DBActionEvent uint
const (
	BEFORE DBActionEvent = 1 << iota
	AFTER
	ERROR
	E_DB_ACTION_COUNT
	E_DB_ACTION_CREATE
	E_DB_ACTION_DELETE
	E_DB_ACTION_FIND_MANY
	E_DB_ACTION_FIND_ONE
	E_DB_ACTION_UPDATE
)

func (DBActionEvent) After

func (n DBActionEvent) After() DBActionEvent

func (DBActionEvent) Before

func (n DBActionEvent) Before() DBActionEvent

func (DBActionEvent) Error

func (n DBActionEvent) Error() DBActionEvent

func (DBActionEvent) FullName

func (n DBActionEvent) FullName() string

func (DBActionEvent) FullNames

func (n DBActionEvent) FullNames() []string

func (DBActionEvent) Name

func (n DBActionEvent) Name() string

func (DBActionEvent) Names

func (n DBActionEvent) Names() []string

type DBEvent

type DBEvent struct {
	edis.EventInterface
	Crud    *CRUD
	Action  DBActionEvent
	Context *core.Context
	DBError error
	// contains filtered or unexported fields
}

func NewDBEvent

func NewDBEvent(action DBActionEvent, ctx *core.Context) *DBEvent

func (*DBEvent) DB

func (e *DBEvent) DB(db ...*aorm.DB) *aorm.DB

func (*DBEvent) New

func (e *DBEvent) New() interface{}

func (*DBEvent) Old

func (e *DBEvent) Old() interface{}

func (*DBEvent) OriginalContext

func (e *DBEvent) OriginalContext() *core.Context

func (*DBEvent) Resource

func (e *DBEvent) Resource() Resourcer

type Decoder

type Decoder struct {
	// contains filtered or unexported fields
}

func NewDecoder

func NewDecoder(res Resourcer, context *core.Context) *Decoder

func (Decoder) Decode

func (this Decoder) Decode(result interface{}) (err error)

func (*Decoder) NotLoad

func (this *Decoder) NotLoad() bool

func (Decoder) SetNotLoad

func (this Decoder) SetNotLoad(notLoad bool) *Decoder

type DescriptionGetter

type DescriptionGetter interface {
	GetDescription() string
}

type DuplicateUniqueIndexError

type DuplicateUniqueIndexError struct {
	*aorm.DuplicateUniqueIndexError
	// contains filtered or unexported fields
}

func (DuplicateUniqueIndexError) Cause

func (d DuplicateUniqueIndexError) Cause() error

func (*DuplicateUniqueIndexError) Record

func (d *DuplicateUniqueIndexError) Record() interface{}

func (*DuplicateUniqueIndexError) Resource

func (d *DuplicateUniqueIndexError) Resource() Resourcer

type ExcludeData

type ExcludeData struct {
	Res  Resourcer
	Path string
}

type FContextResourcer

type FContextResourcer = func(meta Metaor, context *core.Context) Resourcer

type FFormattedValuer

type FFormattedValuer = func(interface{}, *core.Context) *FormattedValue

type FSetter

type FSetter = func(resource interface{}, metaValue *MetaValue, context *core.Context) error

type FValuer

type FValuer = func(interface{}, *core.Context) interface{}

type FormTree

type FormTree struct {
	Key      string
	Index    int
	Value    interface{}
	Children FormTreeMap
	Parent   *FormTree
	Data     interface{}
}

func NewFormTree

func NewFormTree() *FormTree

func (*FormTree) Of

func (this *FormTree) Of(key string) *FormTree

func (*FormTree) ParseFormTreeFiles

func (this *FormTree) ParseFormTreeFiles(m map[string][]*multipart.FileHeader, prefix string)

func (*FormTree) ParseFormTreeValues

func (this *FormTree) ParseFormTreeValues(m map[string][]string, prefix string)

func (*FormTree) Walk

func (this *FormTree) Walk(cb func(t *FormTree, data interface{}) (childData interface{}, err error), data interface{}) (err error)

type FormTreeMap

type FormTreeMap struct {
	Keys      []string
	Map       map[string]*FormTree
	Slice     []*FormTree
	NextIndex int
}

func (*FormTreeMap) Add

func (this *FormTreeMap) Add(key string, t *FormTree)

func (*FormTreeMap) Get

func (this *FormTreeMap) Get(key string) (t *FormTree, ok bool)

func (*FormTreeMap) GetStringValue

func (this *FormTreeMap) GetStringValue(key string) string

Get gets the first value associated with the given key. If there are no values associated with the key, Get returns the empty string. To access multiple values, use the map directly.

type FormattedValue

type FormattedValue struct {
	Record       interface{}
	IsZeroF      func(record, value interface{}) bool
	NoZero, Zero bool

	Raw interface{}
	// Raws is a slice of raw values
	Raws interface{}

	Value  string
	Values []string

	SafeValue  string
	SafeValues []string

	// Slice if Raw is Slice
	Slice bool

	Severity core.Severity

	Data map[interface{}]interface{}
}

func (*FormattedValue) GetSafeValue

func (v *FormattedValue) GetSafeValue() string

func (*FormattedValue) GetSafeValues

func (v *FormattedValue) GetSafeValues() []string

func (*FormattedValue) IsZero

func (v *FormattedValue) IsZero() bool

func (*FormattedValue) SetNonZero

func (v *FormattedValue) SetNonZero() *FormattedValue

func (*FormattedValue) SetZero

func (v *FormattedValue) SetZero() *FormattedValue

type GetFielder

type GetFielder func(context *core.Context, record interface{}, metaValue *MetaValue) (reflect.Value, error)

type ID

type ID = aorm.ID

func SliceMetaGetDeleted

func SliceMetaGetDeleted(record reflect.Value, metaName string) []ID

type IDLabeler

type IDLabeler interface {
	Label() string
	GetID() ID
}

func IDLabel

func IDLabel(id ID, label string) IDLabeler

type IconContextGetter

type IconContextGetter interface {
	GetIcon(ctx *core.Context) string
}

type IconGetter

type IconGetter interface {
	GetIcon() string
}

type Layout

type Layout struct {
	StructValue
	PrepareFunc      func(crud *CRUD) *CRUD
	FormatResultFunc func(crud *CRUD, result interface{}) interface{}
	// contains filtered or unexported fields
}

func NewBasicDescriptionLayout

func NewBasicDescriptionLayout() *Layout

func NewBasicLayout

func NewBasicLayout() *Layout

func (*Layout) FormatResult

func (l *Layout) FormatResult(crud *CRUD, recorde interface{}) interface{}

func (*Layout) GetSelect

func (l *Layout) GetSelect() []interface{}

func (*Layout) GetType

func (l *Layout) GetType() interface{}

func (*Layout) NewStruct

func (l *Layout) NewStruct() interface{}

func (*Layout) Prepare

func (l *Layout) Prepare(crud *CRUD) *CRUD

func (*Layout) Select

func (l *Layout) Select(columns ...interface{})

type LayoutInterface

type LayoutInterface interface {
	Struct
	GetType() interface{}
	Prepare(crud *CRUD) *CRUD
	FormatResult(crud *CRUD, result interface{}) interface{}
	Select(columns ...interface{})
	GetSelect() []interface{}
}

type Meta

type Meta struct {
	*MetaName
	Alias            *MetaName
	FieldName        string
	FieldStruct      *aorm.StructField
	ContextResourcer FContextResourcer
	Setter           FSetter
	Valuer           FValuer
	GetRecordHandler func(ctx *core.Context, record interface{}) interface{}
	FormattedValuer  FFormattedValuer
	Config           MetaConfigInterface
	BaseResource     Resourcer
	Resource         Resourcer
	Permission       *roles.Permission
	Help             string
	HelpLong         string
	SaveID           bool
	Inline           bool
	Required         bool
	Icon             bool

	Data                       maps.Map
	Typ                        reflect.Type
	UIValidatorFunc            func(ctx *core.Context, recorde interface{}) string
	LoadRelatedBeforeSave      bool
	DisableSiblingsRequirement SiblingsRequirementCheckDisabled
	IsCollection               bool
	Permissioners              []core.Permissioner

	Severity       core.Severity
	SeveritifyFunc func(fv *FormattedValue)

	DefaultDeny bool
	// contains filtered or unexported fields
}

Meta meta struct definition

func (*Meta) CanCollection

func (this *Meta) CanCollection() bool

func (*Meta) DBName

func (this *Meta) DBName() string

func (*Meta) DefaultPermissionDeny

func (this *Meta) DefaultPermissionDeny() bool

func (*Meta) GetBaseResource

func (this *Meta) GetBaseResource() Resourcer

GetBaseResource get base resource from meta

func (*Meta) GetContextMetas

func (this *Meta) GetContextMetas(record interface{}, context *core.Context) (metas []Metaor)

func (*Meta) GetContextResource

func (this *Meta) GetContextResource(context *core.Context) Resourcer

func (*Meta) GetContextResourcer

func (this *Meta) GetContextResourcer() func(meta Metaor, context *core.Context) Resourcer

GetContextResource get resource from meta

func (*Meta) GetFieldName

func (this *Meta) GetFieldName() string

GetFieldName get meta's field name

func (*Meta) GetFieldStruct

func (this *Meta) GetFieldStruct() *aorm.StructField

GetFieldStruct get aorm field struct

func (*Meta) GetFormattedValuer

func (this *Meta) GetFormattedValuer() func(interface{}, *core.Context) *FormattedValue

GetFormattedValuer get formatted valuer from meta

func (*Meta) GetLabelC

func (this *Meta) GetLabelC(ctx *core.Context) string

func (*Meta) GetMetas

func (this *Meta) GetMetas() (metas []Metaor)

func (*Meta) GetRecordLabelC

func (this *Meta) GetRecordLabelC(ctx *core.Context, record interface{}) string

func (*Meta) GetReflectStructValueOrInstantiate

func (this *Meta) GetReflectStructValueOrInstantiate(record reflect.Value) reflect.Value

func (*Meta) GetResource

func (this *Meta) GetResource() Resourcer

func (Meta) GetSetter

func (this Meta) GetSetter() func(recorde interface{}, metaValue *MetaValue, context *core.Context) error

GetSetter get setter from meta

func (*Meta) GetValuer

func (this *Meta) GetValuer() func(interface{}, *core.Context) interface{}

GetValuer get valuer from meta

func (*Meta) HasPermission

func (this *Meta) HasPermission(mode roles.PermissionMode, context *core.Context) (perm roles.Perm)

AdminHasContextPermission check has permission or not

func (*Meta) Initialize

func (this *Meta) Initialize(virtual bool) error

Initialize initialize meta, will set valuer, setter if haven't configure it

func (*Meta) IsAlone

func (this *Meta) IsAlone() bool

func (*Meta) IsInline

func (this *Meta) IsInline() bool

func (*Meta) IsLoadRelatedBeforeSave

func (this *Meta) IsLoadRelatedBeforeSave() bool

func (*Meta) IsNewRecord

func (this *Meta) IsNewRecord(value interface{}) bool

func (*Meta) IsRequired

func (this *Meta) IsRequired() bool

func (*Meta) IsSiblingsRequirementCheckDisabled

func (this *Meta) IsSiblingsRequirementCheckDisabled() SiblingsRequirementCheckDisabled

func (*Meta) IsZero

func (this *Meta) IsZero(recorde, value interface{}) bool

func (*Meta) Namer

func (this *Meta) Namer() *MetaName

func (*Meta) Permissioner

func (this *Meta) Permissioner(p ...core.Permissioner)

func (*Meta) PreInitialize

func (this *Meta) PreInitialize() error

PreInitialize when will be run before initialize, used to fill some basic necessary information

func (*Meta) Proxier

func (this *Meta) Proxier() bool

func (*Meta) Record

func (this *Meta) Record(record interface{}) interface{}

func (*Meta) RecordRequirer

func (this *Meta) RecordRequirer() func(ctx *core.Context, record interface{}) bool

func (*Meta) RecordValidator

func (this *Meta) RecordValidator(f ...func(record interface{}, ctx *core.Context) (err error)) *Meta

func (*Meta) SetFieldName

func (this *Meta) SetFieldName(name string)

SetFieldName set meta's field name

func (*Meta) SetFormattedValuer

func (this *Meta) SetFormattedValuer(fc func(interface{}, *core.Context) *FormattedValue)

SetFormattedValuer set formatted valuer for meta

func (*Meta) SetPermission

func (this *Meta) SetPermission(permission *roles.Permission)

SetPermission set permission for meta

func (*Meta) SetSetter

func (this *Meta) SetSetter(fc func(recorde interface{}, metaValue *MetaValue, context *core.Context) error)

SetSetter set setter to meta

func (*Meta) SetValuer

func (this *Meta) SetValuer(fc func(interface{}, *core.Context) interface{})

SetValuer set valuer for meta

func (*Meta) Severitify

func (this *Meta) Severitify(fv *FormattedValue) *FormattedValue

func (*Meta) UIValidator

func (this *Meta) UIValidator(ctx *core.Context, recorde interface{}) string

func (*Meta) Validator

func (this *Meta) Validator(f ...func(record interface{}, values *MetaValue, ctx *core.Context) (err error)) *Meta

func (*Meta) Validators

func (this *Meta) Validators() []func(record interface{}, values *MetaValue, ctx *core.Context) (err error)

type MetaConfig

type MetaConfig struct {
}

MetaConfig base meta config struct

func (MetaConfig) ConfigureQorMeta

func (MetaConfig) ConfigureQorMeta(Metaor)

ConfigureQorMeta implement the MetaConfigInterface

type MetaConfigInterface

type MetaConfigInterface interface {
	ConfigureMetaInterface
}

MetaConfigInterface meta configuration interface

type MetaName

type MetaName struct {
	Name        string
	EncodedName string
}

func (*MetaName) GetEncodedName

func (meta *MetaName) GetEncodedName() string

GetEncodedName get meta's encodedName

func (*MetaName) GetEncodedNameOrDefault

func (meta *MetaName) GetEncodedNameOrDefault() string

GetEncodedName get meta's encodedName

func (*MetaName) GetName

func (meta *MetaName) GetName() string

GetName get meta's name

type MetaScanner

type MetaScanner interface {
	MetaScan(value interface{}) error
}

type MetaValue

type MetaValue struct {
	Processor  *Processor
	Parent     *MetaValue
	Name       string
	Value      interface{}
	Index      int
	MetaValues *MetaValues
	ReadOnly   bool
	Meta       Metaor

	NoBlank bool
	// contains filtered or unexported fields
}

MetaValue a struct used to hold information when convert inputs from HTTP form, JSON, CSV files and so on to meta values It will includes field name, field value and its configured Meta, if it is a nested resource, will includes nested metas in its MetaValues

func (*MetaValue) EachQueryVal

func (this *MetaValue) EachQueryVal(prefix []string, cb func(prefix []string, name string, value interface{}))

func (*MetaValue) FirstInterfaceValue

func (this *MetaValue) FirstInterfaceValue() (value interface{})

func (*MetaValue) LastStringValue

func (this *MetaValue) LastStringValue() (value string)

func (*MetaValue) Path

func (this *MetaValue) Path() string

func (*MetaValue) SetStringValue

func (this *MetaValue) SetStringValue(v string)

func (*MetaValue) StringValue

func (this *MetaValue) StringValue() string

type MetaValueScanner

type MetaValueScanner interface {
	MetaValueScan(ctx *core.Context, value *MetaValue) (err error)
}

type MetaValuer

type MetaValuer interface {
	MetaValue() interface{}
}

type MetaValues

type MetaValues struct {
	Disabled bool
	Values   []*MetaValue
	ByName   map[string]*MetaValue
}

MetaValues is slice of MetaValue

func ConvertFormDataToMetaValues

func ConvertFormDataToMetaValues(context *core.Context, form url.Values, multipartForm *multipart.Form, metaors []Metaor, prefix string, root ...*MetaValue) (_ *MetaValues, err error)

ConvertFormToMetaValues convert form to meta values

func ConvertFormToMetaValues

func ConvertFormToMetaValues(context *core.Context, request *http.Request, metaors []Metaor, prefix string, root ...*MetaValue) (*MetaValues, error)

ConvertFormToMetaValues convert form to meta values

func ConvertJSONToMetaValues

func ConvertJSONToMetaValues(context *core.Context, reader io.Reader, metaors []Metaor) (*MetaValues, error)

ConvertJSONToMetaValues convert json to meta values

func (*MetaValues) Add

func (this *MetaValues) Add(metaValue ...*MetaValue)

func (*MetaValues) CheckRequirement

func (this *MetaValues) CheckRequirement(context *core.Context, metaors ...Metaor) error

func (MetaValues) Get

func (mvs MetaValues) Get(name string) *MetaValue

Get get meta value from MetaValues with name

func (MetaValues) GetString

func (mvs MetaValues) GetString(name string) string

Get get meta value from MetaValues with name

func (*MetaValues) IsBlank

func (mvs *MetaValues) IsBlank() bool

func (*MetaValues) IsEmpty

func (mvs *MetaValues) IsEmpty() bool

func (*MetaValues) IsRequirementCheck

func (this *MetaValues) IsRequirementCheck() bool

func (*MetaValues) Reset

func (this *MetaValues) Reset()

type Metaor

type Metaor interface {
	core.Permissioner
	GetName() string
	GetFieldName() string
	GetFieldStruct() *aorm.StructField
	GetSetter() func(resource interface{}, metaValue *MetaValue, context *core.Context) error
	GetFormattedValuer() func(recorde interface{}, context *core.Context) *FormattedValue
	GetValuer() func(recorde interface{}, context *core.Context) interface{}
	GetContextResourcer() func(meta Metaor, context *core.Context) Resourcer
	GetResource() Resourcer
	GetBaseResource() Resourcer
	GetMetas() []Metaor
	GetContextMetas(recorde interface{}, context *core.Context) []Metaor
	GetContextResource(context *core.Context) Resourcer
	IsInline() bool
	IsRequired() bool
	RecordRequirer() func(ctx *core.Context, record interface{}) bool
	IsZero(recorde, value interface{}) bool
	GetLabelC(ctx *core.Context) string
	Validators() []func(record interface{}, values *MetaValue, ctx *core.Context) (err error)
	GetRecordLabelC(ctx *core.Context, record interface{}) string
	Proxier() bool
	IsAlone() bool
	CanCollection() bool
	IsSiblingsRequirementCheckDisabled() SiblingsRequirementCheckDisabled
	IsLoadRelatedBeforeSave() bool
	Record(record interface{}) interface{}
	GetReflectStructValueOrInstantiate(record reflect.Value) reflect.Value
	Severitify(fv *FormattedValue) *FormattedValue
}

Metaor interface

type ParentRelationship

type ParentRelationship struct {
	Data maps.Map
	aorm.Relationship
}

type Processor

type Processor struct {
	Result     interface{}
	Resource   Resourcer
	Context    *core.Context
	MetaValue  *MetaValue
	MetaValues *MetaValues
	Flag       ProcessorFlag
	// contains filtered or unexported fields
}

func DecodeToResource

func DecodeToResource(res Resourcer, result interface{}, metaValue *MetaValue, context *core.Context, flag ...ProcessorFlag) *Processor

DecodeToResource decode meta values to resource result

func (*Processor) Commit

func (this *Processor) Commit() error

func (*Processor) Deleted

func (this *Processor) Deleted() bool

func (*Processor) Initialize

func (this *Processor) Initialize() (err error)

func (*Processor) Internal

func (this *Processor) Internal() *Processor

func (*Processor) Start

func (this *Processor) Start() (err error)

func (*Processor) Validate

func (this *Processor) Validate() error

type ProcessorFlag

type ProcessorFlag uint16
const (
	ProcNone ProcessorFlag = 1 << iota
	ProcSkipLeft
	ProcSkipRequireCheck
	ProcSkipProcessors
	ProcSkipValidations
	ProcSkipPermissions
	ProcSkipLoad
	ProcSkipChildLoad
	ProcMerge
)

func (ProcessorFlag) Clear

func (ProcessorFlag) Has

func (b ProcessorFlag) Has(flag ProcessorFlag) bool

func (ProcessorFlag) Set

func (ProcessorFlag) Toggle

func (b ProcessorFlag) Toggle(flag ProcessorFlag) ProcessorFlag

type ReadonlyMetaor

type ReadonlyMetaor interface {
	Metaor

	CanReadOnly() bool
	Metaor() Metaor
}

type Repository

type Repository interface {
	FindOneLayout(key string, layout ...interface{}) (result interface{}, err error)
	FindManyLayout(layout ...interface{}) (result interface{}, err error)
	FindManyLayoutOrDefault(layout interface{}, defaul ...interface{}) (interface{}, error)
	FindManyBasic() (result []BasicValuer, err error)
	FindOneBasic(key string) (result BasicValuer, err error)
	FindOne(result interface{}, key ...string) (err error)
	FindMany(result interface{}) (err error)
	Create(record interface{}) error
	Update(record interface{}) error
	SaveOrCreate(recorde interface{}) error
	Delete(record interface{}) (err error)
}

type RepositoryClient

type RepositoryClient interface {
	Repository
	edis.EventDispatcherInterface
	SetDB(DB *aorm.DB) RepositoryClient
	DB() *aorm.DB
	Resource() Resourcer
	Layout() LayoutInterface
	Parent() RepositoryClient
	MetaValues() *MetaValues
	SetMetaValues(metaValues *MetaValues) RepositoryClient
	Dispatchers() []edis.EventDispatcherInterface
	AppendDispatcher(dis ...edis.EventDispatcherInterface) RepositoryClient
	SetLayout(layout interface{}) RepositoryClient
	SetLayoutOrDefault(layout interface{}, defaul ...interface{}) RepositoryClient
	SetContext(ctx *core.Context) RepositoryClient
}

type RepositoryContext

type RepositoryContext struct {
}

type Resource

type Resource struct {
	edis.EventDispatcher
	StructValue
	UID           string
	UIDHash       uintptr
	ID            string
	Name          string
	PluralName    string
	PKG           string
	PkgPath       string
	I18nPrefix    string
	PrimaryFields []*aorm.StructField
	Permission    *roles.Permission
	Validators    []func(interface{}, *MetaValues, *core.Context) error
	Processors    []func(interface{}, *MetaValues, *core.Context) error

	ModelStruct    *aorm.ModelStruct
	PathLevel      int
	ParentRelation *ParentRelationship

	Data      maps.SyncedMap
	Layouts   map[string]LayoutInterface
	Singleton bool

	ContextSetupFunc func(ctx *core.Context) *core.Context

	Permissioners []core.Permissioner

	Tags aorm.TagSetting
	// contains filtered or unexported fields
}

Resource is a struct that including basic definition of qor resource

func New

func New(value interface{}, id, uid string, modelStruct *aorm.ModelStruct) *Resource

New initialize qor resource

func (*Resource) AddProcessor

func (res *Resource) AddProcessor(fc func(record interface{}, metaValues *MetaValues, ctx *core.Context) error)

AddProcessor add processor to resource, it is used to process data before creating, updating, will rollback the change if it return any error

func (*Resource) AddValidator

func (res *Resource) AddValidator(fc func(record interface{}, metaValues *MetaValues, ctx *core.Context) error)

AddValidator add validator to resource, it will invoked when creating, updating, and will rollback the change if validator return any error

func (*Resource) BasicDescriptableValue

func (res *Resource) BasicDescriptableValue(ctx *core.Context, record interface{}) BasicDescriptableValuer

func (*Resource) BasicValue

func (res *Resource) BasicValue(ctx *core.Context, record interface{}) BasicValuer

func (*Resource) ConfigGet

func (res *Resource) ConfigGet(key interface{}) (value interface{}, ok bool)

func (*Resource) ConfigSet

func (res *Resource) ConfigSet(key, value interface{})

func (*Resource) ContextSetup

func (res *Resource) ContextSetup(ctx *core.Context) *core.Context

func (*Resource) Crud

func (res *Resource) Crud(ctx *core.Context) *CRUD

func (*Resource) CrudDB

func (res *Resource) CrudDB(db *aorm.DB) *CRUD

func (*Resource) DefaultDenyMode

func (res *Resource) DefaultDenyMode() bool

func (*Resource) DefaultPrimaryKeyOrder

func (res *Resource) DefaultPrimaryKeyOrder() aorm.Order

func (*Resource) FieldOf

func (res *Resource) FieldOf(rec interface{}, fieldName string) *aorm.Field

func (*Resource) FullID

func (res *Resource) FullID() string

func (*Resource) GetContextMetas

func (res *Resource) GetContextMetas(*core.Context) []Metaor

func (*Resource) GetData

func (res *Resource) GetData() maps.Interface

func (*Resource) GetID

func (res *Resource) GetID() string

func (*Resource) GetKey

func (res *Resource) GetKey(value interface{}) aorm.ID

func (*Resource) GetLayout

func (res *Resource) GetLayout(name string, defaul ...string) LayoutInterface

func (*Resource) GetLayoutOrDefault

func (res *Resource) GetLayoutOrDefault(name string) LayoutInterface

func (*Resource) GetMetas

func (res *Resource) GetMetas([]string) []Metaor

GetMetas get defined metas, to match interface `Resourcer`

func (*Resource) GetModelStruct

func (res *Resource) GetModelStruct() *aorm.ModelStruct

func (*Resource) GetParentRelation

func (res *Resource) GetParentRelation() *ParentRelationship

func (*Resource) GetParentResource

func (res *Resource) GetParentResource() Resourcer

func (*Resource) GetPathLevel

func (res *Resource) GetPathLevel() int

func (*Resource) GetPrimaryFields

func (res *Resource) GetPrimaryFields() []*aorm.StructField

func (*Resource) GetPrivateLabel

func (res *Resource) GetPrivateLabel() string

func (*Resource) GetResource

func (res *Resource) GetResource() *Resource

GetResource return itself to match interface `Resourcer`

func (*Resource) HasKey

func (res *Resource) HasKey() bool

func (*Resource) HasPermission

func (res *Resource) HasPermission(mode roles.PermissionMode, context *core.Context) (perm roles.Perm)

func (*Resource) InstanceOf

func (res *Resource) InstanceOf(rec interface{}, fieldName ...string) *aorm.Instance

func (*Resource) IsSingleton

func (res *Resource) IsSingleton() bool

func (*Resource) Layout

func (res *Resource) Layout(name string, layout LayoutInterface)

func (*Resource) NewForIdS

func (this *Resource) NewForIdS(id string) (interface{}, error)

func (*Resource) NewStruct

func (res *Resource) NewStruct(site ...*core.Site) interface{}

NewStruct initialize a struct for the Resource

func (*Resource) NewStructCallback

func (res *Resource) NewStructCallback(callbacks ...func(obj interface{}, site *core.Site)) *Resource

func (*Resource) OnDBAction

func (res *Resource) OnDBAction(cb func(e *DBEvent), action ...DBActionEvent) (err error)

func (*Resource) OnDBActionE

func (res *Resource) OnDBActionE(cb func(e *DBEvent) error, action ...DBActionEvent) (err error)

func (*Resource) Options

func (res *Resource) Options(opt ...core.Option) *Resource

func (*Resource) ParamIDName

func (res *Resource) ParamIDName() string

func (*Resource) ParamIDPattern

func (res *Resource) ParamIDPattern() string

func (*Resource) ParseID

func (res *Resource) ParseID(s string) (ID aorm.ID, err error)

func (*Resource) Permissioner

func (res *Resource) Permissioner(p core.Permissioner, pN ...core.Permissioner)

func (*Resource) PrimaryQuery

func (res *Resource) PrimaryQuery(ctx *core.Context, primaryValue aorm.ID, exclude ...bool) (string, []interface{}, error)

IdToPrimaryQuery to primary query params

func (*Resource) PrimaryValues

func (res *Resource) PrimaryValues(id aorm.ID) (args []interface{})

IdToPrimaryQuery to primary query params

func (*Resource) SetDefaultDenyMode

func (res *Resource) SetDefaultDenyMode(defaultDenyMode func() bool)

func (*Resource) SetDefaultPrimaryKeyOrder

func (res *Resource) SetDefaultPrimaryKeyOrder(val aorm.Order)

func (*Resource) SetI18nModel

func (res *Resource) SetI18nModel(value interface{})

func (*Resource) SetI18nModelStruct

func (res *Resource) SetI18nModelStruct(ms *aorm.ModelStruct, name ...string)

func (*Resource) SetI18nName

func (res *Resource) SetI18nName(name string)

func (*Resource) SetID

func (res *Resource) SetID(record interface{}, id aorm.ID)

func (*Resource) SetParent

func (res *Resource) SetParent(parent Resourcer, rel *ParentRelationship)

func (*Resource) SetPrimaryFields

func (res *Resource) SetPrimaryFields(fields ...string) error

SetPrimaryFields set primary fields

func (*Resource) ToParam

func (res *Resource) ToParam() string

func (*Resource) Validate

func (res *Resource) Validate(record interface{}, values *MetaValues, ctx *core.Context, onError func(err error) (stop bool))

func (*Resource) Validator

func (res *Resource) Validator(f ...func(recorde interface{}, values *MetaValues, ctx *core.Context) (err error))

type ResourceResultMetaValuesBeforeCommiter

type ResourceResultMetaValuesBeforeCommiter interface {
	BeforeCommitMetaValues(ctx *core.Context, res Resourcer, metaValues *MetaValues)
}

type Resourcer

type Resourcer interface {
	edis.EventDispatcherInterface
	Struct
	core.Permissioner
	GetID() string
	FullID() string
	GetResource() *Resource
	GetPrimaryFields() []*aorm.StructField
	GetMetas([]string) []Metaor
	GetContextMetas(*core.Context) []Metaor
	NewStruct(site ...*core.Site) interface{}
	GetPathLevel() int
	SetParent(parent Resourcer, rel *ParentRelationship)
	GetParentResource() Resourcer
	GetParentRelation() *ParentRelationship
	IsSingleton() bool
	ToParam() string
	ParamIDPattern() string
	ParamIDName() string
	BasicValue(ctx *core.Context, recorde interface{}) BasicValuer
	BasicDescriptableValue(ctx *core.Context, record interface{}) BasicDescriptableValuer
	Crud(ctx *core.Context) *CRUD
	CrudDB(db *aorm.DB) *CRUD
	Layout(name string, layout LayoutInterface)
	GetLayoutOrDefault(name string) LayoutInterface
	GetLayout(name string, defaul ...string) LayoutInterface
	HasKey() bool
	ContextSetup(ctx *core.Context) *core.Context
	GetKey(value interface{}) aorm.ID
	ParseID(s string) (ID aorm.ID, err error)
	SetID(record interface{}, id aorm.ID)
	PrimaryValues(id aorm.ID) (args []interface{})
	GetModelStruct() *aorm.ModelStruct
	DefaultDenyMode() bool
	DefaultPrimaryKeyOrder() aorm.Order
	SetDefaultPrimaryKeyOrder(val aorm.Order)
}

Resourcer interface

type ResourcerMetaValuesBeforeCommiter

type ResourcerMetaValuesBeforeCommiter interface {
	BeforeCommitMetaValues(ctx *core.Context, record interface{}, metaValues *MetaValues)
}

type SiblingsRequirementCheckDisabled

type SiblingsRequirementCheckDisabled uint8
const (
	SiblingsRequirementCheckDisabledOnTrue SiblingsRequirementCheckDisabled = iota + 1
	SiblingsRequirementCheckDisabledOnFalse
)

func (SiblingsRequirementCheckDisabled) OnFalse

func (this SiblingsRequirementCheckDisabled) OnFalse() bool

func (SiblingsRequirementCheckDisabled) OnTrue

func (this SiblingsRequirementCheckDisabled) OnTrue() bool

type SliceValue

type SliceValue struct {
	Current   interface{}
	Deleted   interface{}
	DeletedID []ID
	// contains filtered or unexported fields
}

func (*SliceValue) DeletedMap

func (s *SliceValue) DeletedMap() map[string]bool

func (*SliceValue) IsDeleted

func (s *SliceValue) IsDeleted(id ID) bool

func (*SliceValue) Iterator

func (s *SliceValue) Iterator() template.Iterator

func (*SliceValue) Len

func (s *SliceValue) Len() (l int)

type SliceValueIterator

type SliceValueIterator struct {
	Slices []reflect.Value
	// contains filtered or unexported fields
}

func (*SliceValueIterator) Done

func (s *SliceValueIterator) Done(state interface{}) bool

func (*SliceValueIterator) Next

func (s *SliceValueIterator) Next(state interface{}) (item, nextState interface{})

func (*SliceValueIterator) Start

func (s *SliceValueIterator) Start() (state interface{})

type StringsScanner

type StringsScanner interface {
	// ContextScan scan value
	StringsScan(src []string) error
}

StringsScanner interface Allow to scan value with reflect.StructField arg

type Struct

type Struct interface {
	New() interface{}
	NewSlice() interface{}
	NewSliceArgs(len, cap int) interface{}
	NewSlicePtr() interface{}
	NewSlicePtrArgs(len, cap int) interface{}
	NewSliceRecord() (slice interface{}, recorde interface{})
	NewChan(buf int) interface{}
	NewChanPtr(buf int) interface{}
	GetValue() interface{}
}

type StructValue

type StructValue struct {
	Value interface{}
}

func NewStructValue

func NewStructValue(value interface{}) StructValue

func (StructValue) GetValue

func (v StructValue) GetValue() interface{}

func (StructValue) New

func (v StructValue) New() interface{}

NewStruct initialize a struct for the Value

func (StructValue) NewChan

func (v StructValue) NewChan(buf int) interface{}

NewChan initialize a channel of struct for the Value

func (StructValue) NewChanPtr

func (v StructValue) NewChanPtr(buf int) interface{}

NewChanPtr initialize a channel of struct ptr for the Value

func (StructValue) NewSlice

func (v StructValue) NewSlice() interface{}

NewSlice initialize a slice of struct for the Value

func (StructValue) NewSliceArgs

func (v StructValue) NewSliceArgs(len, cap int) interface{}

func (StructValue) NewSlicePtr

func (v StructValue) NewSlicePtr() interface{}

NewSlice initialize a slice of struct for the Value

func (StructValue) NewSlicePtrArgs

func (v StructValue) NewSlicePtrArgs(len, cap int) interface{}

func (StructValue) NewSliceRecord

func (v StructValue) NewSliceRecord() (slice interface{}, recorde interface{})

NewSlice initialize a slice of struct for the Value

type ValueSetter

type ValueSetter struct {
	// contains filtered or unexported fields
}

func NewValueSetter

func NewValueSetter(value reflect.Value) *ValueSetter

func (ValueSetter) SetBool

func (this ValueSetter) SetBool(x, null bool)

func (ValueSetter) SetInt

func (this ValueSetter) SetInt(x int64)

func (ValueSetter) SetNil

func (this ValueSetter) SetNil(v bool)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL