From 088e73a163f2024ff76a91d7ab2f92c57eda4533 Mon Sep 17 00:00:00 2001 From: kortschak Date: Fri, 8 Aug 2014 10:32:58 +0930 Subject: [PATCH] Merge {init,open,load}.go into db.go The functions are too small to justify a single file each. The repl file is left out as semantically unrelated. --- db/db.go | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ db/init.go | 33 -------------------------- db/load.go | 56 ------------------------------------------- db/open.go | 32 ------------------------- 4 files changed, 80 insertions(+), 121 deletions(-) create mode 100644 db/db.go delete mode 100644 db/init.go delete mode 100644 db/load.go delete mode 100644 db/open.go diff --git a/db/db.go b/db/db.go new file mode 100644 index 0000000..8ea30db --- /dev/null +++ b/db/db.go @@ -0,0 +1,80 @@ +// Copyright 2014 The Cayley Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package db + +import ( + "errors" + "fmt" + "io" + + "github.com/barakmich/glog" + + "github.com/google/cayley/config" + "github.com/google/cayley/graph" + "github.com/google/cayley/quad" +) + +var ErrNotPersistent = errors.New("database type is not persistent") + +func Init(cfg *config.Config) error { + if !graph.IsPersistent(cfg.DatabaseType) { + return fmt.Errorf("ignoring unproductive database initialization request: %v", ErrNotPersistent) + } + + return graph.InitTripleStore(cfg.DatabaseType, cfg.DatabasePath, cfg.DatabaseOptions) +} + +func Open(cfg *config.Config) (graph.TripleStore, error) { + glog.Infof("Opening database %q at %s", cfg.DatabaseType, cfg.DatabasePath) + ts, err := graph.NewTripleStore(cfg.DatabaseType, cfg.DatabasePath, cfg.DatabaseOptions) + if err != nil { + return nil, err + } + + return ts, nil +} + +func Load(ts graph.TripleStore, cfg *config.Config, dec quad.Unmarshaler) error { + bulker, canBulk := ts.(graph.BulkLoader) + if canBulk { + switch err := bulker.BulkLoad(dec); err { + case nil: + return nil + case graph.ErrCannotBulkLoad: + // Try individual loading. + default: + return err + } + } + + block := make([]quad.Quad, 0, cfg.LoadSize) + for { + t, err := dec.Unmarshal() + if err != nil { + if err == io.EOF { + break + } + return err + } + block = append(block, t) + if len(block) == cap(block) { + ts.AddTripleSet(block) + block = block[:0] + } + } + ts.AddTripleSet(block) + + return nil +} diff --git a/db/init.go b/db/init.go deleted file mode 100644 index 0f0887c..0000000 --- a/db/init.go +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2014 The Cayley Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package db - -import ( - "errors" - "fmt" - - "github.com/google/cayley/config" - "github.com/google/cayley/graph" -) - -var ErrNotPersistent = errors.New("database type is not persistent") - -func Init(cfg *config.Config) error { - if !graph.IsPersistent(cfg.DatabaseType) { - return fmt.Errorf("ignoring unproductive database initialization request: %v", ErrNotPersistent) - } - - return graph.InitTripleStore(cfg.DatabaseType, cfg.DatabasePath, cfg.DatabaseOptions) -} diff --git a/db/load.go b/db/load.go deleted file mode 100644 index 2f0ab23..0000000 --- a/db/load.go +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2014 The Cayley Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package db - -import ( - "io" - - "github.com/google/cayley/config" - "github.com/google/cayley/graph" - "github.com/google/cayley/quad" -) - -func Load(ts graph.TripleStore, cfg *config.Config, dec quad.Unmarshaler) error { - bulker, canBulk := ts.(graph.BulkLoader) - if canBulk { - switch err := bulker.BulkLoad(dec); err { - case nil: - return nil - case graph.ErrCannotBulkLoad: - // Try individual loading. - default: - return err - } - } - - block := make([]quad.Quad, 0, cfg.LoadSize) - for { - t, err := dec.Unmarshal() - if err != nil { - if err == io.EOF { - break - } - return err - } - block = append(block, t) - if len(block) == cap(block) { - ts.AddTripleSet(block) - block = block[:0] - } - } - ts.AddTripleSet(block) - - return nil -} diff --git a/db/open.go b/db/open.go deleted file mode 100644 index bf1f2c7..0000000 --- a/db/open.go +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2014 The Cayley Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package db - -import ( - "github.com/barakmich/glog" - - "github.com/google/cayley/config" - "github.com/google/cayley/graph" -) - -func Open(cfg *config.Config) (graph.TripleStore, error) { - glog.Infof("Opening database %q at %s", cfg.DatabaseType, cfg.DatabasePath) - ts, err := graph.NewTripleStore(cfg.DatabaseType, cfg.DatabasePath, cfg.DatabaseOptions) - if err != nil { - return nil, err - } - - return ts, nil -}