mirror of
https://gitee.com/dromara/mayfly-go
synced 2025-11-03 16:00:25 +08:00
fix: 机器文件下载问题修复&dbm重构
This commit is contained in:
51
server/internal/db/dbm/dm/meta.go
Normal file
51
server/internal/db/dbm/dm/meta.go
Normal file
@@ -0,0 +1,51 @@
|
||||
package dm
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"mayfly-go/internal/db/dbm/dbi"
|
||||
"strings"
|
||||
"sync"
|
||||
)
|
||||
|
||||
var (
|
||||
meta dbi.Meta
|
||||
once sync.Once
|
||||
)
|
||||
|
||||
func GetMeta() dbi.Meta {
|
||||
once.Do(func() {
|
||||
meta = new(DmMeta)
|
||||
})
|
||||
return meta
|
||||
}
|
||||
|
||||
type DmMeta struct {
|
||||
}
|
||||
|
||||
func (md *DmMeta) GetSqlDb(d *dbi.DbInfo) (*sql.DB, error) {
|
||||
driverName := "dm"
|
||||
db := d.Database
|
||||
var dbParam string
|
||||
if db != "" {
|
||||
// dm database可以使用db/schema表示,方便连接指定schema, 若不存在schema则使用默认schema
|
||||
ss := strings.Split(db, "/")
|
||||
if len(ss) > 1 {
|
||||
dbParam = fmt.Sprintf("%s?schema=%s", ss[0], ss[len(ss)-1])
|
||||
} else {
|
||||
dbParam = db
|
||||
}
|
||||
}
|
||||
|
||||
err := d.IfUseSshTunnelChangeIpPort()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
dsn := fmt.Sprintf("dm://%s:%s@%s:%d/%s", d.Username, d.Password, d.Host, d.Port, dbParam)
|
||||
return sql.Open(driverName, dsn)
|
||||
}
|
||||
|
||||
func (md *DmMeta) GetDialect(conn *dbi.DbConn) dbi.Dialect {
|
||||
return &DMDialect{conn}
|
||||
}
|
||||
Reference in New Issue
Block a user