reverse

package module
v1.7.5 Latest Latest
Warning

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

Go to latest
Published: Feb 24, 2024 License: LGPL-3.0 Imports: 21 Imported by: 0

README

xgen

介绍

根据已有数据表生成 models(xorm)代码

如果遇到 UNSIGNED FLOAT 这样的错误,请使用 patch

go mod tidy
go mod vendor #下载依赖库到vendor目录
cd vendor/xorm.io/xorm/
patch -p1 < ../../../xorm-mysql-unsigned-float.patch
cd -
使用
go mod tidy
#简单使用范例,要求golang 1.18 以上版本
cp settings.hcl.example settings.hcl
make && ./bin/xg

Documentation

Index

Constants

View Source
const (
	InitFileName   = "init"
	ConnFileName   = "conn"
	SingleFileName = "models"
	QueryFileName  = "queries"
)
View Source
const (
	FixedStrMaxSize = 255 // 固定字符串最大长度

	XormTagName       = "xorm"
	XormTagNotNull    = "notnull"
	XormTagAutoIncr   = "autoincr"
	XormTagPrimaryKey = "pk"
	XormTagUnique     = "unique"
	XormTagIndex      = "index"
)

Variables

View Source
var (
	TypeOfString  = reflect.TypeOf("")
	TypeOfBytes   = reflect.TypeOf([]byte{})
	TypeOfBool    = reflect.TypeOf(false)
	TypeOfInt     = reflect.TypeOf(0)
	TypeOfInt64   = reflect.TypeOf(int64(0))
	TypeOfFloat64 = reflect.TypeOf(float64(0))
	TypeOfTime    = reflect.TypeOf(time.Time{})
)

Functions

func ApplyDirMixins added in v1.5.3

func ApplyDirMixins(currDir string, verbose bool) (err error)

ApplyDirMixins 将已知的Mixin嵌入到匹配的Model中

func CheckProject added in v1.6.0

func CheckProject(outputDir, nameSpace, binName string) (err error)

CheckProject 检查go mod相关文件,并给出编译提示

func FilterTables

func FilterTables(tables []*schemas.Table, includes, excludes []string, tailDigits int) []*schemas.Table

FilterTables 按照ExcludeTables和IncludeTables配置过滤数据表

func GetColTypeString

func GetColTypeString(col *schemas.Column) string

GetColTypeString get the col type include length, for example: VARCHAR(255)

func SkelProject added in v1.6.0

func SkelProject(outputDir, nameSpace, binName string, force bool) (err error)

SkelProject 生成一个项目的骨架

Types

type Formatter

type Formatter func(filename string, sourceCode []byte) ([]byte, error)

type Importter

type Importter func(tables map[string]*schemas.Table) map[string]string

type Language

type Language struct {
	Name      string
	ExtName   string
	Template  *template.Template
	Types     map[string]string
	Funcs     template.FuncMap
	Formatter Formatter
	Importter Importter
	Packager  Packager
}

Language represents a languages supported when reverse codes

type Packager

type Packager func(targetDir string) string

type ReverseConfig

type ReverseConfig struct {
	Language          string   `hcl:"language,label" json:"language,omitempty"`
	OutputDir         string   `hcl:"output_dir" json:"output_dir"`
	NameSpace         string   `hcl:"name_space" json:"name_space"`
	MultipleFiles     bool     `hcl:"multiple_files,optional" json:"multiple_files,omitempty"`
	TablePrefix       string   `hcl:"table_prefix,optional" json:"table_prefix,omitempty"`
	IncludeTables     []string `hcl:"include_tables,optional" json:"include_tables,omitempty"`
	ExcludeTables     []string `hcl:"exclude_tables,optional" json:"exclude_tables,omitempty"`
	TableMapper       string   `hcl:"table_mapper,optional" json:"table_mapper,omitempty"`
	ColumnMapper      string   `hcl:"column_mapper,optional" json:"column_mapper,omitempty"`
	MixinDir          string   `hcl:"mixin_dir,optional" json:"mixin_dir,omitempty"`
	MixinNS           string   `hcl:"mixin_ns,optional" json:"mixin_ns,omitempty"`
	ModelTemplatePath string   `hcl:"model_template_path,optional" json:"model_template_path,omitempty"`
	QueryTemplatePath string   `hcl:"query_template_path,optional" json:"query_template_path,omitempty"`
}

ReverseConfig table反转为model配置

func (*ReverseConfig) GetTablePrefixes

func (c *ReverseConfig) GetTablePrefixes() []string

GetTablePrefixes 获取可用表名前缀

func (*ReverseConfig) GetTemplateName

func (c *ReverseConfig) GetTemplateName(name string) string

GetTemplateName 获取模板名称,优先使用配置,然后是预设模板

type Reverser

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

Reverser model反转器

func NewGoReverser

func NewGoReverser(target *ReverseConfig) *Reverser

NewGoReverser 创建Golang反转器

func (*Reverser) Clone added in v1.5.5

func (r *Reverser) Clone() *Reverser

Clone 克隆生成副本,用于不同协程中

func (*Reverser) ExecuteReverse

func (r *Reverser) ExecuteReverse(source dialect.ConnConfig, interActive, verbose bool) (bool, error)

ExecuteReverse 生成单个数据库下的代码文件,一个数据库一个子目录

func (*Reverser) GenModelInitFile

func (r *Reverser) GenModelInitFile(tmplName string) error

GenModelInitFile 生成models目录下的init文件

func (*Reverser) GetFormatter

func (r *Reverser) GetFormatter() Formatter

GetFormatter 对应语言的美化代码工具

func (*Reverser) GetOutFileName

func (r *Reverser) GetOutFileName(name string) string

GetOutFileName 获取输出文件名

func (*Reverser) ReverseTables

func (r *Reverser) ReverseTables(pkgName string, tableSchemas []*schemas.Table) error

ReverseTables 生成单个数据的model和query文件,或者一张表一个文件(当MultipleFiles=true)

func (*Reverser) SetOutDir

func (r *Reverser) SetOutDir(key string) string

SetOutDir 设置输出子目录

Directories

Path Synopsis
cmd
xg
xm
stuffs
web

Jump to

Keyboard shortcuts

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