MCPcopy Create free account
hub / github.com/gogs/gogs / getEngine

Function getEngine

internal/database/models.go:69–113  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

67}
68
69func 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
115func NewTestEngine() error {
116 x, err := getEngine()

Callers 2

NewTestEngineFunction · 0.85
SetEngineFunction · 0.85

Calls 2

ParsePostgreSQLHostPortFunction · 0.92
ParseMSSQLHostPortFunction · 0.92

Tested by

no test coverage detected