Files
backend/cmd/migrate/migration.go
T
2026-07-15 22:42:31 +08:00

70 lines
1.9 KiB
Go

package main
import (
"github.com/XingfenD/yoresee_doc/internal/model"
"github.com/XingfenD/yoresee_doc/pkg/storage"
"github.com/sirupsen/logrus"
"gorm.io/gorm"
)
func runMigration() error {
if err := storage.DB.Exec("CREATE EXTENSION IF NOT EXISTS ltree").Error; err != nil {
return err
}
logrus.Println("ltree extension created successfully")
err := storage.DB.AutoMigrate(
&model.Attachment{},
&model.Document{},
&model.DocumentComment{},
&model.DocumentYjsSnapshot{},
&model.DocumentVersion{},
&model.Invitation{},
&model.InvitationRecord{},
&model.KnowledgeBase{},
&model.RecentDocument{},
&model.RecentKnowledgeBase{},
&model.RecentTemplate{},
&model.MembershipRelation{},
&model.Notification{},
&model.OrgNodeMeta{},
&model.Template{},
&model.UserGroupMeta{},
&model.User{},
)
if err != nil {
return err
}
if err := migrateRecentKnowledgeBaseIndex(storage.DB); err != nil {
return err
}
if err := migrateRecentDocumentIndex(storage.DB); err != nil {
return err
}
if err := migrateRecentTemplateIndex(storage.DB); err != nil {
return err
}
if err := dropDocumentCommentQuote(storage.DB); err != nil {
return err
}
return nil
}
func migrateRecentKnowledgeBaseIndex(db *gorm.DB) error {
return db.Exec("CREATE UNIQUE INDEX IF NOT EXISTS idx_recent_kb_user_kb ON recent_knowledge_bases (user_id, knowledge_base_id)").Error
}
func migrateRecentTemplateIndex(db *gorm.DB) error {
return db.Exec("CREATE UNIQUE INDEX IF NOT EXISTS idx_recent_tpl_user_tpl ON recent_templates (user_id, template_id)").Error
}
func migrateRecentDocumentIndex(db *gorm.DB) error {
return db.Exec("CREATE UNIQUE INDEX IF NOT EXISTS idx_recent_doc_user_doc ON recent_documents (user_id, document_id)").Error
}
func dropDocumentCommentQuote(db *gorm.DB) error {
return db.Exec("ALTER TABLE document_comments DROP COLUMN IF EXISTS quote").Error
}