RevokeDataSource 撤销数据源权限。 删除所有派生自该数据源的记忆。
(ctx context.Context, sourceID string)
| 219 | // RevokeDataSource 撤销数据源权限。 |
| 220 | // 删除所有派生自该数据源的记忆。 |
| 221 | func (lm *LineageManager) RevokeDataSource(ctx context.Context, sourceID string) ([]string, error) { |
| 222 | // 找到所有来自该数据源的记忆 |
| 223 | affectedMemories := lm.graph.GetMemoriesBySource(sourceID) |
| 224 | |
| 225 | if len(affectedMemories) == 0 { |
| 226 | return nil, nil |
| 227 | } |
| 228 | |
| 229 | // 删除这些记忆及其派生 |
| 230 | var deletedIDs []string |
| 231 | for _, memID := range affectedMemories { |
| 232 | deleted, err := lm.DeleteMemoryWithLineage(ctx, memID, true) |
| 233 | if err != nil { |
| 234 | // TODO: handle error |
| 235 | return deletedIDs, fmt.Errorf("delete memory %s: %w", memID, err) |
| 236 | } |
| 237 | deletedIDs = append(deletedIDs, deleted...) |
| 238 | } |
| 239 | |
| 240 | return deletedIDs, nil |
| 241 | } |
| 242 | |
| 243 | // RegenerateFromSource 从剩余有效数据源重新生成记忆。 |
| 244 | // 这是一个更精确的删除策略,避免过度删除。 |