package notifications import ( gmessaging "github.com/tech/sendico/pkg/generated/gmessaging" messaging "github.com/tech/sendico/pkg/messaging/envelope" "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/v2/bson" "google.golang.org/protobuf/proto" ) type ObjectNotification struct { messaging.Envelope actorAccountRef bson.ObjectID objectRef bson.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 bson.ObjectID, objectType mservice.Type, objectRef bson.ObjectID, action nm.NotificationAction, ) messaging.Envelope { return &ObjectNotification{ Envelope: messaging.CreateEnvelope(sender, NewObjectNotification(objectType, action)), actorAccountRef: actorAccountRef, objectRef: objectRef, } }