Commit e3d337cc authored by Ajit Jagtap's avatar Ajit Jagtap
Browse files

Merge branch 'vi_sqlServerFix' into 'devbranch'

SQLServer:  added support for common parameters.

See merge request !234
parents b8c58279 3cf26174
2 merge requests!235release v1.2.2,!234SQLServer: added support for common parameters.
Showing with 46 additions and 19 deletions
......@@ -20,17 +20,23 @@ import (
//SQLServerConfig
type SQLServerConfig struct {
HostName string `json:"hostName"`
Server string `json:"server"`
Port int `json:"port"`
Username string `json:"username"`
Password string `json:"password"`
Database string `json:"database"`
IsDefault bool `json:"isDefault"`
MaxIdleConns int `json:"maxIdleConns" `
MaxOpenConns int `json:"maxOpenConns"`
ConnMaxLifetime time.Duration `json:"connMaxLifetime" `
IsDisabled bool `json:"isDisabled" `
HostName string `json:"hostName"`
Server string `json:"server"`
Port int `json:"port"`
Username string `json:"username"`
Password string `json:"password"`
Database string `json:"database"`
IsDefault bool `json:"isDefault"`
MaxIdleConns int `json:"maxIdleConns" `
MaxOpenConns int `json:"maxOpenConns"`
ConnMaxLifetime time.Duration `json:"connMaxLifetime" `
IsDisabled bool `json:"isDisabled" `
SQLParameters []SQLParameters `json:"sqlParameters"`
}
type SQLParameters struct {
Key string
Value string
}
//SQLServerDAO
......@@ -48,7 +54,7 @@ func init() {
}
// InitUsingJSON initializes sqlserver Connections for give JSON data
func InitUsingJSON(configs []SQLServerConfig) {
func InitUsingJSON(configs []SQLServerConfig) error {
var connectionErr error
......@@ -59,11 +65,11 @@ func InitUsingJSON(configs []SQLServerConfig) {
for _, hostDetails := range configs {
// Build connection string
connString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d;database=%s;",
hostDetails.Server, hostDetails.Username, hostDetails.Password, hostDetails.Port, hostDetails.Database)
// connString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d;database=%s;",
// hostDetails.Server, hostDetails.Username, hostDetails.Password, hostDetails.Port, hostDetails.Database)
connString := genereateConnectionString(hostDetails)
var err error
loggermdl.LogError("connString: ", connString)
// Create connection pool
conn, err := sql.Open("mssql", connString)
if err != nil {
......@@ -89,15 +95,16 @@ func InitUsingJSON(configs []SQLServerConfig) {
}
}
})
return connectionErr
}
// InitConnection - InitConnection
func InitConnection(connectionDetails SQLServerConfig) (*sql.DB, error) {
// Build connection string
connString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d;database=%s;",
connectionDetails.Server, connectionDetails.Username, connectionDetails.Password, connectionDetails.Port, connectionDetails.Database)
// connString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d;database=%s;",
// connectionDetails.Server, connectionDetails.Username, connectionDetails.Password, connectionDetails.Port, connectionDetails.Database)
connString := genereateConnectionString(connectionDetails)
// Create connection pool
connection, err := sql.Open("mssql", connString)
if err != nil {
......@@ -286,3 +293,23 @@ func ExecTxQuery(query string, tx *sql.Tx, args ...interface{}) (string, error)
// return strconv.Itoa(int(ID)), nil
return "-1", nil
}
func genereateConnectionString(config SQLServerConfig) string {
query := url.Values{}
// added each sql parameters in url.Values
query.Add("database", config.Database)
for _, sqlParam := range config.SQLParameters {
if _, ok := query[sqlParam.Key]; !ok {
query.Add(sqlParam.Key, sqlParam.Value)
}
}
u := &url.URL{
Scheme: "sqlserver",
User: url.UserPassword(config.Username, config.Password),
Host: fmt.Sprintf("%s:%d", config.Server, config.Port),
RawQuery: query.Encode(),
}
return u.String()
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment