refactor(store): clarify journal configuration and workspace errors
Add a declarative journal configuration check and wrap workspace database errors with package context. Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
parent
3742da144e
commit
cc8bebb8e0
3 changed files with 28 additions and 5 deletions
8
store.go
8
store.go
|
|
@ -127,6 +127,14 @@ func (storeInstance *Store) JournalConfiguration() JournalConfiguration {
|
|||
}
|
||||
}
|
||||
|
||||
// Usage example: `if storeInstance.JournalConfigured() { fmt.Println("journal is enabled") }`
|
||||
func (storeInstance *Store) JournalConfigured() bool {
|
||||
if storeInstance == nil {
|
||||
return false
|
||||
}
|
||||
return storeInstance.journalConfiguration != (journalConfiguration{})
|
||||
}
|
||||
|
||||
// Usage example: `config := storeInstance.Config(); fmt.Println(config.DatabasePath, config.PurgeInterval)`
|
||||
func (storeInstance *Store) Config() StoreConfig {
|
||||
if storeInstance == nil {
|
||||
|
|
|
|||
|
|
@ -121,6 +121,21 @@ func TestStore_JournalConfiguration_Good(t *testing.T) {
|
|||
}, config)
|
||||
}
|
||||
|
||||
func TestStore_JournalConfigured_Good(t *testing.T) {
|
||||
storeInstance, err := New(":memory:", WithJournal("http://127.0.0.1:8086", "core", "events"))
|
||||
require.NoError(t, err)
|
||||
defer storeInstance.Close()
|
||||
|
||||
assert.True(t, storeInstance.JournalConfigured())
|
||||
assert.False(t, (*Store)(nil).JournalConfigured())
|
||||
|
||||
unconfiguredStore, err := New(":memory:")
|
||||
require.NoError(t, err)
|
||||
defer unconfiguredStore.Close()
|
||||
|
||||
assert.False(t, unconfiguredStore.JournalConfigured())
|
||||
}
|
||||
|
||||
func TestStore_Config_Good(t *testing.T) {
|
||||
storeInstance, err := NewConfigured(StoreConfig{
|
||||
DatabasePath: ":memory:",
|
||||
|
|
|
|||
10
workspace.go
10
workspace.go
|
|
@ -475,24 +475,24 @@ func (storeInstance *Store) commitWorkspaceAggregate(workspaceName string, field
|
|||
func openWorkspaceDatabase(databasePath string) (*sql.DB, error) {
|
||||
workspaceDatabase, err := sql.Open("sqlite", databasePath)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, core.E("store.openWorkspaceDatabase", "open workspace database", err)
|
||||
}
|
||||
workspaceDatabase.SetMaxOpenConns(1)
|
||||
if _, err := workspaceDatabase.Exec("PRAGMA journal_mode=WAL"); err != nil {
|
||||
workspaceDatabase.Close()
|
||||
return nil, err
|
||||
return nil, core.E("store.openWorkspaceDatabase", "set WAL journal mode", err)
|
||||
}
|
||||
if _, err := workspaceDatabase.Exec("PRAGMA busy_timeout=5000"); err != nil {
|
||||
workspaceDatabase.Close()
|
||||
return nil, err
|
||||
return nil, core.E("store.openWorkspaceDatabase", "set busy timeout", err)
|
||||
}
|
||||
if _, err := workspaceDatabase.Exec(createWorkspaceEntriesTableSQL); err != nil {
|
||||
workspaceDatabase.Close()
|
||||
return nil, err
|
||||
return nil, core.E("store.openWorkspaceDatabase", "create workspace entries table", err)
|
||||
}
|
||||
if _, err := workspaceDatabase.Exec(createWorkspaceEntriesViewSQL); err != nil {
|
||||
workspaceDatabase.Close()
|
||||
return nil, err
|
||||
return nil, core.E("store.openWorkspaceDatabase", "create workspace entries view", err)
|
||||
}
|
||||
return workspaceDatabase, nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue