多平台账号批量注册系统,支持 OpenAI / Grok / Kiro / Gemini 平台的全自动注册。 Features: - 用户名/密码注册登录(首个用户自动管理员) - JWT 认证 + bcrypt 密码加密 - 积分系统与多用户管理 - HuggingFace Space 弹性 Worker 节点管理 - Cloudflare Worker 负载均衡 - 实时日志推送(SSE/WebSocket) - 管理后台(用户管理、系统设置、代理池、卡池) Tech Stack: Go 1.25 / Gin / GORM / PostgreSQL / Vue 3 / Vite / TailwindCSS
53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package model
|
||
|
||
import (
|
||
"time"
|
||
|
||
"github.com/rs/zerolog/log"
|
||
"gorm.io/driver/postgres"
|
||
"gorm.io/gorm"
|
||
"gorm.io/gorm/logger"
|
||
)
|
||
|
||
// ConnectDB 连接 PostgreSQL 并自动迁移
|
||
func ConnectDB(dsn string) *gorm.DB {
|
||
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{
|
||
Logger: logger.Default.LogMode(logger.Warn),
|
||
})
|
||
if err != nil {
|
||
log.Fatal().Err(err).Msg("数据库连接失败")
|
||
}
|
||
|
||
// 配置连接池
|
||
sqlDB, err := db.DB()
|
||
if err != nil {
|
||
log.Fatal().Err(err).Msg("获取底层数据库连接失败")
|
||
}
|
||
sqlDB.SetMaxOpenConns(50)
|
||
sqlDB.SetMaxIdleConns(10)
|
||
sqlDB.SetConnMaxLifetime(time.Hour)
|
||
|
||
// 自动迁移(开发环境用,生产用 golang-migrate)
|
||
if err := db.AutoMigrate(
|
||
&User{},
|
||
&Task{},
|
||
&TaskResult{},
|
||
&CreditTransaction{},
|
||
&SystemSetting{},
|
||
&RedemptionCode{},
|
||
&Announcement{},
|
||
&Notification{},
|
||
&NotificationRead{},
|
||
&HFToken{},
|
||
&HFSpace{},
|
||
&UserProxy{},
|
||
&ProxyPoolEntry{},
|
||
&CardPoolEntry{},
|
||
); err != nil {
|
||
log.Fatal().Err(err).Msg("数据库迁移失败")
|
||
}
|
||
|
||
log.Info().Msg("数据库连接成功")
|
||
return db
|
||
}
|