Files

59 lines
1.2 KiB
Go

package models
import (
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
var DBService *gorm.DB
func New(dsn string) error {
// 启用 Gorm 跨驱动错误翻译,业务层无需解析 Postgres 错误文本或 SQLSTATE。
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{TranslateError: true})
if err != nil {
return err
}
if err := AutoMigrate(db); err != nil {
return err
}
DBService = db
return nil
}
func AutoMigrate(database *gorm.DB) error {
cleanDatabase := database.Session(&gorm.Session{NewDB: true})
if err := cleanDatabase.Transaction(renameLegacyTables); err != nil {
return err
}
if err := cleanDatabase.AutoMigrate(
&SaSchemaMigration{},
&SaUser{},
&SaProject{},
&SaDatasetSource{},
&SaDatasetItem{},
&SaInboxItem{},
&SaInboxSuggestion{},
&SaTask{},
&SaDocumentTree{},
&SaDocumentContent{},
&SaDocumentBlob{},
&SaDocumentShare{},
&SaAIExpertCategory{},
&SaAIExpertItem{},
&SaAISession{},
&SaTag{},
&SaProjectChannel{},
&SaCronPlan{},
&SaProjectEvent{},
&SaAIKey{},
&SaAICallLog{},
&SaAIRateBucket{},
&SaTaskShare{},
); err != nil {
return err
}
return runVersionedMigrations(cleanDatabase)
}