forked from MirrorHub/mautrix-whatsapp
Simplify using optional db transactions
This commit is contained in:
parent
f51fb5c5c2
commit
86e739b6a1
2 changed files with 19 additions and 34 deletions
|
@ -180,26 +180,20 @@ func (msg *Message) Scan(row dbutil.Scannable) *Message {
|
|||
return msg
|
||||
}
|
||||
|
||||
func (msg *Message) Insert(txn dbutil.Transaction) {
|
||||
func (msg *Message) Insert(txn dbutil.Execable) {
|
||||
if txn == nil {
|
||||
txn = msg.db
|
||||
}
|
||||
var sender interface{} = msg.Sender
|
||||
// Slightly hacky hack to allow inserting empty senders (used for post-backfill dummy events)
|
||||
if msg.Sender.IsEmpty() {
|
||||
sender = ""
|
||||
}
|
||||
query := `
|
||||
_, err := txn.Exec(`
|
||||
INSERT INTO message
|
||||
(chat_jid, chat_receiver, jid, mxid, sender, timestamp, sent, type, error, broadcast_list_jid)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)
|
||||
`
|
||||
args := []interface{}{
|
||||
msg.Chat.JID, msg.Chat.Receiver, msg.JID, msg.MXID, sender, msg.Timestamp.Unix(), msg.Sent, msg.Type, msg.Error, msg.BroadcastListJID,
|
||||
}
|
||||
var err error
|
||||
if txn != nil {
|
||||
_, err = txn.Exec(query, args...)
|
||||
} else {
|
||||
_, err = msg.db.Exec(query, args...)
|
||||
}
|
||||
`, msg.Chat.JID, msg.Chat.Receiver, msg.JID, msg.MXID, sender, msg.Timestamp.Unix(), msg.Sent, msg.Type, msg.Error, msg.BroadcastListJID)
|
||||
if err != nil {
|
||||
msg.log.Warnfln("Failed to insert %s@%s: %v", msg.Chat, msg.JID, err)
|
||||
}
|
||||
|
@ -214,18 +208,15 @@ func (msg *Message) MarkSent(ts time.Time) {
|
|||
}
|
||||
}
|
||||
|
||||
func (msg *Message) UpdateMXID(txn dbutil.Transaction, mxid id.EventID, newType MessageType, newError MessageErrorType) {
|
||||
func (msg *Message) UpdateMXID(txn dbutil.Execable, mxid id.EventID, newType MessageType, newError MessageErrorType) {
|
||||
if txn == nil {
|
||||
txn = msg.db
|
||||
}
|
||||
msg.MXID = mxid
|
||||
msg.Type = newType
|
||||
msg.Error = newError
|
||||
query := "UPDATE message SET mxid=$1, type=$2, error=$3 WHERE chat_jid=$4 AND chat_receiver=$5 AND jid=$6"
|
||||
args := []interface{}{mxid, newType, newError, msg.Chat.JID, msg.Chat.Receiver, msg.JID}
|
||||
var err error
|
||||
if txn != nil {
|
||||
_, err = txn.Exec(query, args...)
|
||||
} else {
|
||||
_, err = msg.db.Exec(query, args...)
|
||||
}
|
||||
_, err := txn.Exec("UPDATE message SET mxid=$1, type=$2, error=$3 WHERE chat_jid=$4 AND chat_receiver=$5 AND jid=$6",
|
||||
mxid, newType, newError, msg.Chat.JID, msg.Chat.Receiver, msg.JID)
|
||||
if err != nil {
|
||||
msg.log.Warnfln("Failed to update %s@%s: %v", msg.Chat, msg.JID, err)
|
||||
}
|
||||
|
|
|
@ -209,24 +209,18 @@ func (portal *Portal) Insert() {
|
|||
}
|
||||
}
|
||||
|
||||
func (portal *Portal) Update(txn dbutil.Transaction) {
|
||||
query := `
|
||||
func (portal *Portal) Update(txn dbutil.Execable) {
|
||||
if txn == nil {
|
||||
txn = portal.db
|
||||
}
|
||||
_, err := txn.Exec(`
|
||||
UPDATE portal
|
||||
SET mxid=$1, name=$2, name_set=$3, topic=$4, topic_set=$5, avatar=$6, avatar_url=$7, avatar_set=$8,
|
||||
encrypted=$9, last_sync=$10, first_event_id=$11, next_batch_id=$12, relay_user_id=$13, expiration_time=$14
|
||||
WHERE jid=$15 AND receiver=$16
|
||||
`
|
||||
args := []interface{}{
|
||||
portal.mxidPtr(), portal.Name, portal.NameSet, portal.Topic, portal.TopicSet, portal.Avatar, portal.AvatarURL.String(),
|
||||
`, portal.mxidPtr(), portal.Name, portal.NameSet, portal.Topic, portal.TopicSet, portal.Avatar, portal.AvatarURL.String(),
|
||||
portal.AvatarSet, portal.Encrypted, portal.lastSyncTs(), portal.FirstEventID.String(), portal.NextBatchID.String(),
|
||||
portal.relayUserPtr(), portal.ExpirationTime, portal.Key.JID, portal.Key.Receiver,
|
||||
}
|
||||
var err error
|
||||
if txn != nil {
|
||||
_, err = txn.Exec(query, args...)
|
||||
} else {
|
||||
_, err = portal.db.Exec(query, args...)
|
||||
}
|
||||
portal.relayUserPtr(), portal.ExpirationTime, portal.Key.JID, portal.Key.Receiver)
|
||||
if err != nil {
|
||||
portal.log.Warnfln("Failed to update %s: %v", portal.Key, err)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue