Initial commit

This commit is contained in:
2024-08-12 04:10:48 +00:00
commit a55ef32347
22 changed files with 2410 additions and 0 deletions

110
db.go Normal file
View File

@ -0,0 +1,110 @@
package main
import (
"database/sql"
"errors"
"fmt"
"log"
"sync"
"time"
_ "github.com/go-sql-driver/mysql"
"github.com/redis/go-redis/v9"
)
type DBManager struct {
MySQL *sql.DB
Redis *redis.Client
}
// dbInstance holds the single instance of DBManager
var dbInstance *DBManager
var oncedb sync.Once
// GetDBManager provides a global access point to the DBManager instance
func GetDBManager() (*DBManager, error) {
oncedb.Do(func() {
config, _ := GetConfigManager()
dbInstance = &DBManager{}
initError = initDBManager(dbInstance, config)
})
return dbInstance, initError
}
// initDBManager initializes the DBManager instance with database connections
func initDBManager(dbManager *DBManager, config *ConfigManager) error {
// 初始化 MySQL 连接
//dsn := "username:password@tcp(localhost:3306)/aigrammar?parseTime=true"
dsn := fmt.Sprintf("%s:%s@tcp(%s)/aigrammar?parseTime=true",
config.GetDatabaseConfig().MysqlUser,
config.GetDatabaseConfig().MysqlPass,
config.GetDatabaseConfig().MysqlConn,
)
db, err := sql.Open("mysql", dsn)
if err != nil {
log.Fatalf("Error opening MySQL database: %v", err)
return errors.New("Error opening MySQL database:")
}
db.SetMaxOpenConns(25)
db.SetMaxIdleConns(10)
db.SetConnMaxLifetime(time.Minute * 5)
dbManager.MySQL = db
// 初始化 Redis 连接
rdb := redis.NewClient(&redis.Options{
Addr: config.GetDatabaseConfig().RedisConn,
Password: "", // no password set
DB: 0, // use default DB
PoolSize: 10, // 连接池大小
})
dbManager.Redis = rdb
return nil
}
func (db *DBManager) CloseDB() {
db.MySQL.Close()
db.Redis.Close()
}
/*
func NewDBManager(config *ConfigManager) (*DBManager, error) {
dbManager := &DBManager{}
// 初始化 MySQL 连接
//dsn := "username:password@tcp(localhost:3306)/aigrammar?parseTime=true"
dsn := fmt.Sprintf("%s:%s@tcp(%s)/aigrammar?parseTime=true",
config.GetDatabaseConfig().MysqlUser,
config.GetDatabaseConfig().MysqlPass,
config.GetDatabaseConfig().MysqlConn,
)
db, err := sql.Open("mysql", dsn)
if err != nil {
log.Fatalf("Error opening MySQL database: %v", err)
return nil, errors.New("Error opening MySQL database: %v", err)
}
db.SetMaxOpenConns(25)
db.SetMaxIdleConns(10)
db.SetConnMaxLifetime(time.Minute * 5)
dbManager.MySQL = db
// 初始化 Redis 连接
rdb := redis.NewClient(&redis.Options{
Addr: config.GetDatabaseConfig().RedisConn,
Password: "", // no password set
DB: 0, // use default DB
PoolSize: 10, // 连接池大小
})
dbManager.Redis = rdb
return dbManager, nil
}
func (db *DBManager) CloseDB() {
db.MySQL.Close()
db.Redis.Close()
}
*/