connector.NewOracleSqlConnector   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 6
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nop 5
dl 0
loc 6
rs 10
c 0
b 0
f 0
1
package connector
2
3
import (
4
	"database/sql"
5
	"fmt"
6
	"time"
7
8
	"github.com/cdleo/go-commons/logger"
9
	"github.com/cdleo/go-commons/sqlcommons"
10
	"github.com/godror/godror"
11
	"github.com/godror/godror/dsn"
12
)
13
14
type oracleConn struct {
15
	connString string
16
	user       string
17
	password   string
18
}
19
20
const oracleProxyName = "godror-proxy"
21
22
func NewOracleSqlConnector(host string, port int, user string, password string, database string) sqlcommons.SQLConnector {
23
24
	return &oracleConn{
25
		connString: fmt.Sprintf("(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=%s)(PORT=%d))(CONNECT_DATA=(%s)))", host, port, database),
26
		user:       user,
27
		password:   password,
28
	}
29
}
30
31
func NewOracleTNSSqlConnector(tnsName string, user string, password string) sqlcommons.SQLConnector {
32
33
	return &oracleConn{
34
		connString: fmt.Sprintf("connectString=%s", tnsName),
35
		user:       user,
36
		password:   password,
37
	}
38
}
39
40
func (s *oracleConn) Open(logger logger.Logger, translator sqlcommons.SQLAdapter) (*sql.DB, error) {
41
42
	registerProxy(oracleProxyName, logger, translator, godror.NewConnector(dsn.ConnectionParams{}).Driver())
43
44
	var connParams godror.ConnectionParams
45
	connParams.ConnectString = s.connString
46
	connParams.Username = s.user
47
	connParams.Password = godror.NewPassword(s.password)
48
	connParams.Timezone = time.Local
49
	connParams.StandaloneConnection = true
50
51
	return sql.Open(oracleProxyName, connParams.StringWithPassword())
52
}
53
54
func (s *oracleConn) GetNextSequenceQuery(sequenceName string) string {
55
	return fmt.Sprintf("SELECT %s.NEXTVAL FROM DUAL", sequenceName)
56
}
57