(ctx context.Context, event *tree.NodeChangeEvent)
| 105 | } |
| 106 | |
| 107 | func (s *CacheHandler) cacheEvent(ctx context.Context, event *tree.NodeChangeEvent) { |
| 108 | log.Logger(ctx).Debug("Event received", zap.Any("e", event)) |
| 109 | var add, remove *tree.Node |
| 110 | switch event.Type { |
| 111 | case tree.NodeChangeEvent_CREATE: |
| 112 | add = event.Target |
| 113 | case tree.NodeChangeEvent_DELETE: |
| 114 | remove = event.Source |
| 115 | case tree.NodeChangeEvent_UPDATE_PATH: |
| 116 | add = event.Target |
| 117 | remove = event.Source |
| 118 | } |
| 119 | if add != nil { |
| 120 | log.Logger(ctx).Debug("Clearing cache key " + add.GetPath()) |
| 121 | _ = s.getCtxCache(ctx).Delete(cacheNodePrefix + add.GetPath()) |
| 122 | dir := path.Dir(add.GetPath()) |
| 123 | if diff, ok := s.cacheDiff(ctx, dir); ok { |
| 124 | if _, o := diff.Adds[add.GetPath()]; o { |
| 125 | log.Logger(ctx).Debug("Clearing Add key from diff " + add.GetPath()) |
| 126 | delete(diff.Adds, add.GetPath()) |
| 127 | if len(diff.Adds)+len(diff.Deletes) == 0 { |
| 128 | _ = s.getCtxCache(ctx).Delete(cacheDiffPrefix + dir) |
| 129 | } else { |
| 130 | diffData, _ := json.Marshal(diff) |
| 131 | _ = s.getCtxCache(ctx).Set(cacheDiffPrefix+dir, diffData) |
| 132 | } |
| 133 | } |
| 134 | } |
| 135 | } |
| 136 | if remove != nil { |
| 137 | dir := path.Dir(remove.GetPath()) |
| 138 | if diff, ok := s.cacheDiff(ctx, dir); ok { |
| 139 | if _, o := diff.Deletes[remove.GetPath()]; o { |
| 140 | log.Logger(ctx).Debug("Clearing Delete key from diff " + remove.GetPath()) |
| 141 | delete(diff.Deletes, remove.GetPath()) |
| 142 | if len(diff.Adds)+len(diff.Deletes) == 0 { |
| 143 | _ = s.getCtxCache(ctx).Delete(cacheDiffPrefix + dir) |
| 144 | } else { |
| 145 | diffData, _ := json.Marshal(diff) |
| 146 | _ = s.getCtxCache(ctx).Set(cacheDiffPrefix+dir, diffData) |
| 147 | } |
| 148 | } |
| 149 | } |
| 150 | } |
| 151 | } |
| 152 | |
| 153 | func (s *CacheHandler) cacheAdd(ctx context.Context, node *tree.Node) { |
| 154 | d, _ := json.Marshal(node) |
no test coverage detected