Files
nl-pms-api/internal/database/db.go
2026-08-15 07:41:11 +08:00

37 lines
975 B
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package database
import (
"errors"
"fmt"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"nl-pms-api/internal/config"
"nl-pms-api/internal/model"
)
// Open 连接 MySQL 并按环境处理表结构:
// dev 环境自动迁移 pms_filesprod 严禁任何 DDL缺表直接报错退出提示执行 init.sql
func Open(cfg *config.Config) (*gorm.DB, error) {
lv := logger.Warn
if cfg.Env == "dev" {
lv = logger.Info
}
db, err := gorm.Open(mysql.Open(cfg.MySQL.DSN), &gorm.Config{Logger: logger.Default.LogMode(lv)})
if err != nil {
return nil, fmt.Errorf("连接 MySQL 失败: %w", err)
}
if cfg.Env == "dev" {
if err := db.AutoMigrate(&model.File{}); err != nil {
return nil, fmt.Errorf("dev 自动迁移失败: %w", err)
}
return db, nil
}
if !db.Migrator().HasTable(&model.File{}) {
return nil, errors.New("缺少 pms_files 表:生产环境启动不执行迁移,请先手工执行 init.sql")
}
return db, nil
}