From e8935ddff9f6637dcdb313f25fa0c8f582c91c8d Mon Sep 17 00:00:00 2001 From: Florian Schlegel Date: Tue, 14 Feb 2017 11:23:11 +0100 Subject: [PATCH] implemented NewPersistorWithIndex() and test --- persistence/persistence.go | 12 ++++++++ persistence/persistence_test.go | 53 +++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 persistence/persistence_test.go diff --git a/persistence/persistence.go b/persistence/persistence.go index 7442337..8c048d8 100644 --- a/persistence/persistence.go +++ b/persistence/persistence.go @@ -24,6 +24,18 @@ type Persistor struct { // ~ CONSTRUCTOR //------------------------------------------------------------------ +func NewPersistorWithIndex(mongoURL string, collection string, index mgo.Index) (p *Persistor, err error) { + p, err = NewPersistor(mongoURL, collection) + if err != nil { + return + } + err = p.GetCollection().EnsureIndex(index) + if err != nil { + return + } + return p, nil +} + // NewPersistor constructor func NewPersistor(mongoURL string, collection string) (p *Persistor, err error) { parsedURL, err := url.Parse(mongoURL) diff --git a/persistence/persistence_test.go b/persistence/persistence_test.go new file mode 100644 index 0000000..0bade22 --- /dev/null +++ b/persistence/persistence_test.go @@ -0,0 +1,53 @@ +package persistence + +import ( + "testing" + + "gopkg.in/mgo.v2" +) + +type Foo struct { + FirstName string + LastName string +} + +func TestPersistenceIndex(t *testing.T) { + index := mgo.Index{ + Key: []string{"firstname", "lastname"}, + Unique: true, + Background: true, + } + p, err := NewPersistorWithIndex("mongodb://dockerhost/test", "testindex", index) + if err != nil { + t.Fatal(err) + } + err = p.GetCollection().EnsureIndex(index) + if err != nil { + t.Fatal(err) + } + err = p.GetCollection().Insert(&Foo{ + FirstName: "Foo", + LastName: "Bar", + }) + if err != nil { + t.Fatal(err) + } + err = p.GetCollection().Insert(&Foo{ + FirstName: "Flo", + LastName: "Bar", + }) + if err != nil { + t.Fatal(err) + } + err = p.GetCollection().Insert(&Foo{ + FirstName: "Flo", + LastName: "Bar", + }) + if err == nil { + t.Fail() + t.Log("Did not expected that one to work!") + } + if err != nil { + t.Log("Error: " + err.Error()) + } +}