Documentation
¶
Overview ¶
Package parser is a library that parses to go structures based on sql and generates the code needed based on the template.
Index ¶
- Constants
- func ConvertToSQLByMgoFields(tableName string, fields []*MgoField) (string, map[string]string)
- func ConvertToSQLByPgFields(tableName string, fields PGFields) (string, map[string]string)
- func GetMysqlTableInfo(dsn, tableName string) (string, error)
- func GetSqliteTableInfo(dbFile string, tableName string) (string, error)
- func GetTableInfo(dsn, tableName string) (string, error)
- func MgoFieldToGoStruct(name string, fs []*MgoField) string
- func ParseSQL(sql string, options ...Option) (map[string]string, error)
- func SetJSONTagCamelCase()
- func SetJSONTagSnakeCase()
- func UnMarshalTableInfo(data string) (map[string]interface{}, error)
- type Codes
- type CrudInfo
- type Field
- type MgoField
- type NullStyle
- type Option
- func WithCharset(charset string) Option
- func WithCollation(collation string) Option
- func WithColumnPrefix(p string) Option
- func WithCustomTemplate() Option
- func WithDBDriver(driver string) Option
- func WithEmbed() Option
- func WithExtendedAPI() Option
- func WithFieldTypes(fieldTypes map[string]string) Option
- func WithForceTableName() Option
- func WithGormType() Option
- func WithJSONTag(namedType int) Option
- func WithNoNullType() Option
- func WithNullStyle(s NullStyle) Option
- func WithPackage(pkg string) Option
- func WithTablePrefix(p string) Option
- func WithWebProto() Option
- type PGField
- type PGFields
- type PrimaryKey
- type SqliteField
- type SqliteFields
- type TableInfo
Constants ¶
const ( // SubStructKey sub struct key SubStructKey = "_sub_struct_" // ProtoSubStructKey proto sub struct key ProtoSubStructKey = "_proto_sub_struct_" )
const ( // TableName table name TableName = "__table_name__" // CodeTypeModel model code CodeTypeModel = "model" // CodeTypeJSON json code CodeTypeJSON = "json" // CodeTypeDAO update fields code CodeTypeDAO = "dao" // CodeTypeHandler handler request and respond code CodeTypeHandler = "handler" // CodeTypeProto proto file code CodeTypeProto = "proto" // CodeTypeService grpc service code CodeTypeService = "service" // CodeTypeCrudInfo crud info json data CodeTypeCrudInfo = "crud_info" // CodeTypeTableInfo table info json data CodeTypeTableInfo = "table_info" // DBDriverMysql mysql driver DBDriverMysql = "mysql" // DBDriverPostgresql postgresql driver DBDriverPostgresql = "postgresql" // DBDriverTidb tidb driver DBDriverTidb = "tidb" // DBDriverSqlite sqlite driver DBDriverSqlite = "sqlite" // DBDriverMongodb mongodb driver DBDriverMongodb = "mongodb" )
Variables ¶
This section is empty.
Functions ¶
func ConvertToSQLByMgoFields ¶
ConvertToSQLByMgoFields convert to mysql table ddl
func ConvertToSQLByPgFields ¶
ConvertToSQLByPgFields convert to mysql table ddl
func GetMysqlTableInfo ¶
GetMysqlTableInfo get table info from mysql
func GetSqliteTableInfo ¶
GetSqliteTableInfo get table info from sqlite
func GetTableInfo ¶
GetTableInfo get table info from mysql Deprecated: replaced by GetMysqlTableInfo
func MgoFieldToGoStruct ¶
MgoFieldToGoStruct convert to go struct
func SetJSONTagCamelCase ¶
func SetJSONTagCamelCase()
SetJSONTagCamelCase set json tag format to camel case
func SetJSONTagSnakeCase ¶
func SetJSONTagSnakeCase()
SetJSONTagSnakeCase set json tag format to snake case
func UnMarshalTableInfo ¶
UnMarshalTableInfo unmarshal the json data to TableInfo struct
Types ¶
type Codes ¶
type Codes struct {
Model []string // model code
UpdateFields []string // update fields code
ModelJSON []string // model json code
HandlerStruct []string // handler request and respond code
}
Codes content
type CrudInfo ¶
type CrudInfo struct {
TableNameCamel string `json:"tableNameCamel"` // camel case, example: FooBar
TableNameCamelFCL string `json:"tableNameCamelFCL"` // camel case and first character lower, example: fooBar
TableNamePluralCamel string `json:"tableNamePluralCamel"` // plural, camel case, example: FooBars
TableNamePluralCamelFCL string `json:"tableNamePluralCamelFCL"` // plural, camel case, example: fooBars
ColumnName string `json:"columnName"` // column name, example: first_name
ColumnNameCamel string `json:"columnNameCamel"` // column name, camel case, example: FirstName
ColumnNameCamelFCL string `json:"columnNameCamelFCL"` // column name, camel case and first character lower, example: firstName
ColumnNamePluralCamel string `json:"columnNamePluralCamel"` // column name, plural, camel case, example: FirstNames
ColumnNamePluralCamelFCL string `json:"columnNamePluralCamelFCL"` // column name, plural, camel case and first character lower, example: firstNames
GoType string `json:"goType"` // go type, example: string, uint64
GoTypeFCU string `json:"goTypeFCU"` // go type, first character upper, example: String, Uint64
ProtoType string `json:"protoType"` // proto type, example: string, uint64
IsStringType bool `json:"isStringType"` // go type is string or not
PrimaryKeyColumnName string `json:"PrimaryKeyColumnName"` // primary key, example: id
IsCommonType bool `json:"isCommonType"` // custom primary key name and type
IsStandardPrimaryKey bool `json:"isStandardPrimaryKey"` // standard primary key id
}
CrudInfo crud info for cache, dao, handler, service, protobuf, error
func (*CrudInfo) CheckCommonType ¶
func (*CrudInfo) GetGRPCProtoValidation ¶
func (*CrudInfo) GetWebProtoValidation ¶
type Field ¶
type Field struct {
ColumnName string // original column name, example: foo_bar
ColumnNameCamel string // first character lower, example: FooBar
ColumnNameCamelFCL string // first character lower, example: fooBar
ColumnComment string // column comment
IsPrimaryKey bool // is primary key
GoType string // convert to go type
Tag string // tag for model struct field, default gorm tag
}
Field is the struct for column information
type MgoField ¶
type MgoField struct {
Name string `json:"name"`
Type string `json:"type"`
Comment string `json:"comment"`
ObjectStr string `json:"objectStr"`
ProtoObjectStr string `json:"protoObjectStr"`
}
MgoField mongo field
type Option ¶
type Option func(*options)
Option function
func WithFieldTypes ¶
WithFieldTypes set field types
func WithJSONTag ¶
WithJSONTag set json tag, 0 for underscore, other values for hump
type PGField ¶
type PGField struct {
Name string `gorm:"column:name;" json:"name"`
Type string `gorm:"column:type;" json:"type"`
Comment string `gorm:"column:comment;" json:"comment"`
Length int `gorm:"column:length;" json:"length"`
Lengthvar int `gorm:"column:lengthvar;" json:"lengthvar"`
Notnull bool `gorm:"column:notnull;" json:"notnull"`
IsPrimaryKey bool `gorm:"column:is_primary_key;" json:"is_primary_key"`
}
PGField postgresql field
type PrimaryKey ¶
type PrimaryKey struct {
Name string // primary key name, example: foo_bar
NameCamel string // primary key name, camel case, example: FooBar
NameCamelFCL string // primary key name, camel case and first character lower, example: fooBar
NamePluralCamel string // primary key name, plural, camel case, example: FooBars
NamePluralCamelFCL string // primary key name, plural, camel case and first character lower, example: fooBars
GoType string // go type, example: int, string
GoTypeFCU string // go type, first character upper, example: Int64, String
IsStringType bool // go type is string or not
}
PrimaryKey is the struct for primary key information, it used for generate CRUD code
type SqliteField ¶
type SqliteField struct {
Cid int `gorm:"column:cid" json:"cid"`
Name string `gorm:"column:name" json:"name"`
Type string `gorm:"column:type" json:"type"`
Notnull int `gorm:"column:notnull" json:"notnull"`
DefaultValue string `gorm:"column:dflt_value" json:"dflt_value"`
Pk int `gorm:"column:pk" json:"pk"`
}
SqliteField sqlite field struct
type TableInfo ¶
type TableInfo struct {
TableNamePrefix string // table name prefix, example: t_
TableName string // original table name, example: foo_bar
TableNameCamel string // camel case, example: FooBar
TableNameCamelFCL string // camel case and first character lower, example: fooBar
TableNamePluralCamel string // plural, camel case, example: FooBars
TableNamePluralCamelFCL string // plural, camel case and first character lower, example: fooBars
TableNameSnake string // snake case, example: foo_bar
TableComment string // table comment
Columns []Field // columns of the table
PrimaryKey *PrimaryKey // primary key information
DBDriver string // database driver, example: mysql, postgresql, sqlite3, mongodb
ColumnSubStructure string // column sub structure for model
ColumnSubMessage string // sub message for protobuf
}
TableInfo is the struct for extend template