Initial commit: Gitea Project Management System
Features: - Complete project management system with Epic/Story/Task hierarchy - Vue.js 3 + Element Plus frontend with kanban board - Go backend with Gin framework and GORM - OAuth2 integration with Gitea - Docker containerization with MySQL - RESTful API for project, task, and user management - JWT authentication and authorization - Responsive web interface with dashboard
This commit is contained in:
60
internal/models/database.go
Normal file
60
internal/models/database.go
Normal file
@@ -0,0 +1,60 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"giteapm/config"
|
||||
|
||||
"gorm.io/driver/mysql"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/logger"
|
||||
)
|
||||
|
||||
var DB *gorm.DB
|
||||
|
||||
func InitDB(cfg config.DatabaseConfig) (*gorm.DB, error) {
|
||||
dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=True&loc=Local",
|
||||
cfg.Username, cfg.Password, cfg.Host, cfg.Port, cfg.Database, cfg.Charset)
|
||||
|
||||
var err error
|
||||
DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
|
||||
Logger: logger.Default.LogMode(logger.Info),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("连接数据库失败: %v", err)
|
||||
}
|
||||
|
||||
sqlDB, err := DB.DB()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("获取底层数据库连接失败: %v", err)
|
||||
}
|
||||
|
||||
sqlDB.SetMaxIdleConns(10)
|
||||
sqlDB.SetMaxOpenConns(100)
|
||||
sqlDB.SetConnMaxLifetime(time.Hour)
|
||||
|
||||
if err := autoMigrate(); err != nil {
|
||||
return nil, fmt.Errorf("数据库迁移失败: %v", err)
|
||||
}
|
||||
|
||||
return DB, nil
|
||||
}
|
||||
|
||||
func autoMigrate() error {
|
||||
return DB.AutoMigrate(
|
||||
&User{},
|
||||
&Project{},
|
||||
&ProjectMember{},
|
||||
&Epic{},
|
||||
&Story{},
|
||||
&Task{},
|
||||
&GiteaRelation{},
|
||||
&Sprint{},
|
||||
&Comment{},
|
||||
&Tag{},
|
||||
&EntityTag{},
|
||||
&TimeLog{},
|
||||
&WebhookConfig{},
|
||||
)
|
||||
}
|
Reference in New Issue
Block a user