ens

package module
v0.0.1-rc8 Latest Latest
Warning

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

Go to latest
Published: Aug 16, 2023 License: MIT Imports: 13 Imported by: 5

README

ens

Documentation

Index

Constants

View Source
const (
	TagSmallCamelCase = "smallCamelCase"
	TagCamelCase      = "camelCase"
	TagSnakeCase      = "snakeCase"
	TagKebab          = "kebab"
)

Variables

This section is empty.

Functions

func Bool

func Bool(name string) *boolBuilder

Bool returns a new Field with type bool.

func Bytes

func Bytes(name string) *bytesBuilder

Bytes returns a new Field with type bytes/buffer. In MySQL and SQLite, it is the "BLOB" type, and it does not support for Gremlin.

func Decimal

func Decimal(name string) *stringBuilder

Decimal returns a new Field with type decimal. limitation on the size 255.

func Enum

func Enum(name string) *enumBuilder

Enum returns a new Field with type enum.

func Field

func Field(t *GoType, name string) *fieldBuilder

Field returns a new Field with the type.

func FieldFromDef

func FieldFromDef(t *GoType, def ColumnDef) *fieldBuilder

FieldFromDef returns a new Field with the type and ColumnDef. auto set name, comment, nullable, column and optional.

func Float32

func Float32(name string) *float32Builder

Float32 returns a new Field with type float32.

func Float64

func Float64(name string) *float64Builder

Float64 returns a new Field with type float64.

func Floats

func Floats(name string) *sliceBuilder[float64]

Floats returns a new JSON Field with type []float.

func ForeignKey

func ForeignKey(symbol string) *foreignKeyBuilder

ForeignKeyFromDef returns a new ForeignKey with the ForeignKeyDef.

func ForeignKeyFromDef

func ForeignKeyFromDef(def ForeignKeyDef) *foreignKeyBuilder

ForeignKeyFromDef returns a new ForeignKey with the ForeignKeyDef.

func Index

func Index(name string) *indexBuilder

Index returns a new Index with the name.

func IndexFromDef

func IndexFromDef(e IndexDef) *indexBuilder

IndexFromDef returns a new Index with the IndexDef. auto set name, fields, index.

func Int

func Int(name string) *intBuilder

Int returns a new Field with type int.

func Int16

func Int16(name string) *int16Builder

Int16 returns a new Field with type int16.

func Int32

func Int32(name string) *int32Builder

Int32 returns a new Field with type int32.

func Int64

func Int64(name string) *int64Builder

Int64 returns a new Field with type int64.

func Int8

func Int8(name string) *int8Builder

Int8 returns a new Field with type int8.

func Ints

func Ints(name string) *sliceBuilder[int]

Ints returns a new JSON Field with type []int.

func JSON

func JSON(name string) *jsonBuilder

JSON returns a new Field with type json that is serialized to the given object.

func PkgName

func PkgName(path string) string

PkgName returns the package name from a Go path with a package qualifier. github.com/things/ens -> ens

func PkgQualifier

func PkgQualifier(ident string) string

PkgQualifier returns the package name from a Go identifier with a package qualifier. eg. time.Time -> time

func String

func String(name string) *stringBuilder

String returns a new Field with type string. limitation on the size 255.

func Strings

func Strings(name string) *sliceBuilder[string]

Strings returns a new JSON Field with type []string.

func TagName

func TagName(kind, name string) string

func Time

func Time(name string) *timeBuilder

Time returns a new Field with type timestamp.

func UUID

func UUID(name string, typ driver.Valuer) *uuidBuilder

UUID returns a new Field with type UUID.

func Uint

func Uint(name string) *uintBuilder

Uint returns a new Field with type uint.

func Uint16

func Uint16(name string) *uint16Builder

Uint16 returns a new Field with type uint16.

func Uint32

func Uint32(name string) *uint32Builder

Uint32 returns a new Field with type uint32.

func Uint64

func Uint64(name string) *uint64Builder

Uint64 returns a new Field with type uint64.

func Uint8

func Uint8(name string) *uint8Builder

Uint8 returns a new Field with type uint8.

Types

type ColumnDef

type ColumnDef interface {
	Column() *schema.Column
	Definition() string
	GormTag(*schema.Table) string
}

type EntityBuilder

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

func EntityFromDef

func EntityFromDef(def TableDef) *EntityBuilder

EntityFromDef returns a new entity with the TableDef. auto set name, comment, table.

func (*EntityBuilder) Fields

func (self *EntityBuilder) Fields() []Fielder

func (*EntityBuilder) ForeignKeys

func (self *EntityBuilder) ForeignKeys() []ForeignKeyer

func (*EntityBuilder) Indexes

func (self *EntityBuilder) Indexes() []Indexer

func (*EntityBuilder) Metadata

func (self *EntityBuilder) Metadata() (name, comment string)

func (*EntityBuilder) SetFields

func (self *EntityBuilder) SetFields(fields ...Fielder) *EntityBuilder

func (*EntityBuilder) SetForeignKeys

func (self *EntityBuilder) SetForeignKeys(fks ...ForeignKeyer) *EntityBuilder

func (*EntityBuilder) SetIndexes

func (self *EntityBuilder) SetIndexes(indexes ...Indexer) *EntityBuilder

func (*EntityBuilder) SetMetadata

func (self *EntityBuilder) SetMetadata(name, comment string) *EntityBuilder

func (*EntityBuilder) SetTable

func (self *EntityBuilder) SetTable(tb TableDef) *EntityBuilder

func (*EntityBuilder) Table

func (self *EntityBuilder) Table() TableDef

type EntityDescriptor

type EntityDescriptor struct {
	Name         string                  // entity name
	Comment      string                  // entity comment
	Table        TableDef                // entity table define
	Fields       []*FieldDescriptor      // field information
	Indexes      []*IndexDescriptor      // index information
	ForeignKeys  []*ForeignKeyDescriptor // foreign key information
	ProtoMessage []*ProtoMessage         // protobuf message information.
}

EntityDescriptor Each table corresponds to an EntityDescriptor

func BuildEntity

func BuildEntity(m MixinEntity, opt *Option) *EntityDescriptor

type EntityDescriptorSlice

type EntityDescriptorSlice []*EntityDescriptor

func (EntityDescriptorSlice) Len

func (t EntityDescriptorSlice) Len() int

func (EntityDescriptorSlice) Less

func (t EntityDescriptorSlice) Less(i, j int) bool

func (EntityDescriptorSlice) Swap

func (t EntityDescriptorSlice) Swap(i, j int)

type FieldDescriptor

type FieldDescriptor struct {
	Name     string // field name
	Comment  string // comment
	Nullable bool   // Nullable reports whether the column may be null.
	Column   ColumnDef
	// for go
	Type           *GoType  //  go type information.
	Optional       bool     // nullable struct field.
	Tags           []string // Tags struct tag
	AssistDataType string   // assist data type
}

type Fielder

type Fielder interface {
	Build(opt *Option) *FieldDescriptor
}

type ForeignKeyDef

type ForeignKeyDef interface {
	ForeignKey() *schema.ForeignKey
	Definition() string
}

type ForeignKeyDescriptor

type ForeignKeyDescriptor struct {
	Symbol     string
	Table      string
	Columns    []string
	RefTable   string
	RefColumns []string
	OnUpdate   schema.ReferenceOption
	OnDelete   schema.ReferenceOption
	ForeignKey ForeignKeyDef
}

type ForeignKeyer

type ForeignKeyer interface {
	Build() *ForeignKeyDescriptor
}

type GoType

type GoType struct {
	Type         Type   // Type enum.
	Ident        string // Type identifier,  e.g. int, time.Time, sql.NullInt64.
	PkgPath      string // import path. e.g. "", time, database/sql.
	PkgQualifier string // a package qualifier. e.g. "", time, sql.
	Nullable     bool   // pointers or slices, means not need point.
}

func BoolType

func BoolType() *GoType

func BytesType

func BytesType() *GoType

func DatatypesDateType

func DatatypesDateType() *GoType

func DatatypesJSONType

func DatatypesJSONType() *GoType

func DecimalType

func DecimalType() *GoType

func EnumType

func EnumType() *GoType

func Float32Type

func Float32Type() *GoType

func Float64Type

func Float64Type() *GoType

func Int16Type

func Int16Type() *GoType

func Int32Type

func Int32Type() *GoType

func Int64Type

func Int64Type() *GoType

func Int8Type

func Int8Type() *GoType

func IntType

func IntType() *GoType

func JSONRawMessageType

func JSONRawMessageType() *GoType

func NewGoType

func NewGoType(t Type, v any) *GoType

func SQLNullBoolType

func SQLNullBoolType() *GoType

func SQLNullByteType

func SQLNullByteType() *GoType

func SQLNullFloat64Type

func SQLNullFloat64Type() *GoType

func SQLNullInt16Type

func SQLNullInt16Type() *GoType

func SQLNullInt32Type

func SQLNullInt32Type() *GoType

func SQLNullInt64Type

func SQLNullInt64Type() *GoType

func SQLNullStringType

func SQLNullStringType() *GoType

func SQLNullTimeType

func SQLNullTimeType() *GoType

func SoftDeleteType

func SoftDeleteType() *GoType

func StringType

func StringType() *GoType

func TimeType

func TimeType() *GoType

func Uint16Type

func Uint16Type() *GoType

func Uint32Type

func Uint32Type() *GoType

func Uint64Type

func Uint64Type() *GoType

func Uint8Type

func Uint8Type() *GoType

func UintType

func UintType() *GoType

func (*GoType) Clone

func (t *GoType) Clone() *GoType

func (GoType) Comparable

func (t GoType) Comparable() bool

Comparable reports whether values of this type are comparable.

func (GoType) IsBool

func (t GoType) IsBool() bool

IsBool reports if the given type is an bool type.

func (GoType) IsFloat

func (t GoType) IsFloat() bool

IsFloat reports if the given type is a float type.

func (GoType) IsInteger

func (t GoType) IsInteger() bool

IsInteger reports if the given type is an integral type.

func (GoType) IsNumeric

func (t GoType) IsNumeric() bool

IsNumeric reports if the given type is a numeric type.

func (GoType) IsTime

func (t GoType) IsTime() bool

IsTime reports if the given type is an time.Time type.

func (GoType) IsValid

func (t GoType) IsValid() bool

IsValid reports if the given type if known type.

func (GoType) String

func (t GoType) String() string

String returns the string representation of a type.

type IndexDef

type IndexDef interface {
	Index() *schema.Index
	Definition() string
}

type IndexDescriptor

type IndexDescriptor struct {
	Name   string   // index name
	Fields []string // field columns
	Index  IndexDef
}

IndexDescriptor

type Indexer

type Indexer interface {
	Build() *IndexDescriptor
}

type MixinEntity

type MixinEntity interface {
	Metadata() (string, string)
	Table() TableDef
	Fields() []Fielder
	Indexes() []Indexer
	ForeignKeys() []ForeignKeyer
}

type MixinSchema

type MixinSchema struct {
	Name     string        // schema name
	Entities []MixinEntity // schema entity.
}

MixinSchema information

func (*MixinSchema) Build

func (self *MixinSchema) Build(opt *Option) *Schema

type Option

type Option struct {
	EnableInt          bool              `yaml:"enableInt" json:"enableInt"`                   // 使能int8,uint8,int16,uint16,int32,uint32输出为int,uint
	EnableIntegerInt   bool              `yaml:"enableIntegerInt" json:"enableIntegerInt"`     // 使能int32,uint32输出为int,uint
	EnableBoolInt      bool              `yaml:"enableBoolInt" json:"enableBoolInt"`           // 使能bool输出int
	DisableNullToPoint bool              `yaml:"disableNullToPoint" json:"disableNullToPoint"` // 禁用字段为null时输出指针类型,将输出为sql.Nullxx
	EnableForeignKey   bool              `yaml:"enableForeignKey" json:"enableForeignKey"`     // 输出外键
	Tags               map[string]string `yaml:"tags" json:"tags"`                             // tags标签列表, support smallCamelCase, camelCase, snakeCase, kebab
	EnableGogo         bool              `yaml:"enableGogo" json:"enableGogo"`                 // 使能用 gogo  (仅输出 proto 有效)
	EnableSea          bool              `yaml:"enableSea" json:"enableSea"`                   // 使能用 seaql (仅输出 proto 有效)}
}

type ProtoMessage

type ProtoMessage struct {
	DataType    string   // 数据类型
	Name        string   // 名称
	Comment     string   // 注释
	Annotations []string // 注解
}

type Schema

type Schema struct {
	Name     string              // schema name
	Entities []*EntityDescriptor // schema entity.
}

Schema

type Schemaer

type Schemaer interface {
	Build(opt *Option) *Schema
}

type TableDef

type TableDef interface {
	Table() *schema.Table
	Definition() string
	PrimaryKey() IndexDef
}

type Type

type Type uint8

A Type represents a field type.

const (
	TypeInvalid Type = iota
	TypeBool
	TypeInt8
	TypeInt16
	TypeInt32
	TypeInt64
	TypeInt
	TypeUint8
	TypeUint16
	TypeUint32
	TypeUint64
	TypeUint
	TypeFloat32
	TypeFloat64
	TypeDecimal
	TypeString
	TypeEnum
	TypeBytes
	TypeTime
	TypeJSON
	TypeUUID
	TypeOther
)

List of field types.

func (Type) IntoAssistDataType

func (t Type) IntoAssistDataType() string

func (Type) IntoProtoDataType

func (t Type) IntoProtoDataType() string

func (Type) IsBool

func (t Type) IsBool() bool

IsBool reports if the given type is an bool type.

func (Type) IsFloat

func (t Type) IsFloat() bool

IsFloat reports if the given type is a float type.

func (Type) IsInteger

func (t Type) IsInteger() bool

IsInteger reports if the given type is an integral type.

func (Type) IsNumeric

func (t Type) IsNumeric() bool

IsNumeric reports if the given type is a numeric type.

func (Type) IsTime

func (t Type) IsTime() bool

IsTime reports if the given type is an time.Time type.

func (Type) IsValid

func (t Type) IsValid() bool

IsValid reports if the given type if known type.

func (Type) String

func (t Type) String() string

String returns the string representation of a type.

Directories

Path Synopsis
cmd
ormat Module
gen is a codegen cmd for generating numeric build types from template.
gen is a codegen cmd for generating numeric build types from template.
sts

Jump to

Keyboard shortcuts

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