package notifications import ( messaging "github.com/tech/sendico/pkg/messaging/envelope" gmessaging "github.com/tech/sendico/pkg/generated/gmessaging" "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 ObjectNotification struct { messaging.Envelope actorAccountRef primitive.ObjectID objectRef primitive.ObjectID } func (acn *ObjectNotification) Serialize() ([]byte, error) { var msg gmessaging.ObjectUpdatedEvent msg.ActorAccountRef = acn.actorAccountRef.Hex() msg.ObjectRef = acn.objectRef.Hex() data, err := proto.Marshal(&msg) if err != nil { return nil, err } return acn.Envelope.Wrap(data) } func NewObjectNotification(t mservice.Type, action nm.NotificationAction) model.NotificationEvent { return model.NewNotification(t, action) } func NewObjectImp( sender string, actorAccountRef primitive.ObjectID, objectType mservice.Type, objectRef primitive.ObjectID, action nm.NotificationAction, ) messaging.Envelope { return &ObjectNotification{ Envelope: messaging.CreateEnvelope(sender, NewObjectNotification(objectType, action)), actorAccountRef: actorAccountRef, objectRef: objectRef, } }