Replaced repositories.Bundle with a database interface.
the build was successful

This commit is contained in:
2019-06-16 11:39:33 +02:00
parent 021f67ea4b
commit f6ad0602c2
6 changed files with 73 additions and 35 deletions
+11 -2
View File
@@ -1,6 +1,7 @@
package database
import (
"context"
"errors"
"git.aiterp.net/rpdata/api/database/mongodb"
@@ -11,12 +12,20 @@ import (
// ErrDriverUnrecognized is returned if the driver is not recognized
var ErrDriverUnrecognized = errors.New("Driver not recognized, check your config or update rpdata")
type Database interface {
Changes() repositories.ChangeRepository
Characters() repositories.CharacterRepository
Tags() repositories.TagRepository
Close(ctx context.Context) error
}
// Init sets up the database.
func Init(config config.Database) (bundle *repositories.Bundle, closeFn func() error, err error) {
func Init(config config.Database) (Database, error) {
switch config.Driver {
case "mongo", "mgo", "mongodb":
return mongodb.Init(config)
default:
return nil, nil, ErrDriverUnrecognized
return nil, ErrDriverUnrecognized
}
}
+36 -15
View File
@@ -1,6 +1,7 @@
package mongodb
import (
"context"
"fmt"
"github.com/globalsign/mgo/bson"
"time"
@@ -10,8 +11,33 @@ import (
"github.com/globalsign/mgo"
)
type MongoDB struct {
session *mgo.Session
changes repositories.ChangeRepository
characters repositories.CharacterRepository
tags repositories.TagRepository
}
func (m *MongoDB) Changes() repositories.ChangeRepository {
return m.changes
}
func (m *MongoDB) Characters() repositories.CharacterRepository {
return m.characters
}
func (m *MongoDB) Tags() repositories.TagRepository {
return m.tags
}
func (m *MongoDB) Close(ctx context.Context) error {
m.session.Close()
return nil
}
// Init initializes the mongodb database
func Init(cfg config.Database) (bundle *repositories.Bundle, closeFn func() error, err error) {
func Init(cfg config.Database) (*MongoDB, error) {
port := cfg.Port
if port <= 0 {
port = 27017
@@ -27,7 +53,7 @@ func Init(cfg config.Database) (bundle *repositories.Bundle, closeFn func() erro
Source: cfg.Db,
})
if err != nil {
return
return nil, err
}
db := session.DB(cfg.Db)
@@ -35,27 +61,22 @@ func Init(cfg config.Database) (bundle *repositories.Bundle, closeFn func() erro
characters, err := newCharacterRepository(db)
if err != nil {
session.Close()
return nil, nil, err
return nil, err
}
changes, err := newChangeRepository(db)
if err != nil {
session.Close()
return nil, nil, err
return nil, err
}
bundle = &repositories.Bundle{
Characters: characters,
Changes: changes,
Tags: newTagRepository(db),
}
return &MongoDB{
session: session,
closeFn = func() error {
session.Close()
return nil
}
return
changes: changes,
characters: characters,
tags: newTagRepository(db),
}, nil
}
type counter struct {