init: 初始化 AssetX 项目仓库

包含 webapp(Next.js 用户端)、webapp-back(Go 后端)、
antdesign(管理后台)、landingpage(营销落地页)、
数据库 SQL 和配置文件。
This commit is contained in:
2026-03-27 11:26:43 +00:00
commit 2ee4553b71
634 changed files with 988255 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
package common
import (
"fmt"
"log"
"time"
"github.com/gothinkster/golang-gin-realworld-example-app/config"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
// InitMySQL initializes MySQL database connection
func InitMySQL() *gorm.DB {
cfg := config.AppConfig
if cfg == nil {
log.Fatal("Config not loaded. Please call config.Load() first")
}
// Build DSN
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
cfg.DBUser,
cfg.DBPassword,
cfg.DBHost,
cfg.DBPort,
cfg.DBName,
)
// Open database connection
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
Logger: logger.Default.LogMode(logger.Info),
})
if err != nil {
log.Fatal("Failed to connect to MySQL:", err)
}
// Get underlying sql.DB
sqlDB, err := db.DB()
if err != nil {
log.Fatal("Failed to get sql.DB:", err)
}
// Set connection pool parameters
sqlDB.SetMaxIdleConns(10)
sqlDB.SetMaxOpenConns(100)
sqlDB.SetConnMaxLifetime(time.Hour)
// Test connection
if err := sqlDB.Ping(); err != nil {
log.Fatal("Failed to ping MySQL:", err)
}
log.Println("✓ MySQL connected successfully")
DB = db
return DB
}
// InitRedis initializes Redis client (you'll need to add redis package)
func InitRedis() {
// TODO: Add Redis initialization
// You'll need to add github.com/redis/go-redis/v9
log.Println("✓ Redis initialization skipped (add go-redis package)")
}