123456789101112131415161718192021222324252627282930313233343536373839404142 |
- package xorm
- import (
- "errors"
- "regexp"
- "github.com/go-xorm/core"
- )
- type goracleDriver struct {
- }
- func (cfg *goracleDriver) Parse(driverName, dataSourceName string) (*core.Uri, error) {
- db := &core.Uri{DbType: core.ORACLE}
- dsnPattern := regexp.MustCompile(
- `^(?:(?P<user>.*?)(?::(?P<passwd>.*))?@)?` +
- `(?:(?P<net>[^\(]*)(?:\((?P<addr>[^\)]*)\))?)?` +
- `\/(?P<dbname>.*?)` +
- `(?:\?(?P<params>[^\?]*))?$`)
- matches := dsnPattern.FindStringSubmatch(dataSourceName)
-
- names := dsnPattern.SubexpNames()
- for i, match := range matches {
- switch names[i] {
- case "dbname":
- db.DbName = match
- }
- }
- if db.DbName == "" {
- return nil, errors.New("dbname is empty")
- }
- return db, nil
- }
|