MCPcopy Index your code
hub / github.com/golang-migrate/migrate / Open

Method Open

database/sqlserver/sqlserver.go:124–180  ·  view source on GitHub ↗

Open a connection to the database.

(url string)

Source from the content-addressed store, hash-verified

122
123// Open a connection to the database.
124func (ss *SQLServer) Open(url string) (database.Driver, error) {
125 purl, err := nurl.Parse(url)
126 if err != nil {
127 return nil, err
128 }
129
130 useMsiParam := purl.Query().Get("useMsi")
131 useMsi := false
132 if len(useMsiParam) > 0 {
133 useMsi, err = strconv.ParseBool(useMsiParam)
134 if err != nil {
135 return nil, err
136 }
137 }
138
139 if _, isPasswordSet := purl.User.Password(); useMsi && isPasswordSet {
140 return nil, ErrMultipleAuthOptionsPassed
141 }
142
143 filteredURL := migrate.FilterCustomQuery(purl).String()
144
145 var db *sql.DB
146 if useMsi {
147 resource := getAADResourceFromServerUri(purl)
148 tokenProvider, err := getMSITokenProvider(resource)
149 if err != nil {
150 return nil, err
151 }
152
153 connector, err := mssql.NewAccessTokenConnector(
154 filteredURL, tokenProvider)
155 if err != nil {
156 return nil, err
157 }
158
159 db = sql.OpenDB(connector)
160
161 } else {
162 db, err = sql.Open("sqlserver", filteredURL)
163 if err != nil {
164 return nil, err
165 }
166 }
167
168 migrationsTable := purl.Query().Get("x-migrations-table")
169
170 px, err := WithInstance(db, &Config{
171 DatabaseName: purl.Path,
172 MigrationsTable: migrationsTable,
173 })
174
175 if err != nil {
176 return nil, err
177 }
178
179 return px, nil
180}
181

Callers 8

testFunction · 0.95
testMigrateFunction · 0.95
testMultiStatementFunction · 0.95
testErrorParsingFunction · 0.95
testLockWorksFunction · 0.95
testMsiTrueFunction · 0.95
testMsiFalseFunction · 0.95

Calls 5

getMSITokenProviderFunction · 0.85
StringMethod · 0.80
WithInstanceFunction · 0.70
OpenMethod · 0.65

Tested by 8

testFunction · 0.76
testMigrateFunction · 0.76
testMultiStatementFunction · 0.76
testErrorParsingFunction · 0.76
testLockWorksFunction · 0.76
testMsiTrueFunction · 0.76
testMsiFalseFunction · 0.76