MCPcopy Create free account
hub / github.com/actiontech/dtle / connectDatabase

Function connectDatabase

api/handler/v2/database.go:308–349  ·  view source on GitHub ↗
(reqParam *models.ConnectionReqV2)

Source from the content-addressed store, hash-verified

306}
307
308func connectDatabase(reqParam *models.ConnectionReqV2) error {
309 var db *gosql.DB
310 var err error
311 switch reqParam.DatabaseType {
312 case DB_TYPE_MYSQL:
313 uri, err := buildMysqlUri(reqParam.Host, reqParam.User, reqParam.Password,
314 "", int(reqParam.Port), reqParam.IsPasswordEncrypted)
315 if err != nil {
316 return fmt.Errorf("build database Uri failed: %v", err)
317 }
318 db, err = sql.CreateDB(uri)
319 case DB_TYPE_ORACLE:
320 if reqParam.IsPasswordEncrypted && reqParam.Password != "" {
321 realPwd, err := handler.DecryptPassword(reqParam.Password, g.RsaPrivateKey)
322 if nil != err {
323 return err
324 }
325 reqParam.Password = realPwd
326 }
327 db, err = config.OpenDb(&config.OracleConfig{
328 User: reqParam.User,
329 Password: reqParam.Password,
330 Host: reqParam.Host,
331 Port: reqParam.Port,
332 ServiceName: reqParam.ServiceName,
333 })
334 default:
335 return fmt.Errorf("data type %v is unsupport", reqParam.DatabaseType)
336 }
337
338 if err != nil {
339 return fmt.Errorf("open db failed: %v", err)
340 }
341 defer db.Close()
342
343 err = db.Ping()
344 if err != nil {
345 return err
346 }
347
348 return nil
349}
350

Callers 2

ConnectionV2Function · 0.85
MySQLConnectionV2Function · 0.85

Calls 5

CreateDBFunction · 0.92
DecryptPasswordFunction · 0.92
OpenDbFunction · 0.92
buildMysqlUriFunction · 0.85
CloseMethod · 0.45

Tested by

no test coverage detected