material_manage_system/pkg/database/database.go
2026-09-15 16:08:18 +08:00

47 lines
767 B
Go

package database
import (
"database/sql"
"fmt"
"strings"
"time"
_ "github.com/go-sql-driver/mysql"
)
var DB *sql.DB
func Init(dsn string) error {
// Add parseTime=true to handle DATETIME columns as time.Time
if !strings.Contains(dsn, "parseTime=") {
if strings.Contains(dsn, "?") {
dsn += "&parseTime=true"
} else {
dsn += "?parseTime=true"
}
}
var err error
DB, err = sql.Open("mysql", dsn)
if err != nil {
return fmt.Errorf("failed to open database: %w", err)
}
DB.SetMaxOpenConns(25)
DB.SetMaxIdleConns(5)
DB.SetConnMaxLifetime(5 * time.Minute)
if err = DB.Ping(); err != nil {
return fmt.Errorf("failed to ping database: %w", err)
}
return nil
}
func Close() error {
if DB != nil {
return DB.Close()
}
return nil
}