Merge remote-tracking branch 'upstream/main'
Some checks failed
Publish container images / Quality checks (push) Has been cancelled
Publish container images / Resolve build version (push) Has been cancelled
Publish container images / Build open-ai-canvas-backend (amd64) (push) Has been cancelled
Publish container images / Build open-ai-canvas-backend (arm64) (push) Has been cancelled
Publish container images / Build open-ai-canvas-web (multi) (push) Has been cancelled
Publish container images / Build open-ai-canvas-yingce-agent (multi) (push) Has been cancelled
Publish container images / Publish open-ai-canvas-backend manifest (push) Has been cancelled
Publish container images / Publish open-ai-canvas-web manifest (push) Has been cancelled
Publish container images / Publish open-ai-canvas-yingce-agent manifest (push) Has been cancelled
Publish container images / Publish release assets (push) Has been cancelled
Some checks failed
Publish container images / Quality checks (push) Has been cancelled
Publish container images / Resolve build version (push) Has been cancelled
Publish container images / Build open-ai-canvas-backend (amd64) (push) Has been cancelled
Publish container images / Build open-ai-canvas-backend (arm64) (push) Has been cancelled
Publish container images / Build open-ai-canvas-web (multi) (push) Has been cancelled
Publish container images / Build open-ai-canvas-yingce-agent (multi) (push) Has been cancelled
Publish container images / Publish open-ai-canvas-backend manifest (push) Has been cancelled
Publish container images / Publish open-ai-canvas-web manifest (push) Has been cancelled
Publish container images / Publish open-ai-canvas-yingce-agent manifest (push) Has been cancelled
Publish container images / Publish release assets (push) Has been cancelled
This commit is contained in:
@@ -19,13 +19,16 @@ func main() {
|
||||
command = strings.ToLower(strings.TrimSpace(os.Args[1]))
|
||||
}
|
||||
apply := false
|
||||
if command == "repair-asset-bytes" {
|
||||
if command == "repair-asset-bytes" || command == "repair-canvas-resources" {
|
||||
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];默认只检查")
|
||||
log.Fatalf("用法:migrate-schema %s [--apply];默认只检查", command)
|
||||
}
|
||||
}
|
||||
if command == "repair-canvas-resources" && strings.TrimSpace(os.Getenv("CANVAS_BACKEND_DATA_DIR")) == "" && strings.TrimSpace(os.Getenv("DATABASE_URL")) == "" {
|
||||
log.Fatal("资源修复必须显式设置 CANVAS_BACKEND_DATA_DIR 或 DATABASE_URL;拒绝使用默认数据库")
|
||||
}
|
||||
db, err := database.Open(database.Config{
|
||||
Driver: env("CANVAS_DATABASE_DRIVER", "sqlite"),
|
||||
DSN: os.Getenv("DATABASE_URL"),
|
||||
@@ -44,6 +47,23 @@ func main() {
|
||||
defer sqlDB.Close()
|
||||
|
||||
switch command {
|
||||
case "repair-canvas-resources":
|
||||
if err := database.RequireSchemaVersion(db); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
report, repairErr := canvas.RepairCanvasResources(db, apply)
|
||||
encoded, err := json.Marshal(report)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
fmt.Println(string(encoded))
|
||||
if repairErr != nil {
|
||||
log.Fatal(repairErr)
|
||||
}
|
||||
if report.Unresolved > 0 {
|
||||
log.Fatal("存在需人工处理的画布,请按报告恢复历史或重新上传;未删除主媒体")
|
||||
}
|
||||
return
|
||||
case "repair-asset-bytes":
|
||||
report, repairErr := canvas.RepairAssetBytes(db, apply)
|
||||
encoded, err := json.Marshal(report)
|
||||
@@ -68,7 +88,7 @@ func main() {
|
||||
log.Fatal(err)
|
||||
}
|
||||
default:
|
||||
log.Fatalf("未知命令 %q;可用命令:up、status、verify、repair-asset-bytes", command)
|
||||
log.Fatalf("未知命令 %q;可用命令:up、status、verify、repair-asset-bytes、repair-canvas-resources", command)
|
||||
}
|
||||
status, err := database.ReadSchemaStatus(db)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user