From e26d82d91cc83ccfe34a35ae5efa2a498bd88593 Mon Sep 17 00:00:00 2001 From: Pavel Date: Mon, 1 Apr 2024 16:18:16 +0300 Subject: [PATCH] add repo methods --- internal/models/message.go | 12 +++++++---- internal/repository/repository.go | 36 ++++++++++++++++++++++++++++--- 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/internal/models/message.go b/internal/models/message.go index b071d33..90da47f 100644 --- a/internal/models/message.go +++ b/internal/models/message.go @@ -1,8 +1,12 @@ package models +import "go.mongodb.org/mongo-driver/bson/primitive" + type Message struct { - AccountID string // id аккаунта который что то сделал - Email string // его mail - ServiceKey string // сервис с которого пришло сообщение - EventType string // тип события вызвавшее отправку данных в кафку + ID primitive.ObjectID `bson:"_id"` + AccountID string `bson:"accountID"` // id аккаунта который что то сделал + Email string `bson:"email"` // его mail + ServiceKey string `bson:"serviceKey"` // сервис с которого пришло сообщение + EventType string `bson:"eventType"` // тип события вызвавшее отправку данных в кафку + Send bool `bson:"send"` } diff --git a/internal/repository/repository.go b/internal/repository/repository.go index 3f31de1..45b15e5 100644 --- a/internal/repository/repository.go +++ b/internal/repository/repository.go @@ -1,6 +1,12 @@ package repository -import "go.mongodb.org/mongo-driver/mongo" +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 @@ -12,6 +18,30 @@ func NewRepository(mdb *mongo.Collection) *Repository { } } -// метод вставки в коллекцию +// записываем каждый месседж по одному +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 +}