From ee984818d23cb09218ac44c9c410e317d3582f9b Mon Sep 17 00:00:00 2001 From: Virgil Date: Fri, 3 Apr 2026 08:45:44 +0000 Subject: [PATCH] feat(store): expose active configuration Co-Authored-By: Virgil --- store.go | 14 ++++++++++++++ store_test.go | 24 ++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/store.go b/store.go index 89983f4..93b1d35 100644 --- a/store.go +++ b/store.go @@ -61,6 +61,7 @@ type JournalConfiguration struct { // Usage example: `storeInstance, err := store.New(":memory:")` type Store struct { database *sql.DB + databasePath string purgeContext context.Context cancelPurge context.CancelFunc purgeWaitGroup sync.WaitGroup @@ -121,6 +122,18 @@ func (storeInstance *Store) JournalConfiguration() JournalConfiguration { } } +// Usage example: `config := storeInstance.Config(); fmt.Println(config.DatabasePath, config.PurgeInterval)` +func (storeInstance *Store) Config() StoreConfig { + if storeInstance == nil { + return StoreConfig{} + } + return StoreConfig{ + DatabasePath: storeInstance.databasePath, + Journal: storeInstance.JournalConfiguration(), + PurgeInterval: storeInstance.purgeInterval, + } +} + // Usage example: `storeInstance, err := store.New(":memory:", store.WithPurgeInterval(20*time.Millisecond))` func WithPurgeInterval(interval time.Duration) StoreOption { return func(config *StoreConfig) { @@ -199,6 +212,7 @@ func openStore(operation, databasePath string) (*Store, error) { purgeContext, cancel := context.WithCancel(context.Background()) return &Store{ database: sqliteDatabase, + databasePath: databasePath, purgeContext: purgeContext, cancelPurge: cancel, purgeInterval: 60 * time.Second, diff --git a/store_test.go b/store_test.go index 18f0e4d..18152d4 100644 --- a/store_test.go +++ b/store_test.go @@ -121,6 +121,30 @@ func TestStore_JournalConfiguration_Good(t *testing.T) { }, config) } +func TestStore_Config_Good(t *testing.T) { + storeInstance, err := NewConfigured(StoreConfig{ + DatabasePath: ":memory:", + Journal: JournalConfiguration{ + EndpointURL: "http://127.0.0.1:8086", + Organisation: "core", + BucketName: "events", + }, + PurgeInterval: 20 * time.Millisecond, + }) + require.NoError(t, err) + defer storeInstance.Close() + + assert.Equal(t, StoreConfig{ + DatabasePath: ":memory:", + Journal: JournalConfiguration{ + EndpointURL: "http://127.0.0.1:8086", + Organisation: "core", + BucketName: "events", + }, + PurgeInterval: 20 * time.Millisecond, + }, storeInstance.Config()) +} + func TestStore_NewConfigured_Good(t *testing.T) { storeInstance, err := NewConfigured(StoreConfig{ DatabasePath: ":memory:", -- 2.45.3