Documentation ¶
Index ¶
- Constants
- func Bool(name string) *boolBuilder
- func Bytes(name string) *bytesBuilder
- func Decimal(name string) *stringBuilder
- func Enum(name string) *enumBuilder
- func Field(t *GoType, name string) *fieldBuilder
- func FieldFromDef(t *GoType, def ColumnDef) *fieldBuilder
- func Float32(name string) *float32Builder
- func Float64(name string) *float64Builder
- func Floats(name string) *sliceBuilder[float64]
- func ForeignKey(symbol string) *foreignKeyBuilder
- func ForeignKeyFromDef(def ForeignKeyDef) *foreignKeyBuilder
- func Index(name string) *indexBuilder
- func IndexFromDef(e IndexDef) *indexBuilder
- func Int(name string) *intBuilder
- func Int16(name string) *int16Builder
- func Int32(name string) *int32Builder
- func Int64(name string) *int64Builder
- func Int8(name string) *int8Builder
- func Ints(name string) *sliceBuilder[int]
- func JSON(name string) *jsonBuilder
- func PkgName(path string) string
- func PkgQualifier(ident string) string
- func String(name string) *stringBuilder
- func Strings(name string) *sliceBuilder[string]
- func TagName(kind, name string) string
- func Time(name string) *timeBuilder
- func UUID(name string, typ driver.Valuer) *uuidBuilder
- func Uint(name string) *uintBuilder
- func Uint16(name string) *uint16Builder
- func Uint32(name string) *uint32Builder
- func Uint64(name string) *uint64Builder
- func Uint8(name string) *uint8Builder
- type ColumnDef
- type EntityBuilder
- func (self *EntityBuilder) Fields() []Fielder
- func (self *EntityBuilder) ForeignKeys() []ForeignKeyer
- func (self *EntityBuilder) Indexes() []Indexer
- func (self *EntityBuilder) Metadata() (name, comment string)
- func (self *EntityBuilder) SetFields(fields ...Fielder) *EntityBuilder
- func (self *EntityBuilder) SetForeignKeys(fks ...ForeignKeyer) *EntityBuilder
- func (self *EntityBuilder) SetIndexes(indexes ...Indexer) *EntityBuilder
- func (self *EntityBuilder) SetMetadata(name, comment string) *EntityBuilder
- func (self *EntityBuilder) SetTable(tb TableDef) *EntityBuilder
- func (self *EntityBuilder) Table() TableDef
- type EntityDescriptor
- type EntityDescriptorSlice
- type FieldDescriptor
- type Fielder
- type ForeignKeyDef
- type ForeignKeyDescriptor
- type ForeignKeyer
- type GoType
- func BoolType() *GoType
- func BytesType() *GoType
- func DatatypesDateType() *GoType
- func DatatypesJSONType() *GoType
- func DecimalType() *GoType
- func EnumType() *GoType
- func Float32Type() *GoType
- func Float64Type() *GoType
- func Int16Type() *GoType
- func Int32Type() *GoType
- func Int64Type() *GoType
- func Int8Type() *GoType
- func IntType() *GoType
- func JSONRawMessageType() *GoType
- func NewGoType(t Type, v any) *GoType
- func SQLNullBoolType() *GoType
- func SQLNullByteType() *GoType
- func SQLNullFloat64Type() *GoType
- func SQLNullInt16Type() *GoType
- func SQLNullInt32Type() *GoType
- func SQLNullInt64Type() *GoType
- func SQLNullStringType() *GoType
- func SQLNullTimeType() *GoType
- func SoftDeleteType() *GoType
- func StringType() *GoType
- func TimeType() *GoType
- func Uint16Type() *GoType
- func Uint32Type() *GoType
- func Uint64Type() *GoType
- func Uint8Type() *GoType
- func UintType() *GoType
- type IndexDef
- type IndexDescriptor
- type Indexer
- type MixinEntity
- type MixinSchema
- type Option
- type ProtoMessage
- type Schema
- type Schemaer
- type TableDef
- type Type
Constants ¶
const ( TagSmallCamelCase = "smallCamelCase" TagCamelCase = "camelCase" TagSnakeCase = "snakeCase" TagKebab = "kebab" )
Variables ¶
This section is empty.
Functions ¶
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 FieldFromDef ¶
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 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 IndexFromDef ¶
func IndexFromDef(e IndexDef) *indexBuilder
IndexFromDef returns a new Index with the IndexDef. auto set name, fields, index.
func JSON ¶
func JSON(name string) *jsonBuilder
JSON returns a new Field with type json that is serialized to the given object.
func PkgName ¶
PkgName returns the package name from a Go path with a package qualifier. github.com/things/ens -> ens
func PkgQualifier ¶
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.
Types ¶
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 DatatypesDateType ¶
func DatatypesDateType() *GoType
func DatatypesJSONType ¶
func DatatypesJSONType() *GoType
func DecimalType ¶
func DecimalType() *GoType
func Float32Type ¶
func Float32Type() *GoType
func Float64Type ¶
func Float64Type() *GoType
func JSONRawMessageType ¶
func JSONRawMessageType() *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 Uint16Type ¶
func Uint16Type() *GoType
func Uint32Type ¶
func Uint32Type() *GoType
func Uint64Type ¶
func Uint64Type() *GoType
func (GoType) Comparable ¶
Comparable reports whether values of this type are comparable.
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 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 Schema ¶
type Schema struct { Name string // schema name Entities []*EntityDescriptor // schema entity. }
Schema
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 (Type) IntoProtoDataType ¶
Source Files ¶
- def.go
- entity.go
- field.go
- field_bool.go
- field_bytes.go
- field_enum.go
- field_float32.go
- field_float64.go
- field_int.go
- field_int16.go
- field_int32.go
- field_int64.go
- field_int8.go
- field_json.go
- field_slice.go
- field_string.go
- field_time.go
- field_uint.go
- field_uint16.go
- field_uint32.go
- field_uint64.go
- field_uint8.go
- field_uuid.go
- foreign_key.go
- go_type.go
- index.go
- option.go
- protobuf.go
- schema.go
- tag_name.go
- utils.go
- well_known_type.go