github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/go-xorm/xorm/goracle_driver.go (about) 1 // Copyright 2015 The Xorm Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package xorm 6 7 import ( 8 "errors" 9 "regexp" 10 11 "github.com/insionng/yougam/libraries/go-xorm/core" 12 ) 13 14 // func init() { 15 // core.RegisterDriver("goracle", &goracleDriver{}) 16 // } 17 18 type goracleDriver struct { 19 } 20 21 func (cfg *goracleDriver) Parse(driverName, dataSourceName string) (*core.Uri, error) { 22 db := &core.Uri{DbType: core.ORACLE} 23 dsnPattern := regexp.MustCompile( 24 `^(?:(?P<user>.*?)(?::(?P<passwd>.*))?@)?` + // [user[:password]@] 25 `(?:(?P<net>[^\(]*)(?:\((?P<addr>[^\)]*)\))?)?` + // [net[(addr)]] 26 `\/(?P<dbname>.*?)` + // /dbname 27 `(?:\?(?P<params>[^\?]*))?$`) // [?param1=value1¶mN=valueN] 28 matches := dsnPattern.FindStringSubmatch(dataSourceName) 29 //tlsConfigRegister := make(map[string]*tls.Config) 30 names := dsnPattern.SubexpNames() 31 32 for i, match := range matches { 33 switch names[i] { 34 case "dbname": 35 db.DbName = match 36 } 37 } 38 if db.DbName == "" { 39 return nil, errors.New("dbname is empty") 40 } 41 return db, nil 42 }