Files
energy-management-system/core/gorm/gorm.go
2024-09-03 18:00:02 +08:00

89 lines
2.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package gorm
import (
"energy-management-system/global"
"energy-management-system/model/device-point"
"energy-management-system/model/init-db-data"
peak_valley "energy-management-system/model/peak-valley"
"fmt"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"gorm.io/gorm/schema"
"log"
"os"
"time"
)
func InitGorm() {
dsn := fmt.Sprintf("host=%s port=%d dbname=%s user=%s password=%s sslmode=disable TimeZone=%s",
global.AppConf.Db.DbHost, global.AppConf.Db.DbPort, global.AppConf.Db.DbName, global.AppConf.Db.DbUser, global.AppConf.Db.DbPass, global.AppConf.Db.TimeZone)
postgresConfig := postgres.Config{
DSN: dsn, // DSN data source name
PreferSimpleProtocol: true, // 禁用隐式 prepared statement
}
// 使用标准日志库的New方法创建日志输出
newLogger := logger.New(
log.New(os.Stdout, "\r\n", log.LstdFlags),
logger.Config{
SlowThreshold: time.Duration(global.AppConf.Db.SlowThreshold) * time.Millisecond, // 慢SQL阈值
LogLevel: logger.LogLevel(global.AppConf.Db.LogLevel), // 日志级别
IgnoreRecordNotFoundError: true,
Colorful: true,
})
PGDB, err := gorm.Open(postgres.New(postgresConfig), &gorm.Config{
//Logger: newLogger,
//Logger: logger.Default.LogMode(logger.Info),
Logger: newLogger,
NamingStrategy: schema.NamingStrategy{
SingularTable: true, // 使用单数表名在启用此选项的情况下“user”的表将是“user”
TablePrefix: global.AppConf.Db.TablePrefix, // 表前缀
},
})
DB := PGDB
if err != nil {
fmt.Println("数据库链接失败")
os.Exit(0)
}
//AutoMigrate(DB)
sqlDB, _ := DB.DB()
sqlDB.SetMaxIdleConns(global.AppConf.Db.IdleConns)
sqlDB.SetMaxOpenConns(global.AppConf.Db.OpenConns)
// 设置数据库连接池中连接的最大生命周期
sqlDB.SetConnMaxLifetime(time.Hour)
fmt.Println("[+]PG连接成功")
global.Db = DB
}
// AutoMigrate 自动迁移
func AutoMigrate(db *gorm.DB) {
err := db.AutoMigrate(
new(peak_valley.PeakValleyTimeBlock),
new(peak_valley.PeakValleyTimeBlockPrice),
new(peak_valley.PeakValleyQuarter),
new(peak_valley.PeakValleyRule),
new(device_point.DevicePoint),
new(device_point.PointName),
//new(model.Role),
//new(model.UserRole),
//new(model.Api),
//new(model.Menu),
//new(model.RoleApi),
//new(model.RoleMenu),
)
if err != nil {
fmt.Println("[-] 迁移数据表失败:", err.Error())
os.Exit(0)
}
}
func AutoInitDbData() {
init_db_data.InitDbData()
}