package notifications import ( messaging "github.com/tech/sendico/pkg/messaging/envelope" gmessaging "github.com/tech/sendico/pkg/messaging/internal/generated" "github.com/tech/sendico/pkg/model" nm "github.com/tech/sendico/pkg/model/notification" "github.com/tech/sendico/pkg/mservice" "go.mongodb.org/mongo-driver/bson/primitive" "google.golang.org/protobuf/proto" ) type AccountNotification struct { messaging.Envelope accountRef primitive.ObjectID } func (acn *AccountNotification) Serialize() ([]byte, error) { var msg gmessaging.AccountCreatedEvent msg.AccountRef = acn.accountRef.Hex() data, err := proto.Marshal(&msg) if err != nil { return nil, err } return acn.Envelope.Wrap(data) } func NewAccountNotification(action nm.NotificationAction) model.NotificationEvent { return model.NewNotification(mservice.Accounts, action) } func NewAccountImp(sender string, accountRef primitive.ObjectID, action nm.NotificationAction) messaging.Envelope { return &AccountNotification{ Envelope: messaging.CreateEnvelope(sender, NewAccountNotification(action)), accountRef: accountRef, } }