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 从 MySQL 数据库中获取表的创建信息
func GetSqliteTableInfo ¶
GetSqliteTableInfo get table info from sqlite
func GetTableInfo ¶
GetTableInfo 从 MySQL 数据库中获取表的创建信息 已废弃:请使用 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 ¶ added in v1.1.23
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 ¶ added in v1.1.23
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 ¶ added in v1.1.23
func (*CrudInfo) GetGRPCProtoValidation ¶ added in v1.1.23
func (*CrudInfo) GetWebProtoValidation ¶ added in v1.1.23
type Field ¶ added in v1.1.23
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 是一个函数类型,用于设置选项
func WithCustomTemplate ¶ added in v1.1.23
func WithCustomTemplate() Option
WithCustomTemplate 设置是否使用自定义扩展模板
func WithFieldTypes ¶
WithFieldTypes 设置字段类型映射
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 ¶ added in v1.1.23
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 ¶ added in v1.1.23
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 ¶ added in v1.1.23
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