2
0

sys_init.go 3.5 KB

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