mirror of
https://gitee.com/dromara/mayfly-go
synced 2025-11-03 16:00:25 +08:00
* fix: 代码合并 * feat:支持数据库版本兼容,目前兼容了oracle11g部分特性 * fix: 修改数据同步bug,数据sql里指定修改字段别,导致未正确记录修改字段值 * feat: 数据库迁移支持定时迁移和迁移到sql文件
51 lines
871 B
Go
51 lines
871 B
Go
package writer
|
|
|
|
import (
|
|
"compress/gzip"
|
|
"io"
|
|
"mayfly-go/pkg/biz"
|
|
)
|
|
|
|
type GzipWriter struct {
|
|
tryFlushCount int
|
|
writer *gzip.Writer
|
|
aborted bool
|
|
}
|
|
|
|
func NewGzipWriter(writer io.Writer) *GzipWriter {
|
|
return &GzipWriter{writer: gzip.NewWriter(writer)}
|
|
}
|
|
|
|
func (g *GzipWriter) WriteString(data string) {
|
|
if g.aborted {
|
|
return
|
|
}
|
|
if _, err := g.writer.Write([]byte(data)); err != nil {
|
|
g.aborted = true
|
|
biz.IsTrue(false, "数据库导出失败:%s", err)
|
|
}
|
|
}
|
|
|
|
func (g *GzipWriter) Write(p []byte) (n int, err error) {
|
|
if g.aborted {
|
|
return
|
|
}
|
|
|
|
if _, err := g.writer.Write(p); err != nil {
|
|
g.aborted = true
|
|
biz.IsTrue(false, "数据库导出失败:%s", err)
|
|
}
|
|
return
|
|
}
|
|
|
|
func (g *GzipWriter) Close() {
|
|
g.writer.Close()
|
|
}
|
|
|
|
func (g *GzipWriter) TryFlush() {
|
|
if g.tryFlushCount%1000 == 0 {
|
|
g.writer.Flush()
|
|
}
|
|
g.tryFlushCount += 1
|
|
}
|