DenoDDeno
Powered by
HexagonH
Deno•3y 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)
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],
}
{
  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],
}
{
  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
Deno banner
DenoJoin
Chat about Deno, a modern runtime for JavaScript and TypeScript.
20,934Members
Resources
Recent Announcements

Similar Threads

Was this page helpful?

Similar Threads

KV multimap / unordered keys search
foobarFfoobar / help
2y ago
Prefix Kv keys with a base part
martpetMmartpet / help
3y ago
KV watch prefix?
Michael FrancisMMichael Francis / help
2y ago