2024-01-12 13:15:30 +08:00
|
|
|
|
package dbi
|
2022-10-15 17:38:34 +08:00
|
|
|
|
|
2023-05-24 12:32:17 +08:00
|
|
|
|
import (
|
2024-01-06 22:36:50 +08:00
|
|
|
|
"database/sql"
|
2023-05-24 12:32:17 +08:00
|
|
|
|
)
|
|
|
|
|
|
|
2024-01-09 17:31:21 +08:00
|
|
|
|
type DataType string
|
|
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
|
DataTypeString DataType = "string"
|
|
|
|
|
|
DataTypeNumber DataType = "number"
|
|
|
|
|
|
DataTypeDate DataType = "date"
|
|
|
|
|
|
DataTypeTime DataType = "time"
|
|
|
|
|
|
DataTypeDateTime DataType = "datetime"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
2024-03-01 04:03:03 +00:00
|
|
|
|
const (
|
|
|
|
|
|
// -1. 无操作
|
|
|
|
|
|
DuplicateStrategyNone = -1
|
|
|
|
|
|
// 1. 忽略
|
|
|
|
|
|
DuplicateStrategyIgnore = 1
|
|
|
|
|
|
// 2. 更新
|
|
|
|
|
|
DuplicateStrategyUpdate = 2
|
|
|
|
|
|
)
|
|
|
|
|
|
|
2024-01-23 04:08:02 +00:00
|
|
|
|
type DbCopyTable struct {
|
|
|
|
|
|
Id uint64 `json:"id"`
|
|
|
|
|
|
Db string `json:"db" `
|
|
|
|
|
|
TableName string `json:"tableName"`
|
|
|
|
|
|
CopyData bool `json:"copyData"` // 是否复制数据
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-01-24 08:29:16 +00:00
|
|
|
|
// 数据转换器
|
|
|
|
|
|
type DataConverter interface {
|
|
|
|
|
|
// 获取数据对应的类型
|
|
|
|
|
|
// @param dbColumnType 数据库原始列类型,如varchar等
|
|
|
|
|
|
GetDataType(dbColumnType string) DataType
|
|
|
|
|
|
|
|
|
|
|
|
// 根据数据类型格式化指定数据
|
|
|
|
|
|
FormatData(dbColumnValue any, dataType DataType) string
|
|
|
|
|
|
|
|
|
|
|
|
// 根据数据类型解析数据为符合要求的指定类型等
|
|
|
|
|
|
ParseData(dbColumnValue any, dataType DataType) any
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-10-16 14:22:19 +08:00
|
|
|
|
// -----------------------------------元数据接口定义------------------------------------------
|
2024-03-11 20:04:20 +08:00
|
|
|
|
// 数据库方言 用于获取元信息接口、批量插入等各个数据库方言不一致的实现方式
|
2024-01-12 13:15:30 +08:00
|
|
|
|
type Dialect interface {
|
2024-01-24 08:29:16 +00:00
|
|
|
|
|
2024-03-11 20:04:20 +08:00
|
|
|
|
// 获取元数据信息接口
|
|
|
|
|
|
GetMetaData() MetaData
|
2024-01-05 08:55:34 +08:00
|
|
|
|
|
|
|
|
|
|
// GetDbProgram 获取数据库程序模块,用于数据库备份与恢复
|
2024-02-06 07:16:56 +00:00
|
|
|
|
GetDbProgram() (DbProgram, error)
|
2024-01-05 05:31:32 +00:00
|
|
|
|
|
|
|
|
|
|
// 批量保存数据
|
2024-03-01 04:03:03 +00:00
|
|
|
|
BatchInsert(tx *sql.Tx, tableName string, columns []string, values [][]any, duplicateStrategy int) (int64, error)
|
2024-01-05 05:31:32 +00:00
|
|
|
|
|
2024-01-24 17:01:17 +08:00
|
|
|
|
// 获取数据转换器用于解析格式化列数据等
|
2024-01-24 08:29:16 +00:00
|
|
|
|
GetDataConverter() DataConverter
|
2024-01-23 04:08:02 +00:00
|
|
|
|
|
|
|
|
|
|
CopyTable(copy *DbCopyTable) error
|
2022-10-15 17:38:34 +08:00
|
|
|
|
}
|