Apply .gitignore rules
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
package mysqlSync
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"goutil/fileUtil"
|
||||
"goutil/logUtil"
|
||||
)
|
||||
|
||||
var (
|
||||
// 记录错误sql命令的文件名
|
||||
con_Error_FileName = "errorFile.txt"
|
||||
)
|
||||
|
||||
// 定义处理错误命令的文件对象
|
||||
type errorFile struct {
|
||||
// 错误文件
|
||||
file *os.File
|
||||
|
||||
// 文件路径
|
||||
filePath string
|
||||
|
||||
// 同步数据对象的唯一标识,用于进行重复判断
|
||||
identifier string
|
||||
}
|
||||
|
||||
// 保存命令到错误文件
|
||||
// command: sql命令
|
||||
func (this *errorFile) SaveCommand(command string) {
|
||||
this.open()
|
||||
defer this.close()
|
||||
|
||||
// 覆盖写入
|
||||
this.file.Seek(0, 0)
|
||||
|
||||
// 写入命令
|
||||
_, err := this.file.WriteString(command)
|
||||
if err != nil {
|
||||
prefix := fmt.Sprintf("%s-%s", this.identifier, "errorFile.SaveCommand")
|
||||
err = fmt.Errorf("%s-Write %s to file failed:%s", prefix, command, err)
|
||||
logUtil.ErrorLog(err.Error())
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// 清理残留数据
|
||||
this.file.Truncate(int64(len(command)))
|
||||
}
|
||||
|
||||
// 读取文件中命令
|
||||
func (this *errorFile) ReadCommand() string {
|
||||
this.open()
|
||||
defer this.close()
|
||||
|
||||
this.file.Seek(0, 0)
|
||||
content, err := ioutil.ReadAll(this.file)
|
||||
if err != nil {
|
||||
prefix := fmt.Sprintf("%s-%s", this.identifier, "errorFile.ReadCommand")
|
||||
err = fmt.Errorf("%s-Read command failed:%s", prefix, err)
|
||||
logUtil.ErrorLog(err.Error())
|
||||
panic(err)
|
||||
}
|
||||
return string(content)
|
||||
}
|
||||
|
||||
// 打开文件
|
||||
func (this *errorFile) open() {
|
||||
// 打开errorFile文件, 如果没有就创建
|
||||
var err error
|
||||
this.file, err = os.OpenFile(this.filePath, os.O_CREATE|os.O_RDWR, os.ModePerm|os.ModeTemporary)
|
||||
if err != nil {
|
||||
prefix := fmt.Sprintf("%s-%s", this.identifier, "errorFile.newErrorFile.os.OpenFile")
|
||||
err = fmt.Errorf("%s-Open File failed:%s", prefix, err)
|
||||
logUtil.ErrorLog(err.Error())
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
// 关闭文件
|
||||
func (this *errorFile) close() {
|
||||
this.file.Close()
|
||||
}
|
||||
|
||||
// 删除文件
|
||||
func (this *errorFile) Delete() {
|
||||
fileUtil.DeleteFile(this.filePath)
|
||||
}
|
||||
|
||||
// 构造错误文件对象
|
||||
// _dirPath:文件路径
|
||||
// _identifier:唯一标识
|
||||
func newErrorFile(_dirPath string, _identifier string) *errorFile {
|
||||
_filePath := filepath.Join(_dirPath, con_Error_FileName)
|
||||
return &errorFile{
|
||||
filePath: _filePath,
|
||||
identifier: _identifier,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user