Files
ops2/backend/my_work/models/sql.go
T
2026-04-28 16:38:39 +08:00

54 lines
2.0 KiB
Go

package models
import (
"fmt"
"github.com/glebarez/sqlite"
"gorm.io/driver/mysql"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
var DB *gorm.DB
// type APIRequestLog_ struct {
// ID int64 `gorm:"primaryKey;column:id" json:"id"`
// IPAddress string `gorm:"column:ip_address;size:45;not null" json:"ip_address"`
// Path string `gorm:"column:path;size:500;not null" json:"path"`
// Method string `gorm:"column:method;size:10;not null" json:"method"`
// StatusCode int `gorm:"column:status_code;index" json:"status_code"`
// Message string `gorm:"column:error_message;type:text" json:"error_message"`
// CreatedAt time.Time `gorm:"column:created_at;type:datetime;default:CURRENT_TIMESTAMP" json:"created_at"`
// }
func DatabaseInit() error {
var err error
fmt.Println("database_init")
DatabaseConfigs := Configs["database"].(map[string]interface{})
if DatabaseConfigs["type"].(string) == "sqlite" {
//sqlite init
fmt.Println("sqlite")
DB, err = gorm.Open(sqlite.Open(DatabaseConfigs["path"].(string)), &gorm.Config{})
} else if DatabaseConfigs["type"].(string) == "mysql" {
//mysql init
fmt.Println("mysql")
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", DatabaseConfigs["user"].(string), DatabaseConfigs["pass"].(string), DatabaseConfigs["host"].(string), DatabaseConfigs["port"].(string), DatabaseConfigs["name"].(string))
DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
} else if DatabaseConfigs["type"].(string) == "pg" {
//postgresql init
fmt.Println("postgresql")
dsn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Shanghai", DatabaseConfigs["host"].(string), DatabaseConfigs["user"].(string), DatabaseConfigs["pass"].(string), DatabaseConfigs["name"].(string), DatabaseConfigs["port"].(string))
DB, err = gorm.Open(postgres.Open(dsn), &gorm.Config{})
}
if err != nil {
fmt.Println(err)
panic("数据库连接失败")
}
//DB.AutoMigrate(&APIRequestLog_{})
return nil
}