cachex

package
v0.0.0-...-4675295 Latest Latest
Warning

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

Go to latest
Published: Feb 1, 2024 License: Apache-2.0 Imports: 9 Imported by: 3

Documentation

Overview

配置修正对象的特点: 1. 极少变化 使用配置修正后, 不能进行修改 目前分两种应用场景 1. 配置修正 2. 数据库读写

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetClassCreator

func GetClassCreator(key string) func(data datax.M) IObject

func SetClassCreator

func SetClassCreator(class string, creator func(data datax.M) IObject)

Types

type IModify

type IModify interface {
	// 修正是否生效
	Valid(ctx interface{}, field string) bool
	// 修正后的值
	Value(ctx interface{}, field string, origin interface{}) (last interface{})
	// 修正后的数组长度
	Length() int
}

type IObject

type IObject interface {
	RefSetThis(val IObject)
	RefUseModify()
	RefSetMapOrArrayModify(modify IModify)
	RefSetClassModify(field string, modify IModify)
	RefUseVersion()
	// 如果设置了schema, 返回schema的分类【catalog】
	RefClassCatalog() string
	// 如果是class类型, 返回class的类型名字, 否则返回空
	RefClassType() string
	// 通常作为Root才有ClassId
	RefClassId() string
	// 当对象为any类型时
	RefAnyType() string
	RefSetAnyType(val string)
	// RefUseModify打开修正功能后,需要设置上下文,提供给修正函数
	RefSetContext(modifyContext interface{})
	RefSetClassId(id string)
	RefGet(field string) (val interface{})
	// basic
	RefGetInt(field string) (val int)
	RefGetUint(field string) (val uint)
	RefGetFloat64(field string) (val float64)
	RefGetString(field string) (val string)
	RefGetBool(field string) (val bool)

	RefIsObject(field string) (r bool)
	// 明确知道当前字段的类型为Class/Map时使用,必然返回一个Object
	// 如果字段的值为nil,则创建对象,调用RefIsNil()返回true
	// 如果当前字段不是对象,发生异常
	RefGetObject(field string) IObject
	// 只支持基础类型的数组
	RefGetArray(field string) IObject

	RefSet(field string, val interface{}) error

	// 设置字段的值,如果字段的类型是Object,使用此方法
	RefSetObject(field string, val IObject)
	RefSetByPath(path string, val interface{})

	RefHas(field string) (val bool)

	RefIsNil() bool
	RefSetNil() IObject
	RefNewIfNil() IObject
	RefNew() IObject

	RefKeys() []string
	ToMap() datax.M

	// key-value
	// * 如果field为object/map
	// 		* 如果value==nil, 标识输出object/map的所有字段
	//		* 如果value==Map, 标识输出object/map中,Map的名字为Keys的字段
	ToMapByField(fieldMap datax.M) (r datax.M)

	RefLength() int
	RefNewByMap(data map[string]interface{})
	RefUpdate(data map[string]interface{})

	RefRemove(field string)
	RefRemoveByMap(fieldMap map[string]interface{})

	RefReplaceObjectByPath(path string, val map[string]interface{})
	// contains filtered or unexported methods
}

func GetObjectByPath

func GetObjectByPath(object IObject, path string) IObject

paht = /field1/field2 or field1/field2

func GetObjectFieldByPath

func GetObjectFieldByPath(object IObject, path string) (obj IObject, field string)

path = /field1/field2 or field1/field2

type Object

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

func NewObject

func NewObject(data datax.M) (obj *Object)

func NewObjectByType

func NewObjectByType(schemaType schemax.IType, data datax.M) (obj *Object)

需要提前加载schemax的类型描述数据,否则报告异常

func (*Object) GetObjectByPath

func (s *Object) GetObjectByPath(path string) IObject

func (*Object) RefAnyType

func (s *Object) RefAnyType() string

func (*Object) RefClassCatalog

func (s *Object) RefClassCatalog() string

func (*Object) RefClassId

func (s *Object) RefClassId() string

func (*Object) RefClassType

func (s *Object) RefClassType() string

func (*Object) RefGet

func (s *Object) RefGet(field string) (val interface{})

func (*Object) RefGetArray

func (s *Object) RefGetArray(field string) IObject

func (*Object) RefGetBool

func (s *Object) RefGetBool(field string) bool

func (*Object) RefGetFloat64

func (s *Object) RefGetFloat64(field string) float64

func (*Object) RefGetInt

func (s *Object) RefGetInt(field string) int

func (*Object) RefGetObject

func (s *Object) RefGetObject(field string) (r IObject)

如果当前对象为nil,触发panic

func (*Object) RefGetString

func (s *Object) RefGetString(field string) string

func (*Object) RefGetUint

func (s *Object) RefGetUint(field string) uint

func (*Object) RefHas

func (s *Object) RefHas(field string) bool

func (*Object) RefIsNil

func (s *Object) RefIsNil() bool

func (*Object) RefIsObject

func (s *Object) RefIsObject(field string) (r bool)

当前对象是否Object any类型无法判断

func (*Object) RefKeys

func (s *Object) RefKeys() (r []string)

func (*Object) RefLength

func (s *Object) RefLength() int

func (*Object) RefNew

func (s *Object) RefNew() IObject

新建对象的数据, 旧的数据清除

func (*Object) RefNewByMap

func (s *Object) RefNewByMap(data map[string]interface{})

func (*Object) RefNewIfNil

func (s *Object) RefNewIfNil() IObject

如果是空的才新建对象的数据 返回自身,便于链式调用

func (*Object) RefRemove

func (s *Object) RefRemove(field string)

func (*Object) RefRemoveByMap

func (s *Object) RefRemoveByMap(fieldMap map[string]interface{})

func (*Object) RefReplaceObjectByPath

func (s *Object) RefReplaceObjectByPath(path string, val map[string]interface{})

func (*Object) RefSet

func (s *Object) RefSet(field string, val interface{}) error

设置字段的值,val会根据字段类型进行处理

func (*Object) RefSetAnyType

func (s *Object) RefSetAnyType(val string)

func (*Object) RefSetByPath

func (s *Object) RefSetByPath(path string, val interface{})

func (*Object) RefSetClassId

func (s *Object) RefSetClassId(classId string)

func (*Object) RefSetClassModify

func (s *Object) RefSetClassModify(field string, modify IModify)

func (*Object) RefSetContext

func (s *Object) RefSetContext(modifyContext interface{})

func (*Object) RefSetMapOrArrayModify

func (s *Object) RefSetMapOrArrayModify(modify IModify)

func (*Object) RefSetNil

func (s *Object) RefSetNil() IObject

func (*Object) RefSetObject

func (s *Object) RefSetObject(field string, r IObject)

设置字段的值,如果字段的类型是Object,使用此方法

func (*Object) RefSetThis

func (s *Object) RefSetThis(val IObject)

func (*Object) RefUpdate

func (s *Object) RefUpdate(data map[string]interface{})

更新对象 如果data为nil,则设置对象为nil 如果data[key]为nil, 则设置对象为nil

func (*Object) RefUseModify

func (s *Object) RefUseModify()

func (*Object) RefUseVersion

func (s *Object) RefUseVersion()

func (*Object) ToMap

func (s *Object) ToMap() datax.M

func (*Object) ToMapByField

func (s *Object) ToMapByField(fieldMap datax.M) (r datax.M)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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