From 5fd2485d548daa0b54dc65f1bef782193348a580 Mon Sep 17 00:00:00 2001 From: Mike Cohen Date: Fri, 20 Mar 2026 11:11:43 +1000 Subject: [PATCH] Allow the cache to be purged. --- api.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/api.go b/api.go index c3ef8bc..7de8043 100644 --- a/api.go +++ b/api.go @@ -20,7 +20,7 @@ type DiskLRU struct { encoder Encoder set_stm, get_stm, get_update_expiry_stm, - peek_stm, delete_stm, + peek_stm, delete_stm, purge_stm, clear_stm, cleanup_expires_stm, cleanup_lru_stm *sql.Stmt @@ -43,6 +43,10 @@ func (self *DiskLRU) houseKeeping(ctx context.Context) { return } + if self.opts.HouseKeepPeriodSec == 0 { + self.opts.HouseKeepPeriodSec = 60 + } + for { select { case <-ctx.Done(): @@ -130,6 +134,11 @@ func (self *DiskLRU) Get(key string) (interface{}, error) { return self.encoder.Decode(buf) } +func (self *DiskLRU) Purge() error { + _, err := self.purge_stm.Exec() + return err +} + type CacheItem struct { Key string Value interface{} @@ -251,6 +260,12 @@ func NewDiskLRU( return nil, err } + self.purge_stm, err = handle.Prepare( + `DELETE FROM cache`) + if err != nil { + return nil, err + } + self.clear_stm, err = handle.Prepare(`DELETE FROM cache`) if err != nil { return nil, err