model

package
v0.0.0-...-bc9e848 Latest Latest
Warning

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

Go to latest
Published: Dec 1, 2024 License: MIT Imports: 11 Imported by: 0

Documentation

Overview

Package model

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RegisterDefaultFunc

func RegisterDefaultFunc(fn DefaultFunc, tag string, fields ...interface{})

RegisterDefaultFunc 注册默认值处理函数

func RegisterDefaultPrepareFunc

func RegisterDefaultPrepareFunc(fn DefaultPrepareFunc, tag string, fields ...interface{})

RegisterDefaultPrepareFunc 注册默认值预处理函数

Types

type Default

type Default struct {
	Value          string
	ValueInterface interface{}
	DefaultFunc    DefaultFunc
	// contains filtered or unexported fields
}

func NewDefault

func NewDefault(field reflect.StructField) *Default

func (*Default) GetValue

func (d *Default) GetValue(ctx context.Context) interface{}

GetValue 获取默认值,优先使用 DefaultFunc

func (*Default) HaveDefault

func (d *Default) HaveDefault() bool

type DefaultFunc

type DefaultFunc func(context.Context, interface{}) interface{}

func GetDefaultFunc

func GetDefaultFunc(field interface{}, tag string) DefaultFunc

GetDefaultFunc 获取默认值处理函数

type DefaultPrepareFunc

type DefaultPrepareFunc func(reflect.Type, string) (interface{}, error)

func GetDefaultPrepareFunc

func GetDefaultPrepareFunc(field interface{}, tag string) DefaultPrepareFunc

GetDefaultPrepareFunc 获取默认值预处理函数

type Field

type Field struct {
	FieldType reflect.Type

	PrimaryKey bool

	JsonKey string // 空表示不能从json读写
	DBKey   string // 空表示不与数据库交互

	Gorm    *Gorm
	Json    *Json
	Default *Default
	Operate *Operate
}

func NewField

func NewField(field reflect.StructField) *Field

func (*Field) GetDefaultValue

func (field *Field) GetDefaultValue(ctx context.Context) interface{}

func (*Field) HaveDefaultValue

func (field *Field) HaveDefaultValue() bool

func (*Field) New

func (field *Field) New() interface{}

New 实例化具体Field

func (*Field) Parse

func (field *Field) Parse(value string) (interface{}, error)

Parse 解析一个field,返回对应类型的数据

func (Field) ReadOnly

func (field Field) ReadOnly() bool

func (Field) Where

func (field Field) Where() string

func (Field) WhereValue

func (field Field) WhereValue(value interface{}) interface{}

type Gorm

type Gorm struct {
	Column string
	Tags   map[string]string
}

func NewGorm

func NewGorm(field reflect.StructField) *Gorm

NewGorm 创建一个gorm tag分析的struct 注意这里只使用了默认的列名策略,支持自定义策略,需要透传db对象,过于复杂

type IFieldDefault

type IFieldDefault interface {
	GetDefault(context.Context, interface{}) interface{}
}

type IFieldDefaultPrepare

type IFieldDefaultPrepare interface {
	GetDefaultPrepare(reflect.Type, string) (interface{}, error)
}

type Json

type Json struct {
	Name     string
	ReadOnly bool
}

func NewJson

func NewJson(field reflect.StructField) *Json

type Model

type Model struct {
	ModelInterface interface{}
	ModelType      reflect.Type
	// DB 主键标识
	PrimaryKey string

	// struct名到json字段
	Name2Json map[string]string
	// struct名到db列
	Name2Column map[string]string
	// json字段到struct名
	Json2Name map[string]string
	// db列到struct名
	Column2Name map[string]string
	// struct名到db列
	Name2Field map[string]*Field
}

Model model解析类

func NewModel

func NewModel(model interface{}) *Model

NewModel NewParser Model 实例化,确保尽在启动阶段调用,而不会在请求处理阶段调用

func (*Model) CheckPrimaryKey

func (model *Model) CheckPrimaryKey() error

func (*Model) FieldNames

func (model *Model) FieldNames(data map[string]interface{}) []string

func (*Model) Init

func (model *Model) Init()

func (*Model) New

func (model *Model) New() interface{}

New 实例化具体Model

func (*Model) NewSlice

func (model *Model) NewSlice() interface{}

NewSlice 实例化具体Model的切片,用于列表查询

func (*Model) Parse

func (model *Model) Parse(b []byte) (interface{}, error)

Parse 注意返回的是model的指针

func (*Model) ParseDefault

func (model *Model) ParseDefault(ctx context.Context, data interface{}, input map[string]interface{}) error

ParseDefault 解析默认值,添加的默认值会被记录到input中

func (*Model) ParseDefaultWithKeys

func (model *Model) ParseDefaultWithKeys(ctx context.Context, data interface{}, keys []string, input map[string]interface{}) error

ParseDefaultWithKeys 按固定输入key解析默认值,添加的默认值会被记录到input中

func (*Model) ParseFromQuery

func (model *Model) ParseFromQuery(query map[string]string) (interface{}, error)

ParseFromQuery 注意返回的是model的指针

func (*Model) ParsePrimaryKey

func (model *Model) ParsePrimaryKey(primaryKey string) (interface{}, error)

ParsePrimaryKey 注意返回的是model的指针

func (*Model) Where

func (model *Model) Where(query *gorm.DB, key string, value interface{}) *gorm.DB

Where 获取字段的where条件,key为 db 中的 列名

type Operate

type Operate struct {
	Operate    string
	RawOperate string
}

func NewOperate

func NewOperate(field reflect.StructField) *Operate

func (*Operate) Value

func (operate *Operate) Value(value interface{}) interface{}

type Unmarshaler

type Unmarshaler interface {
	UnmarshalString(string) error
}

Jump to

Keyboard shortcuts

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