notifier/internal/repository/repository.go

48 lines
1023 B
Go
Raw Normal View History

2024-03-31 18:23:50 +00:00
package repository
2024-03-31 20:04:15 +00:00
2024-04-01 13:18:16 +00:00
import (
"context"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
"mailnotifier/internal/models"
)
2024-03-31 20:04:15 +00:00
type Repository struct {
mdb *mongo.Collection
}
func NewRepository(mdb *mongo.Collection) *Repository {
return &Repository{
mdb: mdb,
}
}
2024-04-01 13:18:16 +00:00
// записываем каждый месседж по одному
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
}
2024-03-31 20:04:15 +00:00
2024-04-01 13:18:16 +00:00
return messages, nil
}