// 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 }) }