create device database manager

This commit is contained in:
SowinskiBraeden committed 2022-09-28 10:09:15 -07:00
1 parent f4e0335a47
commit 92ef5658dc
2 files changed
+72 -8

No files matched your search

+8 -8
View File
@@ -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
} }
+64
View File
@@ -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
}