package repository import ( "context" "gitea.pena/PenaSide/notifier/internal/models" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" ) type Repository struct { mdb *mongo.Collection //welcomeChan chan models.Message } func NewRepository(mdb *mongo.Collection) *Repository { return &Repository{ mdb: mdb, } } // записываем каждый месседж по одному func (r *Repository) Insert(ctx context.Context, mes models.Message) error { _, err := r.mdb.InsertOne(ctx, mes) if err != nil { return err } //r.welcomeChan <- mes return nil } // получаем сразу все в tools метод распределения func (r *Repository) GetMany(ctx context.Context) ([]models.Message, error) { // to := time.Now().AddDate(0, 0, -15) // from := time.Now().AddDate(0, 0, -7) // filter := bson.D{ {Key: "$and", Value: bson.A{ bson.D{ {Key: "$or", Value: bson.A{ bson.D{{Key: "sendRegistration", Value: false}}, bson.D{{Key: "sendNoneCreated", Value: false}}, bson.D{{Key: "sendUnpublished", Value: false}}, bson.D{{Key: "sendPaid", Value: false}}, }}, }, // bson.D{ // {"sendAt", bson.D{ // {"$gte", to}, // {"$lte", from}, // }}, // }, }}, } cursor, err := r.mdb.Find(ctx, filter) if err != nil { if err == mongo.ErrNoDocuments { return []models.Message{}, 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 } // апдейтим то что отправили на почту func (r *Repository) Update(ctx context.Context, message models.Message) error { filter := bson.M{"_id": message.ID} update := bson.M{ "$set": bson.M{ "sendRegistration": message.SendRegistration, "sendNoneCreated": message.SendNoneCreated, "sendUnpublished": message.SendUnpublished, "sendPaid": message.SendPaid, }, } _, err := r.mdb.UpdateOne(ctx, filter, update) if err != nil { return err } return nil }