From 4c2d60541185733d5759c6325668e21de6fbbffe Mon Sep 17 00:00:00 2001 From: lafay <2021211506@stu.hit.edu.cn> Date: Thu, 19 Mar 2026 19:43:37 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BA=86=E6=9C=AA?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=BF=81=E7=A7=BB=E7=9A=84=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/migrate/main.go | 140 ----------------------------------------- internal/model/init.go | 5 ++ 2 files changed, 5 insertions(+), 140 deletions(-) delete mode 100644 cmd/migrate/main.go diff --git a/cmd/migrate/main.go b/cmd/migrate/main.go deleted file mode 100644 index 7fc8334..0000000 --- a/cmd/migrate/main.go +++ /dev/null @@ -1,140 +0,0 @@ -package main - -import ( - "errors" - "flag" - "fmt" - "log" - - "go.uber.org/zap" - "gorm.io/driver/postgres" - "gorm.io/gorm" -) - -// Config 数据库配置 -type Config struct { - Host string - Port int - User string - Password string - DBName string - SSLMode string -} - -type PostImage struct { - ID string `gorm:"type:varchar(36);primaryKey"` - PostID string `gorm:"type:varchar(36);index"` - URL string `gorm:"type:text"` - ThumbnailURL string `gorm:"type:text"` - PreviewURL string `gorm:"type:text"` - PreviewURLLarge string `gorm:"type:text"` - Width int `gorm:"default:0"` - Height int `gorm:"default:0"` - Size int64 `gorm:"default:0"` - MimeType string `gorm:"type:varchar(50)"` - SortOrder int `gorm:"default:0"` -} - -func (PostImage) TableName() string { - return "post_images" -} - -func main() { - // 解析命令行参数 - host := flag.String("host", "localhost", "数据库主机") - port := flag.Int("port", 5432, "数据库端口") - user := flag.String("user", "postgres", "数据库用户") - password := flag.String("password", "", "数据库密码") - dbname := flag.String("dbname", "carrot_bbs", "数据库名称") - sslmode := flag.String("sslmode", "disable", "SSL 模式") - flag.Parse() - - cfg := &Config{ - Host: *host, - Port: *port, - User: *user, - Password: *password, - DBName: *dbname, - SSLMode: *sslmode, - } - - // 连接数据库 - dsn := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=%s", - cfg.Host, cfg.Port, cfg.User, cfg.Password, cfg.DBName, cfg.SSLMode) - - db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{}) - if err != nil { - log.Fatalf("Failed to connect to database: %v", err) - } - - // 测试连接 - sqlDB, err := db.DB() - if err != nil { - log.Fatalf("Failed to get database instance: %v", err) - } - defer sqlDB.Close() - - if err := sqlDB.Ping(); err != nil { - zap.L().Fatal("Failed to ping database", zap.Error(err)) - } - - zap.L().Info("Connected to database") - - // 运行迁移 - if err := runMigration(db); err != nil { - zap.L().Fatal("Migration failed", zap.Error(err)) - } - - zap.L().Info("Migration completed successfully") -} - -func runMigration(db *gorm.DB) error { - // 检查字段是否已存在 - columns, err := db.Migrator().ColumnTypes(&PostImage{}) - if err != nil { - return fmt.Errorf("failed to check column existence: %w", err) - } - - hasPreviewURL := false - hasPreviewURLLarge := false - for _, col := range columns { - if col.Name() == "preview_url" { - hasPreviewURL = true - } - if col.Name() == "preview_url_large" { - hasPreviewURLLarge = true - } - } - - if hasPreviewURL && hasPreviewURLLarge { - zap.L().Info("Columns already exist, skipping migration") - return nil - } - - // 添加字段 - var errs []error - if !hasPreviewURL { - zap.L().Info("Adding preview_url column...") - if err := db.Exec("ALTER TABLE post_images ADD COLUMN preview_url TEXT").Error; err != nil { - errs = append(errs, fmt.Errorf("failed to add preview_url column: %w", err)) - } - } - - if !hasPreviewURLLarge { - zap.L().Info("Adding preview_url_large column...") - if err := db.Exec("ALTER TABLE post_images ADD COLUMN preview_url_large TEXT").Error; err != nil { - errs = append(errs, fmt.Errorf("failed to add preview_url_large column: %w", err)) - } - } - - if len(errs) > 0 { - return errors.Join(errs...) - } - - zap.L().Info("Migration completed successfully") - return nil -} - -// 注意:此脚本仅用于添加数据库字段 -// 预览图的生成由后端的 upload_service 自动处理 -// 现有图片需要重新上传才能生成预览图,或者编写额外的后台任务来生成 diff --git a/internal/model/init.go b/internal/model/init.go index da14b27..2a4c9c5 100644 --- a/internal/model/init.go +++ b/internal/model/init.go @@ -133,6 +133,11 @@ func autoMigrate(db *gorm.DB) error { &SensitiveWord{}, &AuditLog{}, + // 日志相关 + &OperationLog{}, // 操作日志 + &LoginLog{}, // 登录日志 + &DataChangeLog{}, // 数据变更日志 + // 群组相关 &Group{}, &GroupMember{},