cleanupDatabaseData 清理数据库中的相关数据
(eid int64, fileID int64)
| 82 | |
| 83 | // cleanupDatabaseData 清理数据库中的相关数据 |
| 84 | func (s *CleanupService) cleanupDatabaseData(eid int64, fileID int64) error { |
| 85 | // 开启事务 |
| 86 | tx := s.db.Begin() |
| 87 | defer func() { |
| 88 | if r := recover(); r != nil { |
| 89 | tx.Rollback() |
| 90 | } |
| 91 | }() |
| 92 | |
| 93 | // 删除分块关联关系 |
| 94 | err := tx.Where("eid = ? AND file_id = ?", eid, fileID).Delete(&model.ChunkRelation{}).Error |
| 95 | if err != nil { |
| 96 | tx.Rollback() |
| 97 | return fmt.Errorf("删除分块关联关系失败: %v", err) |
| 98 | } |
| 99 | |
| 100 | // 删除检索块 |
| 101 | err = tx.Where("eid = ? AND file_id = ?", eid, fileID).Delete(&model.RetrievalChunk{}).Error |
| 102 | if err != nil { |
| 103 | tx.Rollback() |
| 104 | return fmt.Errorf("删除检索块失败: %v", err) |
| 105 | } |
| 106 | |
| 107 | // 删除文档分块 |
| 108 | err = tx.Where("eid = ? AND file_id = ?", eid, fileID).Delete(&model.DocumentChunk{}).Error |
| 109 | if err != nil { |
| 110 | tx.Rollback() |
| 111 | return fmt.Errorf("删除文档分块失败: %v", err) |
| 112 | } |
| 113 | |
| 114 | // 删除操作日志 |
| 115 | err = tx.Where("eid = ? AND file_id = ?", eid, fileID).Delete(&model.ChunkOperationLog{}).Error |
| 116 | if err != nil { |
| 117 | tx.Rollback() |
| 118 | return fmt.Errorf("删除操作日志失败: %v", err) |
| 119 | } |
| 120 | |
| 121 | // 删除文件内容 |
| 122 | err = tx.Where("eid = ? AND file_id = ?", eid, fileID).Delete(&model.FileBody{}).Error |
| 123 | if err != nil { |
| 124 | tx.Rollback() |
| 125 | return fmt.Errorf("删除文件内容失败: %v", err) |
| 126 | } |
| 127 | |
| 128 | err = tx.Where("file_id = ?", fileID).Delete(&model.FileBodyVersion{}).Error |
| 129 | if err != nil { |
| 130 | tx.Rollback() |
| 131 | return fmt.Errorf("删除文件版本记录失败: %v", err) |
| 132 | } |
| 133 | |
| 134 | err = tx.Where("eid = ? AND file_id = ?", eid, fileID).Delete(&model.EntityChunkRelation{}).Error |
| 135 | if err != nil { |
| 136 | tx.Rollback() |
| 137 | return fmt.Errorf("删除实体关联关系失败: %v", err) |
| 138 | } |
| 139 | |
| 140 | // 提交事务 |
| 141 | return tx.Commit().Error |
no test coverage detected