mirror of
https://github.com/xiaoxinpro/nginx-proxy-manager-zh.git
synced 2025-01-24 05:38:15 -05:00
80 lines
1.8 KiB
Go
80 lines
1.8 KiB
Go
|
package config
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
DatabaseSqlite = "sqlite"
|
||
|
DatabasePostgres = "postgres"
|
||
|
DatabaseMysql = "mysql"
|
||
|
)
|
||
|
|
||
|
type db struct {
|
||
|
Driver string `json:"driver" envconfig:"optional,default=sqlite"`
|
||
|
Host string `json:"host" envconfig:"optional,default="`
|
||
|
Port int `json:"port" envconfig:"optional,default="`
|
||
|
Username string `json:"username" envconfig:"optional,default="`
|
||
|
Password string `json:"password" envconfig:"optional,default="`
|
||
|
Name string `json:"name" envconfig:"optional,default="`
|
||
|
SSLMode string `json:"sslmode" envconfig:"optional,default=deisable"`
|
||
|
}
|
||
|
|
||
|
// GetDriver returns the lowercase driver name
|
||
|
func (d *db) GetDriver() string {
|
||
|
return strings.ToLower(d.Driver)
|
||
|
}
|
||
|
|
||
|
// GetGormConnectURL is used by Gorm
|
||
|
func (d *db) GetGormConnectURL() string {
|
||
|
switch d.GetDriver() {
|
||
|
case DatabaseSqlite:
|
||
|
return fmt.Sprintf("%s/nginxproxymanager.db", Configuration.DataFolder)
|
||
|
case DatabasePostgres:
|
||
|
return fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%d sslmode=%s TimeZone=UTC",
|
||
|
d.Host,
|
||
|
d.Username,
|
||
|
d.Password,
|
||
|
d.Name,
|
||
|
d.Port,
|
||
|
d.SSLMode,
|
||
|
)
|
||
|
case DatabaseMysql:
|
||
|
return fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local",
|
||
|
d.Username,
|
||
|
d.Password,
|
||
|
d.Host,
|
||
|
d.Port,
|
||
|
d.Name,
|
||
|
)
|
||
|
}
|
||
|
return ""
|
||
|
}
|
||
|
|
||
|
// GetDBMateConnectURL is used by Dbmate
|
||
|
func (d *db) GetDBMateConnectURL() string {
|
||
|
switch d.GetDriver() {
|
||
|
case DatabaseSqlite:
|
||
|
return fmt.Sprintf("sqlite:%s/nginxproxymanager.db", Configuration.DataFolder)
|
||
|
case DatabasePostgres:
|
||
|
return fmt.Sprintf("postgres://%s:%s@%s:%d/%s?sslmode=%s",
|
||
|
d.Username,
|
||
|
d.Password,
|
||
|
d.Host,
|
||
|
d.Port,
|
||
|
d.Name,
|
||
|
d.SSLMode,
|
||
|
)
|
||
|
case DatabaseMysql:
|
||
|
return fmt.Sprintf("mysql://%s:%s@%s:%d/%s",
|
||
|
d.Username,
|
||
|
d.Password,
|
||
|
d.Host,
|
||
|
d.Port,
|
||
|
d.Name,
|
||
|
)
|
||
|
}
|
||
|
return ""
|
||
|
}
|