()
| 67 | } |
| 68 | |
| 69 | func getEngine() (*xorm.Engine, error) { |
| 70 | Param := "?" |
| 71 | if strings.Contains(conf.Database.Name, Param) { |
| 72 | Param = "&" |
| 73 | } |
| 74 | |
| 75 | driver := conf.Database.Type |
| 76 | connStr := "" |
| 77 | switch conf.Database.Type { |
| 78 | case "mysql": |
| 79 | conf.UseMySQL = true |
| 80 | if conf.Database.Host[0] == '/' { // looks like a unix socket |
| 81 | connStr = fmt.Sprintf("%s:%s@unix(%s)/%s%scharset=utf8mb4&parseTime=true", |
| 82 | conf.Database.User, conf.Database.Password, conf.Database.Host, conf.Database.Name, Param) |
| 83 | } else { |
| 84 | connStr = fmt.Sprintf("%s:%s@tcp(%s)/%s%scharset=utf8mb4&parseTime=true", |
| 85 | conf.Database.User, conf.Database.Password, conf.Database.Host, conf.Database.Name, Param) |
| 86 | } |
| 87 | engineParams := map[string]string{"rowFormat": "DYNAMIC"} |
| 88 | return xorm.NewEngineWithParams(conf.Database.Type, connStr, engineParams) |
| 89 | |
| 90 | case "postgres": |
| 91 | conf.UsePostgreSQL = true |
| 92 | host, port := dbutil.ParsePostgreSQLHostPort(conf.Database.Host) |
| 93 | connStr = fmt.Sprintf("user='%s' password='%s' host='%s' port='%s' dbname='%s' sslmode='%s' search_path='%s'", |
| 94 | conf.Database.User, conf.Database.Password, host, port, conf.Database.Name, conf.Database.SSLMode, conf.Database.Schema) |
| 95 | driver = "pgx" |
| 96 | |
| 97 | case "mssql": |
| 98 | conf.UseMSSQL = true |
| 99 | host, port := dbutil.ParseMSSQLHostPort(conf.Database.Host) |
| 100 | connStr = fmt.Sprintf("server=%s; port=%s; database=%s; user id=%s; password=%s;", host, port, conf.Database.Name, conf.Database.User, conf.Database.Password) |
| 101 | |
| 102 | case "sqlite3": |
| 103 | if err := os.MkdirAll(path.Dir(conf.Database.Path), os.ModePerm); err != nil { |
| 104 | return nil, errors.Newf("create directories: %v", err) |
| 105 | } |
| 106 | conf.UseSQLite3 = true |
| 107 | connStr = "file:" + conf.Database.Path + "?cache=shared&mode=rwc" |
| 108 | |
| 109 | default: |
| 110 | return nil, errors.Newf("unknown database type: %s", conf.Database.Type) |
| 111 | } |
| 112 | return xorm.NewEngine(driver, connStr) |
| 113 | } |
| 114 | |
| 115 | func NewTestEngine() error { |
| 116 | x, err := getEngine() |
no test coverage detected