48 lines
1023 B
Go
48 lines
1023 B
Go
package repository
|
|
|
|
import (
|
|
"context"
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
"go.mongodb.org/mongo-driver/mongo"
|
|
"mailnotifier/internal/models"
|
|
)
|
|
|
|
type Repository struct {
|
|
mdb *mongo.Collection
|
|
}
|
|
|
|
func NewRepository(mdb *mongo.Collection) *Repository {
|
|
return &Repository{
|
|
mdb: mdb,
|
|
}
|
|
}
|
|
|
|
// записываем каждый месседж по одному
|
|
func (r *Repository) Insert(ctx context.Context, mes models.Message) error {
|
|
mes.ID = primitive.NewObjectID()
|
|
mes.Send = false
|
|
_, err := r.mdb.InsertOne(ctx, mes)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// получаем сразу все в tools метод распределения
|
|
func (r *Repository) GetMany(ctx context.Context) ([]models.Message, error) {
|
|
cursor, err := r.mdb.Find(ctx, bson.D{})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer cursor.Close(ctx)
|
|
|
|
var messages []models.Message
|
|
if err := cursor.All(ctx, &messages); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return messages, nil
|
|
}
|