Skip to content

Commit

Permalink
feat (log) add log to adaptors :)
Browse files Browse the repository at this point in the history
  • Loading branch information
pentateu committed Apr 3, 2019
1 parent 01fe869 commit ec198ad
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 9 deletions.
6 changes: 6 additions & 0 deletions memory_adapter.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"github.com/moleculer-go/moleculer"
"github.com/moleculer-go/moleculer/payload"
"github.com/moleculer-go/moleculer/util"
log "github.com/sirupsen/logrus"
)

//MemoryAdapter stores data in memory!
Expand All @@ -17,6 +18,11 @@ type MemoryAdapter struct {
SearchFields []string
Table string
db *memdb.MemDB
logger *log.Entry
}

func (adapter *MemoryAdapter) Init(logger *log.Entry) {
adapter.logger = logger
}

func (adapter *MemoryAdapter) generateSchema() *memdb.DBSchema {
Expand Down
3 changes: 3 additions & 0 deletions mocks/test_mocks.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,18 @@ import (
"github.com/moleculer-go/moleculer"
"github.com/moleculer-go/moleculer/payload"
. "github.com/onsi/gomega"
log "github.com/sirupsen/logrus"
)

type Adapter interface {
Init(*log.Entry)
Connect() error
Insert(params moleculer.Payload) moleculer.Payload
RemoveAll() moleculer.Payload
}

func ConnectAndLoadUsers(adapter Adapter) (moleculer.Payload, moleculer.Payload, moleculer.Payload) {
adapter.Init(log.WithField("test", "adapter"))
err := adapter.Connect()
if err != nil {
panic(err)
Expand Down
8 changes: 5 additions & 3 deletions moleculer_db.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ var defaultSettings = map[string]interface{}{
}

type Adapter interface {
Init(*log.Entry)
Connect() error
Disconnect() error
Find(params moleculer.Payload) moleculer.Payload
Expand Down Expand Up @@ -204,18 +205,19 @@ func Mixin(adapter Adapter) moleculer.Mixin {
if adapter == nil {
settingsAdapter, exists := instance.Settings["db-adapter"]
if exists {
context.Logger().Debug("db-mixin started. adapter from settings!")
context.Logger().Info("db-mixin started - service: ", svc.Name, " -> adapter from settings!")
adapter = settingsAdapter.(Adapter)
}
}
if adapter != nil {
context.Logger().Info("db-mixin started. adapter.Connect()")
context.Logger().Info("db-mixin started - service: ", svc.Name, " -> adapter.Connect()")
adapter.Init(context.Logger().WithField("moleculer-db", "adapter"))
adapter.Connect()
}
},
Stopped: func(context moleculer.BrokerContext, svc moleculer.Service) {
if adapter != nil {
context.Logger().Info("db-mixin stopped. adapter.Disconnect()")
context.Logger().Info("db-mixin stopped - service: ", svc.Name, " -> adapter.Disconnect()")
adapter.Disconnect()
}
},
Expand Down
2 changes: 0 additions & 2 deletions moleculer_db_integration_test.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package db_test

import (
"fmt"
"os"
"time"

Expand Down Expand Up @@ -59,7 +58,6 @@ var _ = Describe("Moleculer DB Integration Tests", func() {
"populate": []string{"friends"},
})
Expect(user.IsError()).Should(BeFalse())
fmt.Println("user --> ", user)
Expect(user.Get("name").String()).Should(Equal(johnT.Get("name").String()))
Expect(user.Get("friends").Exists()).Should(BeTrue())
Expect(user.Get("friends").Len()).Should(Equal(2))
Expand Down
1 change: 0 additions & 1 deletion moleculer_db_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ var _ = Describe("Moleculer DB Mixin", func() {
SearchFields: []string{"name"},
}

//var johnSnow, marie, johnTravolta moleculer.Payload
BeforeEach(func() {
mocks.ConnectAndLoadUsers(adapter)
})
Expand Down
24 changes: 22 additions & 2 deletions mongo_adapter.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import (
"strings"
"time"

"github.com/moleculer-go/moleculer/payload"

"github.com/moleculer-go/moleculer"
"github.com/moleculer-go/moleculer/payload"
log "github.com/sirupsen/logrus"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
Expand All @@ -24,13 +24,19 @@ type MongoAdapter struct {
Collection string
client *mongo.Client
coll *mongo.Collection
logger *log.Entry
}

func (adapter *MongoAdapter) Init(logger *log.Entry) {
adapter.logger = logger
}

// Connect connect to mongo, stores the client and the collection.
func (adapter *MongoAdapter) Connect() error {
if adapter.coll != nil {
return nil
}
adapter.logger.Debug("MongoAdapter Connect() MongoURL: ", adapter.MongoURL)
ctx, _ := context.WithTimeout(context.Background(), adapter.Timeout)
var err error
adapter.client, err = mongo.Connect(ctx, options.Client().ApplyURI(adapter.MongoURL))
Expand All @@ -39,12 +45,20 @@ func (adapter *MongoAdapter) Connect() error {
}
err = adapter.client.Ping(ctx, readpref.Primary())
if err != nil {
adapter.logger.Error("MongoAdapter Connect() error on ping - error: ", err)
return err
}
adapter.coll = adapter.client.Database(adapter.Database).Collection(adapter.Collection)
adapter.logger.Debug("MongoAdapter Connected !")
return nil
}

func (adapter *MongoAdapter) checkConnected() {
if adapter.coll == nil {
panic("Adapter not connected!")
}
}

// Disconnect disconnects from mongo.
func (adapter *MongoAdapter) Disconnect() error {
ctx, _ := context.WithTimeout(context.Background(), adapter.Timeout)
Expand Down Expand Up @@ -146,6 +160,7 @@ func parseFilter(params moleculer.Payload) bson.M {
}

func (adapter *MongoAdapter) openCursor(params moleculer.Payload) (*mongo.Cursor, context.Context, error) {
adapter.checkConnected()
ctx, _ := context.WithTimeout(context.Background(), adapter.Timeout)
filter := parseFilter(params)
opts := parseFindOptions(params)
Expand Down Expand Up @@ -234,6 +249,7 @@ func (adapter *MongoAdapter) FindByIds(params moleculer.Payload) moleculer.Paylo

// Count count the number of records for the given filter.
func (adapter *MongoAdapter) Count(params moleculer.Payload) moleculer.Payload {
adapter.checkConnected()
ctx, _ := context.WithTimeout(context.Background(), adapter.Timeout)
filter := parseFilter(params)
count, err := adapter.coll.CountDocuments(ctx, filter)
Expand All @@ -244,6 +260,7 @@ func (adapter *MongoAdapter) Count(params moleculer.Payload) moleculer.Payload {
}

func (adapter *MongoAdapter) Insert(params moleculer.Payload) moleculer.Payload {
adapter.checkConnected()
ctx, _ := context.WithTimeout(context.Background(), adapter.Timeout)
values := params.Bson()
res, err := adapter.coll.InsertOne(ctx, values)
Expand All @@ -262,6 +279,7 @@ func (adapter *MongoAdapter) Update(params moleculer.Payload) moleculer.Payload
}

func (adapter *MongoAdapter) UpdateById(id, update moleculer.Payload) moleculer.Payload {
adapter.checkConnected()
objId, err := primitive.ObjectIDFromHex(id.String())
if err != nil {
return payload.Error("Cannot update record without id - error: ", err)
Expand All @@ -276,6 +294,7 @@ func (adapter *MongoAdapter) UpdateById(id, update moleculer.Payload) moleculer.
}

func (adapter *MongoAdapter) RemoveById(id moleculer.Payload) moleculer.Payload {
adapter.checkConnected()
objId, err := primitive.ObjectIDFromHex(id.String())
if err != nil {
return payload.Error("Cannot update record without id - error: ", err)
Expand All @@ -289,6 +308,7 @@ func (adapter *MongoAdapter) RemoveById(id moleculer.Payload) moleculer.Payload
}

func (adapter *MongoAdapter) RemoveAll() moleculer.Payload {
adapter.checkConnected()
ctx, _ := context.WithTimeout(context.Background(), adapter.Timeout)
res, err := adapter.coll.DeleteMany(ctx, bson.M{})
if err != nil {
Expand Down
5 changes: 4 additions & 1 deletion mongo_adapter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,21 @@ import (
"github.com/moleculer-go/moleculer/payload"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
log "github.com/sirupsen/logrus"
)

var mongoTestsHost = "mongodb://" + os.Getenv("MONGO_TEST_HOST")

func mongoAdapter(database, collection string) *MongoAdapter {
fmt.Println("mongoTestsHost: ", mongoTestsHost)
return &MongoAdapter{
adapter := &MongoAdapter{
MongoURL: mongoTestsHost,
Timeout: 2 * time.Second,
Database: database,
Collection: collection,
}
adapter.Init(log.WithField("test", "adapter"))
return adapter
}

type M map[string]interface{}
Expand Down

0 comments on commit ec198ad

Please sign in to comment.