fix(canvas): 素材库 - 拒绝空字节数并提供历史数据修复工具

This commit is contained in:
ddCat
2026-09-14 23:26:32 +08:00
parent 8714c32869
commit f81c05abdb
7 changed files with 404 additions and 1 deletions

View File

@@ -7,6 +7,7 @@ import (
"os"
"strings"
"infinite-canvas/backend/internal/canvas"
"infinite-canvas/backend/internal/database"
)
@@ -15,6 +16,14 @@ func main() {
if len(os.Args) > 1 {
command = strings.ToLower(strings.TrimSpace(os.Args[1]))
}
apply := false
if command == "repair-asset-bytes" {
if len(os.Args) == 3 && os.Args[2] == "--apply" {
apply = true
} else if len(os.Args) > 2 {
log.Fatal("用法:migrate-schema repair-asset-bytes [--apply];默认只检查")
}
}
db, err := database.Open(database.Config{
Driver: env("CANVAS_DATABASE_DRIVER", "sqlite"),
DSN: os.Getenv("DATABASE_URL"),
@@ -33,6 +42,20 @@ func main() {
defer sqlDB.Close()
switch command {
case "repair-asset-bytes":
report, repairErr := canvas.RepairAssetBytes(db, apply)
encoded, err := json.Marshal(report)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(encoded))
if repairErr != nil {
log.Fatal(repairErr)
}
if len(report.Unresolved) > 0 {
log.Fatal("存在未修复素材,请按报告核查;未删除或填零")
}
return
case "up":
if err := database.MigrateSchema(db); err != nil {
log.Fatal(err)
@@ -43,7 +66,7 @@ func main() {
log.Fatal(err)
}
default:
log.Fatalf("未知命令 %q;可用命令:up、status、verify", command)
log.Fatalf("未知命令 %q;可用命令:up、status、verify、repair-asset-bytes", command)
}
status, err := database.ReadSchemaStatus(db)
if err != nil {