package globals import ( "database/sql" "fmt" "platform/pkg/env" "platform/web/queries" "gorm.io/driver/postgres" "gorm.io/gorm" "gorm.io/gorm/schema" ) var DB *gorm.DB var Conn *sql.DB func initOrm() error { // 连接数据库 dsn := fmt.Sprintf( "host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Shanghai", env.DbHost, env.DbUserName, env.DbPassword, env.DbName, env.DbPort, ) db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{ TranslateError: true, NamingStrategy: schema.NamingStrategy{ SingularTable: true, }, }) if err != nil { return fmt.Errorf("连接数据库失败: %w", err) } // 连接池 conn, err := db.DB() if err != nil { return fmt.Errorf("配置连接池失败: %w", err) } conn.SetMaxIdleConns(10) conn.SetMaxOpenConns(100) queries.SetDefault(db) DB = db Conn = conn return nil } func closeOrm() error { if DB != nil { conn, err := DB.DB() if err != nil { return fmt.Errorf("关闭数据库连接失败: %w", err) } return conn.Close() } return nil }