refactor(store): unify journal configuration storage

Keep the exported JournalConfiguration type as the single in-memory representation.

Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
Virgil 2026-04-04 14:19:28 +00:00
parent 5587e301bd
commit c2c5cecd7d
3 changed files with 8 additions and 28 deletions

View file

@ -212,10 +212,10 @@ func (storeInstance *Store) queryJournalFromFlux(flux string) (string, []any, er
}
func (storeInstance *Store) journalBucket() string {
if storeInstance.journalConfiguration.bucketName == "" {
if storeInstance.journalConfiguration.BucketName == "" {
return defaultJournalBucket
}
return storeInstance.journalConfiguration.bucketName
return storeInstance.journalConfiguration.BucketName
}
func ensureJournalSchema(database schemaDatabase) error {

View file

@ -83,18 +83,6 @@ func (journalConfig JournalConfiguration) isConfigured() bool {
journalConfig.BucketName != ""
}
type journalConfiguration struct {
endpointURL string
organisation string
bucketName string
}
func (journalConfig journalConfiguration) isConfigured() bool {
return journalConfig.endpointURL != "" &&
journalConfig.organisation != "" &&
journalConfig.bucketName != ""
}
// Usage example: `storeInstance, err := store.NewConfigured(store.StoreConfig{DatabasePath: ":memory:", Journal: store.JournalConfiguration{EndpointURL: "http://127.0.0.1:8086", Organisation: "core", BucketName: "events"}, PurgeInterval: 30 * time.Second})`
// Store keeps grouped key-value entries in SQLite and can also write completed
// work summaries to the journal table.
@ -105,7 +93,7 @@ type Store struct {
cancelPurge context.CancelFunc
purgeWaitGroup sync.WaitGroup
purgeInterval time.Duration // interval between background purge cycles
journalConfiguration journalConfiguration
journalConfiguration JournalConfiguration
closeLock sync.Mutex
closed bool
@ -157,11 +145,7 @@ func (storeInstance *Store) JournalConfiguration() JournalConfiguration {
if storeInstance == nil {
return JournalConfiguration{}
}
return JournalConfiguration{
EndpointURL: storeInstance.journalConfiguration.endpointURL,
Organisation: storeInstance.journalConfiguration.organisation,
BucketName: storeInstance.journalConfiguration.bucketName,
}
return storeInstance.journalConfiguration
}
// Usage example: `if storeInstance.JournalConfigured() { fmt.Println("journal is fully configured") }`
@ -232,11 +216,7 @@ func openConfiguredStore(operation string, storeConfig StoreConfig) (*Store, err
}
if storeConfig.Journal != (JournalConfiguration{}) {
storeInstance.journalConfiguration = journalConfiguration{
endpointURL: storeConfig.Journal.EndpointURL,
organisation: storeConfig.Journal.Organisation,
bucketName: storeConfig.Journal.BucketName,
}
storeInstance.journalConfiguration = storeConfig.Journal
}
if storeConfig.PurgeInterval > 0 {
storeInstance.purgeInterval = storeConfig.PurgeInterval

View file

@ -103,9 +103,9 @@ func TestStore_New_Good_WithJournalOption(t *testing.T) {
require.NoError(t, err)
defer storeInstance.Close()
assert.Equal(t, "events", storeInstance.journalConfiguration.bucketName)
assert.Equal(t, "core", storeInstance.journalConfiguration.organisation)
assert.Equal(t, "http://127.0.0.1:8086", storeInstance.journalConfiguration.endpointURL)
assert.Equal(t, "events", storeInstance.journalConfiguration.BucketName)
assert.Equal(t, "core", storeInstance.journalConfiguration.Organisation)
assert.Equal(t, "http://127.0.0.1:8086", storeInstance.journalConfiguration.EndpointURL)
}
func TestStore_JournalConfiguration_Good(t *testing.T) {