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 {
|
||||
FindOne(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)
|
||||
UpdateOne(ctx context.Context, filter, document interface{}) (mongoUpdateResult, error)
|
||||
InsertOne(ctx context.Context, document interface{}) (*mongoInsertOneResult, error)
|
||||
UpdateOne(ctx context.Context, filter, document interface{}) (*mongoUpdateResult, error)
|
||||
}
|
||||
|
||||
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
|
||||
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)
|
||||
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)
|
||||
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