internal

package
v0.0.0-...-03287ed Latest Latest
Warning

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

Go to latest
Published: Apr 6, 2021 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

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

AppURL site

View Source
const Version = "0.3.1"

Version version

Variables

This section is empty.

Functions

func CheckSchemaDiff

func CheckSchemaDiff(cfg *Config)

CheckSchemaDiff 执行最终的diff

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 同步的源头
	SourceDSN string `json:"source"`

	// DestDSN 将被同步
	DestDSN string `json:"dest"`

	// AlterIgnore 忽略配置, eg:   "tb1*":{"column":["aaa","a*"],"index":["aa"],"foreign":[]}
	AlterIgnore map[string]*AlterIgnoreTable `json:"alter_ignore"`

	// databases, 扫描指定库
	DataBases []string `json:"databases"`

	// Tables 同步表的白名单,若为空,则同步全库
	Tables []string `json:"tables"`

	// TablesIGNORE 不同步的表
	TablesIGNORE []string `json:"tables_ignore"`

	// Email 完成同步后发送同步信息的邮件账号信息
	Email      *EmailStruct `json:"email"`
	ConfigPath string

	// Sync 是否真正的执行同步操作
	Sync bool

	// Drop 若目标数据库表比源头多了字段、索引,是否删除
	Drop 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) 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"`
	Nick         string `json:"nick"`
	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) GetDataBases

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

GetDataBases get all databases

func (*MyDb) GetTableNames

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

GetTableNames table names

func (*MyDb) GetTableSchema

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

GetTableSchema table schema

func (*MyDb) GetTableSchemaTime

func (mydb *MyDb) GetTableSchemaTime(dbName, tableName string) (schemaTime string)

GetTableSchemaTime get table's schema change time

func (*MyDb) Query

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

Query execute sql query

type MySchema

type MySchema struct {
	SchemaRaw  string
	Fields     map[string]string
	IndexAll   map[string]*DbIndex
	ForeignAll map[string]*DbIndex
	SchemaTime time.Time
}

MySchema table schema

func ParseSchema

func ParseSchema(schema string, schemaTime time.Time) *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 ReplaceDb

func ReplaceDb(config *Config, currentDB string) *SchemaSync

ReplaceDb 替换json中数据库名

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

Directories

Path Synopsis
Package smtp implements the Simple Mail Transfer Protocol as defined in RFC 5321.
Package smtp implements the Simple Mail Transfer Protocol as defined in RFC 5321.

Jump to

Keyboard shortcuts

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