parser

package
v1.12.3 Latest Latest
Warning

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

Go to latest
Published: Jan 20, 2025 License: MIT Imports: 31 Imported by: 0

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

View Source
const (

	// SubStructKey sub struct key
	SubStructKey = "_sub_struct_"
	// ProtoSubStructKey proto sub struct key
	ProtoSubStructKey = "_proto_sub_struct_"
)
View Source
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

func ConvertToSQLByMgoFields(tableName string, fields []*MgoField) (string, map[string]string)

ConvertToSQLByMgoFields convert to mysql table ddl

func ConvertToSQLByPgFields

func ConvertToSQLByPgFields(tableName string, fields PGFields) (string, map[string]string)

ConvertToSQLByPgFields convert to mysql table ddl

func GetMysqlTableInfo

func GetMysqlTableInfo(dsn, tableName string) (string, error)

GetMysqlTableInfo get table info from mysql

func GetSqliteTableInfo

func GetSqliteTableInfo(dbFile string, tableName string) (string, error)

GetSqliteTableInfo get table info from sqlite

func GetTableInfo

func GetTableInfo(dsn, tableName string) (string, error)

GetTableInfo get table info from mysql Deprecated: replaced by GetMysqlTableInfo

func MgoFieldToGoStruct

func MgoFieldToGoStruct(name string, fs []*MgoField) string

MgoFieldToGoStruct convert to go struct

func ParseSQL

func ParseSQL(sql string, options ...Option) (map[string]string, error)

ParseSQL generate different usage codes based on sql

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

func UnMarshalTableInfo(data string) (map[string]interface{}, error)

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 (info *CrudInfo) CheckCommonType() bool

func (*CrudInfo) GetGRPCProtoValidation

func (info *CrudInfo) GetGRPCProtoValidation() string

func (*CrudInfo) GetWebProtoValidation

func (info *CrudInfo) GetWebProtoValidation() string

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

func GetMongodbTableInfo

func GetMongodbTableInfo(dsn string, tableName string) ([]*MgoField, error)

GetMongodbTableInfo get table info from mongodb

type NullStyle

type NullStyle int

NullStyle null type

const (
	NullDisable NullStyle = iota
	NullInSql
	NullInPointer
)

nolint

type Option

type Option func(*options)

Option function

func WithCharset

func WithCharset(charset string) Option

WithCharset set charset

func WithCollation

func WithCollation(collation string) Option

WithCollation set collation

func WithColumnPrefix

func WithColumnPrefix(p string) Option

WithColumnPrefix set column prefix

func WithCustomTemplate

func WithCustomTemplate() Option

WithCustomTemplate set custom template

func WithDBDriver

func WithDBDriver(driver string) Option

WithDBDriver set db driver

func WithEmbed

func WithEmbed() Option

WithEmbed is embed gorm.Model

func WithExtendedAPI

func WithExtendedAPI() Option

WithExtendedAPI set extended api

func WithFieldTypes

func WithFieldTypes(fieldTypes map[string]string) Option

WithFieldTypes set field types

func WithForceTableName

func WithForceTableName() Option

WithForceTableName set forceFloats

func WithGormType

func WithGormType() Option

WithGormType will write type in gorm tag

func WithJSONTag

func WithJSONTag(namedType int) Option

WithJSONTag set json tag, 0 for underscore, other values for hump

func WithNoNullType

func WithNoNullType() Option

WithNoNullType set NoNullType

func WithNullStyle

func WithNullStyle(s NullStyle) Option

WithNullStyle set NullType

func WithPackage

func WithPackage(pkg string) Option

WithPackage set package name

func WithTablePrefix

func WithTablePrefix(p string) Option

WithTablePrefix set table prefix

func WithWebProto

func WithWebProto() Option

WithWebProto set proto file type

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 PGFields

type PGFields []*PGField

func GetPostgresqlTableInfo

func GetPostgresqlTableInfo(dsn string, tableName string) (PGFields, error)

GetPostgresqlTableInfo get table info from postgres

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 SqliteFields

type SqliteFields []*SqliteField

SqliteFields sqlite fields

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

Jump to

Keyboard shortcuts

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