refactor(*): 平台架构 - 拆分后端领域模块与画布前端组件并补充测试

This commit is contained in:
ddcat666
2026-09-30 10:01:39 +08:00
parent e0a2697c60
commit 7f5d87ef1a
186 changed files with 33727 additions and 29905 deletions

View File

@@ -418,8 +418,23 @@ func (r *Repository) DeleteAssetsAndResources(userID string, assetIDs []string,
if len(assetIDs) == 0 || len(ownedAssets) != len(assetIDs) {
return gorm.ErrRecordNotFound
}
// Explicit deletion and archive expiry must never invalidate a snapshot.
if err := New(tx).RequireNoCanvasHistoryReferences(resourceIDs); err != nil {
if deleteReferencedResources {
// 彻底删除:移除被删资源的画布历史索引,让删除 worker 可以释放物理对象;
// 历史快照正文保留,恢复该版本时由画布断链修复处理失效媒体。
if len(resourceIDs) > 0 {
// 与历史快照写入串行化,避免清除索引后又插入外键引用。
if r.Dialect() == "postgres" {
var resources []model.Resource
if err := tx.Select("id").Where("id IN ?", resourceIDs).Order("id").Clauses(clause.Locking{Strength: "UPDATE"}).Find(&resources).Error; err != nil {
return err
}
}
if err := tx.Where("resource_id IN ?", resourceIDs).Delete(&model.CanvasSnapshotResource{}).Error; err != nil {
return err
}
}
} else if err := New(tx).RequireNoCanvasHistoryReferences(resourceIDs); err != nil {
// 受保护删除不得让任何画布历史快照失效。
return err
}
versionIDs := tx.Model(&model.AssetVersion{}).Select("id").Where("asset_id IN ?", assetIDs)