Files
Miccah 85f5f3ea7b Add sqlserver integration test and some default params (#891)
* Improve anonymous redaction

* Add sqlserver integration test and some default params
2022-11-02 11:04:49 -05:00

51 lines
1.0 KiB
Go

package jdbc
import (
"context"
"errors"
"strings"
_ "github.com/denisenkom/go-mssqldb"
)
type sqlServerJDBC struct {
conn string
params map[string]string
}
func (s *sqlServerJDBC) ping(ctx context.Context) bool {
if ping(ctx, "mssql", s.conn) {
return true
}
if ping(ctx, "mssql", joinKeyValues(s.params, ";")) {
return true
}
// try URL format
return ping(ctx, "mssql", "sqlserver://"+s.conn)
}
func parseSqlServer(subname string) (jdbc, error) {
if !strings.HasPrefix(subname, "//") {
return nil, errors.New("expected connection to start with //")
}
conn := strings.TrimPrefix(subname, "//")
params := map[string]string{
"user id": "sa",
"database": "master",
}
for _, param := range strings.Split(conn, ";") {
key, value, found := strings.Cut(param, "=")
if !found {
continue
}
params[key] = value
if key != "password" && strings.Contains(strings.ToLower(key), "password") {
params["password"] = value
}
}
return &sqlServerJDBC{
conn: strings.TrimPrefix(subname, "//"),
params: params,
}, nil
}