model

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Dec 7, 2022 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ColumnMeta

type ColumnMeta struct {
	ColumnName      string
	FieldName       string
	Typ             reflect.Type
	IsPrimaryKey    bool
	IsAutoIncrement bool
	// Offset 是字段偏移量。需要注意的是,这里的字段偏移量是相对于整个结构体的偏移量
	// 例如在组合的情况下,
	// type A struct {
	//     name string
	//     B
	// }
	// type B struct {
	//     age int
	// }
	// age 的偏移量是相对于 A 的起始地址的偏移量
	Offset uintptr
	// IsHolderType 用于表达是否是 Holder 的类型
	// 所谓的 Holder,就是指同时实现了 sql.Scanner 和 driver.Valuer 两个接口的类型
	IsHolderType bool
	// FieldIndexes 用于表达从最外层结构体找到当前ColumnMeta对应的Field所需要的索引集
	FieldIndexes []int
}

ColumnMeta represents model's field, or column

type MetaRegistry

type MetaRegistry interface {
	Get(table interface{}) (*TableMeta, error)
	Register(table interface{}, opts ...TableMetaOption) (*TableMeta, error)
}

MetaRegistry stores table metadata

func NewMetaRegistry

func NewMetaRegistry() MetaRegistry

func NewTagMetaRegistry

func NewTagMetaRegistry() MetaRegistry

type TableMeta

type TableMeta struct {
	TableName string
	Columns   []*ColumnMeta
	// FieldMap 是字段名到列元数据的映射
	FieldMap map[string]*ColumnMeta
	// ColumnMap 是列名到列元数据的映射
	ColumnMap map[string]*ColumnMeta
	Typ       reflect.Type
}

TableMeta represents data model, or a table

type TableMetaOption

type TableMetaOption func(meta *TableMeta)

TableMetaOption represents options of TableMeta, this options will cover default cover.

func IgnoreFieldsOption

func IgnoreFieldsOption(fieldNames ...string) TableMetaOption

IgnoreFieldsOption function provide an option to ignore some fields when register table.

Jump to

Keyboard shortcuts

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