HexagonH
Deno3y ago
5 replies
Hexagon

Purging Kv keys

I have a logger which write logs to a kv store with dual keys, something like

kv.set(["logs_by_time", Date.now()], logObject)
kv.set(["logs_by_process", "current-process-id", Date.now()],logObject)


So far all is well.. But a problem pups up when i want to purge all logs before a specific start time, i could loop through all processes, deleting using this selector:

{
  prefix: ["logs_by_process", currentProcessId],
  end: ["logs_by_process", currentProcessId, startTime],
}


But as end-users can add/delete processes over time, i cannot be sure i known which processes exist in history, so i would need to use a wildcard, like:

{
  prefix: ["logs_by_process", "*"],
  end: ["logs_by_process", "*", startTime],
}


Any idéas on how to make this happen efficiently, without looping over all possible keys?

Actual, non-functioning code:

https://github.com/Hexagon/pup/blob/afd8d3f3b292c8e317d21dea9c7d0509f1e40d59/lib/core/logger.ts#L236
Was this page helpful?