diff --git a/lmdb.go b/lmdb.go new file mode 100644 index 0000000..40f4906 --- /dev/null +++ b/lmdb.go @@ -0,0 +1,43 @@ +//go:build linux && !riscv64 && !arm64 + +package main + +import ( + "os" + "path/filepath" + + "fiatjaf.com/nostr/eventstore/lmdb" + "fiatjaf.com/nostr/eventstore/nullstore" + "fiatjaf.com/nostr/sdk" + "fiatjaf.com/nostr/sdk/hints/lmdbh" + lmdbkv "fiatjaf.com/nostr/sdk/kvstore/lmdb" + "github.com/urfave/cli/v3" +) + +func setupLocalDatabases(c *cli.Command, sys *sdk.System) { + configPath := c.String("config-path") + if configPath != "" { + hintsPath := filepath.Join(configPath, "outbox/hints") + os.MkdirAll(hintsPath, 0755) + _, err := lmdbh.NewLMDBHints(hintsPath) + if err != nil { + log("failed to create lmdb hints db at '%s': %s\n", hintsPath, err) + } + + eventsPath := filepath.Join(configPath, "events") + os.MkdirAll(eventsPath, 0755) + sys.Store = &lmdb.LMDBBackend{Path: eventsPath} + if err := sys.Store.Init(); err != nil { + log("failed to create boltdb events db at '%s': %s\n", eventsPath, err) + sys.Store = &nullstore.NullStore{} + } + + kvPath := filepath.Join(configPath, "kvstore") + os.MkdirAll(kvPath, 0755) + if kv, err := lmdbkv.NewStore(kvPath); err != nil { + log("failed to create boltdb kvstore db at '%s': %s\n", kvPath, err) + } else { + sys.KVStore = kv + } + } +} diff --git a/main.go b/main.go index b20a338..c990217 100644 --- a/main.go +++ b/main.go @@ -8,11 +8,7 @@ import ( "path/filepath" "fiatjaf.com/nostr" - "fiatjaf.com/nostr/eventstore/lmdb" - "fiatjaf.com/nostr/eventstore/nullstore" "fiatjaf.com/nostr/sdk" - "fiatjaf.com/nostr/sdk/hints/lmdbh" - lmdbkv "fiatjaf.com/nostr/sdk/kvstore/lmdb" "github.com/fatih/color" "github.com/urfave/cli/v3" ) @@ -103,31 +99,7 @@ var app = &cli.Command{ Before: func(ctx context.Context, c *cli.Command) (context.Context, error) { sys = sdk.NewSystem() - configPath := c.String("config-path") - if configPath != "" { - hintsPath := filepath.Join(configPath, "outbox/hints") - os.MkdirAll(hintsPath, 0755) - _, err := lmdbh.NewLMDBHints(hintsPath) - if err != nil { - log("failed to create lmdb hints db at '%s': %s\n", hintsPath, err) - } - - eventsPath := filepath.Join(configPath, "events") - os.MkdirAll(eventsPath, 0755) - sys.Store = &lmdb.LMDBBackend{Path: eventsPath} - if err := sys.Store.Init(); err != nil { - log("failed to create boltdb events db at '%s': %s\n", eventsPath, err) - sys.Store = &nullstore.NullStore{} - } - - kvPath := filepath.Join(configPath, "kvstore") - os.MkdirAll(kvPath, 0755) - if kv, err := lmdbkv.NewStore(kvPath); err != nil { - log("failed to create boltdb kvstore db at '%s': %s\n", kvPath, err) - } else { - sys.KVStore = kv - } - } + setupLocalDatabases(c, sys) sys.Pool = nostr.NewPool(nostr.PoolOptions{ AuthorKindQueryMiddleware: sys.TrackQueryAttempts, diff --git a/non_lmdb.go b/non_lmdb.go new file mode 100644 index 0000000..82423f9 --- /dev/null +++ b/non_lmdb.go @@ -0,0 +1,11 @@ +//go:build !linux || riscv64 || arm64 + +package main + +import ( + "fiatjaf.com/nostr/sdk" + "github.com/urfave/cli/v3" +) + +func setupLocalDatabases(c *cli.Command, sys *sdk.System) { +}