From 2a28b5a71b6c74a8380943871b9e3949577f69ae Mon Sep 17 00:00:00 2001 From: Virgil Date: Sat, 4 Apr 2026 08:32:55 +0000 Subject: [PATCH] feat(store): add closed-state accessor Co-Authored-By: Virgil --- store.go | 12 ++++++++++++ store_test.go | 10 ++++++++++ 2 files changed, 22 insertions(+) diff --git a/store.go b/store.go index 7e5b1fe..912f549 100644 --- a/store.go +++ b/store.go @@ -147,6 +147,18 @@ func (storeInstance *Store) DatabasePath() string { return storeInstance.databasePath } +// Usage example: `if storeInstance.IsClosed() { return }` +func (storeInstance *Store) IsClosed() bool { + if storeInstance == nil { + return true + } + + storeInstance.closeLock.Lock() + closed := storeInstance.closed + storeInstance.closeLock.Unlock() + return closed +} + // Usage example: `storeInstance, err := store.New(":memory:", store.WithPurgeInterval(20*time.Millisecond))` func WithPurgeInterval(interval time.Duration) StoreOption { return func(config *StoreConfig) { diff --git a/store_test.go b/store_test.go index ada922f..2a02623 100644 --- a/store_test.go +++ b/store_test.go @@ -155,6 +155,16 @@ func TestStore_DatabasePath_Good(t *testing.T) { assert.Equal(t, databasePath, storeInstance.DatabasePath()) } +func TestStore_IsClosed_Good(t *testing.T) { + storeInstance, err := New(":memory:") + require.NoError(t, err) + + assert.False(t, storeInstance.IsClosed()) + require.NoError(t, storeInstance.Close()) + assert.True(t, storeInstance.IsClosed()) + assert.True(t, (*Store)(nil).IsClosed()) +} + func TestStore_NewConfigured_Good(t *testing.T) { storeInstance, err := NewConfigured(StoreConfig{ DatabasePath: ":memory:",