create device database manager
This commit is contained in:
2 files changed
+72
-8
No files matched your search
+8
-8
@@ -14,8 +14,8 @@ const cowName = "cows"
|
|||||||
type CowDatabase interface {
|
type CowDatabase interface {
|
||||||
FindOne(ctx context.Context, filter interface{}) (*models.Cow, error)
|
FindOne(ctx context.Context, filter interface{}) (*models.Cow, error)
|
||||||
Find(ctx context.Context, filter interface{}) ([]models.Cow, error)
|
Find(ctx context.Context, filter interface{}) ([]models.Cow, error)
|
||||||
InsertOne(ctx context.Context, filter interface{}) (mongoInsertOneResult, error)
|
InsertOne(ctx context.Context, document interface{}) (*mongoInsertOneResult, error)
|
||||||
UpdateOne(ctx context.Context, filter, document interface{}) (mongoUpdateResult, error)
|
UpdateOne(ctx context.Context, filter, document interface{}) (*mongoUpdateResult, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type cowDatabase struct {
|
type cowDatabase struct {
|
||||||
@@ -48,18 +48,18 @@ func (c *cowDatabase) Find(ctx context.Context, filter interface{}) ([]models.Co
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Returns the result (document id) and error
|
// Returns the result (document id) and error
|
||||||
func (c *cowDatabase) InsertOne(ctx context.Context, document interface{}) (mongoInsertOneResult, error) {
|
func (c *cowDatabase) InsertOne(ctx context.Context, document interface{}) (*mongoInsertOneResult, error) {
|
||||||
result, err := c.db.Collection(cowName).InsertOne(ctx, document)
|
result, err := c.db.Collection(cowName).InsertOne(ctx, document)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return mongoInsertOneResult{}, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return result, nil
|
return &result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *cowDatabase) UpdateOne(ctx context.Context, filter, update interface{}) (mongoUpdateResult, error) {
|
func (c *cowDatabase) UpdateOne(ctx context.Context, filter, update interface{}) (*mongoUpdateResult, error) {
|
||||||
result, err := c.db.Collection(cowName).UpdateOne(ctx, filter, update)
|
result, err := c.db.Collection(cowName).UpdateOne(ctx, filter, update)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return mongoUpdateResult{}, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return result, nil
|
return &result, nil
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
package databases
|
||||||
|
|
||||||
|
// go generate: mockery --name DeviceDatabase
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/SowinskiBraeden/SulliCartShare/models"
|
||||||
|
)
|
||||||
|
|
||||||
|
const deviceName = "devices"
|
||||||
|
|
||||||
|
// DeviceDatabase contains the methods to use with the cow database
|
||||||
|
type DeviceDatabase interface {
|
||||||
|
FindOne(ctx context.Context, filter interface{}) (*models.Device, error)
|
||||||
|
Find(ctx context.Context, filter interface{}) ([]models.Device, error)
|
||||||
|
InsertOne(ctx context.Context, document interface{}) (*mongoInsertOneResult, error)
|
||||||
|
UpdateOne(ctx context.Context, filter, document interface{}) (*mongoUpdateResult, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
type deviceDatabase struct {
|
||||||
|
db DatabaseHelper
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewDeviceDatabase initializes a new instance of a device database with the provided db connection
|
||||||
|
func NewDeviceDatabase(db DatabaseHelper) DeviceDatabase {
|
||||||
|
return &deviceDatabase{
|
||||||
|
db: db,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *deviceDatabase) FindOne(ctx context.Context, filter interface{}) (*models.Device, error) {
|
||||||
|
device := &models.Device{}
|
||||||
|
err := d.db.Collection(deviceName).FindOne(ctx, filter).Decode(&device)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return device, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *deviceDatabase) Find(ctx context.Context, filter interface{}) ([]models.Device, error) {
|
||||||
|
var devices []models.Device
|
||||||
|
err := d.db.Collection(deviceName).FindOne(ctx, filter).Decode(&devices)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return devices, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *deviceDatabase) InsertOne(ctx context.Context, document interface{}) (*mongoInsertOneResult, error) {
|
||||||
|
result, err := d.db.Collection(deviceName).InsertOne(ctx, document)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &result, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *deviceDatabase) UpdateOne(ctx context.Context, filter, update interface{}) (*mongoUpdateResult, error) {
|
||||||
|
result, err := d.db.Collection(deviceName).UpdateOne(ctx, filter, update)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &result, nil
|
||||||
|
}
|
||||||
Reference in new issue
Block a user