prepare user system

This commit is contained in:
SowinskiBraeden committed 2023-09-28 21:42:58 -07:00
1 parent ecf4fabd86
commit 5bc4adceea
13 files changed
+470 -18

No files matched your search

+65
View File
@@ -0,0 +1,65 @@
package databases
// go generate: mockery --name CowDatabase
import (
"context"
"github.com/SowinskiBraeden/DeviceBookingAPI/models"
)
const userDBO = "users"
// UserDatabase contains the methods to use with the cow database
type UserDatabase interface {
FindOne(ctx context.Context, filter interface{}) (*models.User, error)
Find(ctx context.Context, filter interface{}) ([]models.User, error)
InsertOne(ctx context.Context, document interface{}) (*mongoInsertOneResult, error)
UpdateOne(ctx context.Context, filter, document interface{}) (*mongoUpdateResult, error)
}
type userDatabase struct {
db DatabaseHelper
}
// NewCowDatabase initialized a new instance of a cow database with the provided db conntection
func NewUserDatabase(db DatabaseHelper) UserDatabase {
return &userDatabase{
db: db,
}
}
func (u *userDatabase) FindOne(ctx context.Context, filter interface{}) (*models.User, error) {
user := &models.User{}
err := u.db.Collection(userDBO).FindOne(ctx, filter).Decode(&user)
if err != nil {
return nil, err
}
return user, nil
}
func (u *userDatabase) Find(ctx context.Context, filter interface{}) ([]models.User, error) {
var users []models.User
err := u.db.Collection(userDBO).Find(ctx, filter).Decode(&users)
if err != nil {
return nil, err
}
return users, nil
}
// Returns the result (document id) and error
func (u *userDatabase) InsertOne(ctx context.Context, document interface{}) (*mongoInsertOneResult, error) {
result, err := u.db.Collection(userDBO).InsertOne(ctx, document)
if err != nil {
return nil, err
}
return &result, nil
}
func (u *userDatabase) UpdateOne(ctx context.Context, filter, update interface{}) (*mongoUpdateResult, error) {
result, err := u.db.Collection(userDBO).UpdateOne(ctx, filter, update)
if err != nil {
return nil, err
}
return &result, nil
}