Example #1
0
File: store.go Project: andrebq/exp
// Enqueue will place the message inside the receiver inbox
func (ms *MessageStore) Enqueue(msg *pandora.Message) error {
	msg.Status = pandora.StatusNotDelivered
	msg.CalculateMid()
	return doInsideTransaction(ms.conn, func(tx querier) error {
		senderId, receiverId, err := findSenderReceiver(tx, msg, true)
		if err != nil {
			return err
		}
		var id int64
		err = tx.QueryRow("insert into pgstore_messages(mid, status, receivedat, sendwhen, deliverycount, senderid, receiverid) values ($1, $2, $3, $4, $5, $6, $7) returning id",
			msg.Mid.Bytes(), msg.Status, msg.ReceivedAt, msg.SendWhen, msg.DeliveryCount, senderId, receiverId).Scan(&id)
		return err
	})
}