sys_init.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. package request
  2. import (
  3. "fmt"
  4. "os"
  5. "server/config"
  6. )
  7. type InitDB struct {
  8. DBType string `json:"dbType"` // 数据库类型
  9. Host string `json:"host"` // 服务器地址
  10. Port string `json:"port"` // 数据库连接端口
  11. UserName string `json:"userName"` // 数据库用户名
  12. Password string `json:"password"` // 数据库密码
  13. DBName string `json:"dbName" binding:"required"` // 数据库名
  14. DBPath string `json:"dbPath"` // sqlite数据库文件路径
  15. }
  16. // MysqlEmptyDsn msyql 空数据库 建库链接
  17. // Author SliverHorn
  18. func (i *InitDB) MysqlEmptyDsn() string {
  19. if i.Host == "" {
  20. i.Host = "127.0.0.1"
  21. }
  22. if i.Port == "" {
  23. i.Port = "3306"
  24. }
  25. return fmt.Sprintf("%s:%s@tcp(%s:%s)/", i.UserName, i.Password, i.Host, i.Port)
  26. }
  27. // PgsqlEmptyDsn pgsql 空数据库 建库链接
  28. // Author SliverHorn
  29. func (i *InitDB) PgsqlEmptyDsn() string {
  30. if i.Host == "" {
  31. i.Host = "127.0.0.1"
  32. }
  33. if i.Port == "" {
  34. i.Port = "5432"
  35. }
  36. return "host=" + i.Host + " user=" + i.UserName + " password=" + i.Password + " port=" + i.Port + " dbname=" + "postgres" + " " + "sslmode=disable TimeZone=Asia/Shanghai"
  37. }
  38. // SqliteEmptyDsn sqlite 空数据库 建库链接
  39. // Author Kafumio
  40. func (i *InitDB) SqliteEmptyDsn() string {
  41. separator := string(os.PathSeparator)
  42. return i.DBPath + separator + i.DBName + ".db"
  43. }
  44. func (i *InitDB) MssqlEmptyDsn() string {
  45. return "sqlserver://" + i.UserName + ":" + i.Password + "@" + i.Host + ":" + i.Port + "?database=" + i.DBName + "&encrypt=disable"
  46. }
  47. // ToMysqlConfig 转换 config.Mysql
  48. // Author [SliverHorn](https://github.com/SliverHorn)
  49. func (i *InitDB) ToMysqlConfig() config.Mysql {
  50. return config.Mysql{
  51. GeneralDB: config.GeneralDB{
  52. Path: i.Host,
  53. Port: i.Port,
  54. Dbname: i.DBName,
  55. Username: i.UserName,
  56. Password: i.Password,
  57. MaxIdleConns: 10,
  58. MaxOpenConns: 100,
  59. LogMode: "error",
  60. Config: "charset=utf8mb4&parseTime=True&loc=Local",
  61. },
  62. }
  63. }
  64. // ToPgsqlConfig 转换 config.Pgsql
  65. // Author [SliverHorn](https://github.com/SliverHorn)
  66. func (i *InitDB) ToPgsqlConfig() config.Pgsql {
  67. return config.Pgsql{
  68. GeneralDB: config.GeneralDB{
  69. Path: i.Host,
  70. Port: i.Port,
  71. Dbname: i.DBName,
  72. Username: i.UserName,
  73. Password: i.Password,
  74. MaxIdleConns: 10,
  75. MaxOpenConns: 100,
  76. LogMode: "error",
  77. Config: "sslmode=disable TimeZone=Asia/Shanghai",
  78. },
  79. }
  80. }
  81. // ToSqliteConfig 转换 config.Sqlite
  82. // Author [Kafumio](https://github.com/Kafumio)
  83. func (i *InitDB) ToSqliteConfig() config.Sqlite {
  84. return config.Sqlite{
  85. GeneralDB: config.GeneralDB{
  86. Path: i.DBPath,
  87. Port: i.Port,
  88. Dbname: i.DBName,
  89. Username: i.UserName,
  90. Password: i.Password,
  91. MaxIdleConns: 10,
  92. MaxOpenConns: 100,
  93. LogMode: "error",
  94. Config: "",
  95. },
  96. }
  97. }
  98. func (i *InitDB) ToMssqlConfig() config.Mssql {
  99. return config.Mssql{
  100. GeneralDB: config.GeneralDB{
  101. Path: i.DBPath,
  102. Port: i.Port,
  103. Dbname: i.DBName,
  104. Username: i.UserName,
  105. Password: i.Password,
  106. MaxIdleConns: 10,
  107. MaxOpenConns: 100,
  108. LogMode: "error",
  109. Config: "",
  110. },
  111. }
  112. }