diff --git a/cayley.go b/cayley.go index b6017ce..a2a54dd 100644 --- a/cayley.go +++ b/cayley.go @@ -35,7 +35,7 @@ import ( _ "github.com/google/cayley/graph/mongo" ) -var tripleFile = flag.String("triples", "", "Triple File to load before going to REPL.") +var tripleFile = flag.String("triples", "", "Triple file to load for database init.") var cpuprofile = flag.String("prof", "", "Output profiling file.") var queryLanguage = flag.String("query_lang", "gremlin", "Use this parser as the query language.") var configFile = flag.String("config", "", "Path to an explicit configuration file.") @@ -100,35 +100,54 @@ func main() { fmt.Println("Cayley snapshot") } os.Exit(0) + case "init": err = db.Init(cfg, *tripleFile) + case "load": ts, err = db.Open(cfg) if err != nil { break } - err = db.Load(ts, cfg, *tripleFile) + err = db.Load(ts, cfg, cfg.DatabasePath) if err != nil { break } + ts.Close() + case "repl": ts, err = db.Open(cfg) if err != nil { break } - err = db.Repl(ts, *queryLanguage, cfg) - if err != nil { - break + if !graph.IsPersistent(cfg.DatabaseType) { + err = db.Load(ts, cfg, cfg.DatabasePath) + if err != nil { + break + } } + + err = db.Repl(ts, *queryLanguage, cfg) + ts.Close() + case "http": ts, err = db.Open(cfg) if err != nil { break } + if !graph.IsPersistent(cfg.DatabaseType) { + err = db.Load(ts, cfg, cfg.DatabasePath) + if err != nil { + break + } + } + http.Serve(ts, cfg) + ts.Close() + default: fmt.Println("No command", cmd) flag.Usage() diff --git a/cayley_test.go b/cayley_test.go index 55ef3c2..e59ec53 100644 --- a/cayley_test.go +++ b/cayley_test.go @@ -308,6 +308,13 @@ func prepare(t testing.TB) { if err != nil { t.Fatalf("Failed to open %q: %v", cfg.DatabasePath, err) } + + if !graph.IsPersistent(cfg.DatabaseType) { + err = db.Load(ts, cfg, cfg.DatabasePath) + if err != nil { + t.Fatalf("Failed to load %q: %v", cfg.DatabasePath, err) + } + } }) } diff --git a/db/open.go b/db/open.go index cef8127..bf1f2c7 100644 --- a/db/open.go +++ b/db/open.go @@ -28,12 +28,5 @@ func Open(cfg *config.Config) (graph.TripleStore, error) { return nil, err } - if !graph.IsPersistent(cfg.DatabaseType) { - err = Load(ts, cfg, cfg.DatabasePath) - if err != nil { - return nil, err - } - } - return ts, nil }