internal

package
v0.2.8 Latest Latest
Warning

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

Go to latest
Published: Sep 6, 2021 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const AppURL = "Base On https://github.com/hidu/mysql-schema-sync/"

AppURL site

View Source
const Version = "0.3"

Version version

Variables

This section is empty.

Functions

func CheckSchemaDiff

func CheckSchemaDiff(cfg *Config)

CheckSchemaDiff 执行最终的diff

func Float2Str

func Float2Str(f float32) string

func Float322Str

func Float322Str(f float32) string

func Float642Str

func Float642Str(f float64) string

func Int2Str

func Int2Str(number int) string

func Int642Str

func Int642Str(number int64) string

func Str2Float

func Str2Float(s string) (f float32, err error)

func Str2Float64

func Str2Float64(s string) (f float64, err error)

func Str2Int

func Str2Int(str string) (int, error)

func Str2Int64

func Str2Int64(str string) (int64, error)

func SyncTableData

func SyncTableData(cfg *Config)

把配置里面的表的数据 同步到目标数据库

Types

type AlterIgnoreTable

type AlterIgnoreTable struct {
	Column     []string `json:"column"`
	Index      []string `json:"index"`
	ForeignKey []string `json:"foreign"` //外键
}

AlterIgnoreTable table's ignore info

type Config

type Config struct {
	SourceDSN        string                       `json:"source"`
	DestDSN          string                       `json:"dest"`
	AlterIgnore      map[string]*AlterIgnoreTable `json:"alter_ignore"`
	Tables           []string                     `json:"tables"`
	TablesIGNORE     []string                     `json:"tables_ignore"`
	Email            *EmailStruct                 `json:"email"`
	ConfigPath       string
	Sync             bool
	Drop             bool
	SyncData         bool
	SyncDataTables   []string `json:"sync_data_tables"`
	SyncDataTruncate bool
}

Config config struct

func LoadConfig

func LoadConfig(confPath string) *Config

LoadConfig load config file

func (*Config) Check

func (cfg *Config) Check()

Check check config

func (*Config) CheckMatchIgnoreTables

func (cfg *Config) CheckMatchIgnoreTables(name string) bool

CheckMatchIgnoreTables check table_Ignore is match

func (*Config) CheckMatchSyncTables

func (cfg *Config) CheckMatchSyncTables(name string) bool

CheckMatchSyncTables check sync table is match

func (*Config) CheckMatchTables

func (cfg *Config) CheckMatchTables(name string) bool

CheckMatchTables check table is match

func (*Config) IsIgnoreField

func (cfg *Config) IsIgnoreField(table string, name string) bool

IsIgnoreField isIgnore

func (*Config) IsIgnoreForeignKey

func (cfg *Config) IsIgnoreForeignKey(table string, name string) bool

IsIgnoreForeignKey 检查外键是否忽略掉

func (*Config) IsIgnoreIndex

func (cfg *Config) IsIgnoreIndex(table string, name string) bool

IsIgnoreIndex is index ignore

func (*Config) SendMailFail

func (cfg *Config) SendMailFail(errStr string)

SendMailFail send fail mail

func (*Config) String

func (cfg *Config) String() string

type DbIndex

type DbIndex struct {
	IndexType      indexType
	Name           string
	SQL            string
	RelationTables []string //相关联的表
}

DbIndex db index

func (*DbIndex) String

func (idx *DbIndex) String() string

type EmailStruct

type EmailStruct struct {
	SendMailAble bool   `json:"send_mail"`
	SMTPHost     string `json:"smtp_host"`
	From         string `json:"from"`
	Password     string `json:"password"`
	To           string `json:"to"`
}

EmailStruct email conf info

func (*EmailStruct) SendMail

func (m *EmailStruct) SendMail(title string, body string)

SendMail send mail

type MyDb

type MyDb struct {
	Db *sql.DB
	// contains filtered or unexported fields
}

MyDb db struct

func NewMyDb

func NewMyDb(dsn string, dbType string) *MyDb

NewMyDb parse dsn

func (*MyDb) GetTableNames

func (mydb *MyDb) GetTableNames() []string

GetTableNames table names

func (*MyDb) GetTableSchema

func (mydb *MyDb) GetTableSchema(name string) (schema string)

GetTableSchema table schema

func (*MyDb) Query

func (mydb *MyDb) Query(query string, args ...interface{}) (*sql.Rows, error)

Query execute sql query

func (*MyDb) QueryAll

func (mydb *MyDb) QueryAll(sql string) []map[string]interface{}

type MySchema

type MySchema struct {
	SchemaRaw  string
	Fields     map[string]string
	IndexAll   map[string]*DbIndex
	ForeignAll map[string]*DbIndex
}

MySchema table schema

func ParseSchema

func ParseSchema(schema string) *MySchema

ParseSchema parse table's schema

func (*MySchema) GetFieldNames

func (mys *MySchema) GetFieldNames() []string

GetFieldNames table names

func (*MySchema) RelationTables

func (mys *MySchema) RelationTables() []string

func (*MySchema) String

func (mys *MySchema) String() string

type SchemaDiff

type SchemaDiff struct {
	Table  string
	Source *MySchema
	Dest   *MySchema
}

func (*SchemaDiff) RelationTables

func (sdiff *SchemaDiff) RelationTables() []string

type SchemaSync

type SchemaSync struct {
	Config   *Config
	SourceDb *MyDb
	DestDb   *MyDb
}

SchemaSync 配置文件

func NewSchemaSync

func NewSchemaSync(config *Config) *SchemaSync

NewSchemaSync 对一个配置进行同步

func (*SchemaSync) GetNewTableNames

func (sc *SchemaSync) GetNewTableNames() []string

GetNewTableNames 获取所有新增加的表名

func (*SchemaSync) SyncSQL4Dest

func (sc *SchemaSync) SyncSQL4Dest(sqlStr string, sqls []string) error

SyncSQL4Dest sync schema change

type TableAlterData

type TableAlterData struct {
	Table      string
	Type       alterType
	SQL        string
	SchemaDiff *SchemaDiff
}

TableAlterData 表的变更情况

func (*TableAlterData) String

func (ta *TableAlterData) String() string

Jump to

Keyboard shortcuts

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