mirror of
https://github.com/PretendoNetwork/friends.git
synced 2026-04-23 10:07:42 -05:00
63 lines
1.6 KiB
Go
63 lines
1.6 KiB
Go
package database_wiiu
|
|
|
|
import (
|
|
"database/sql"
|
|
|
|
"github.com/PretendoNetwork/friends/database"
|
|
)
|
|
|
|
// SaveFriendRequest registers a new friend request
|
|
func SaveFriendRequest(senderPID uint32, recipientPID uint32, sentTime uint64, expireTime uint64, message string) (uint64, error) {
|
|
var id uint64
|
|
|
|
friendRequestBlocked, err := IsFriendRequestBlocked(recipientPID, senderPID)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
// Check for an existing friend request between the two users
|
|
row, err := database.Manager.QueryRow(`SELECT id FROM wiiu.friend_requests WHERE sender_pid=$1 AND recipient_pid=$2`, senderPID, recipientPID)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
err = row.Scan(&id)
|
|
if err != nil && err != sql.ErrNoRows {
|
|
return 0, err
|
|
} else if id != 0 {
|
|
if friendRequestBlocked {
|
|
return id, nil
|
|
}
|
|
|
|
// Reset status flags and update timestamps for resent requests
|
|
_, err = database.Manager.Exec(`
|
|
UPDATE wiiu.friend_requests
|
|
SET denied = false,
|
|
accepted = false,
|
|
sent_on = $1,
|
|
expires_on = $2
|
|
WHERE id = $3`,
|
|
sentTime, expireTime, id)
|
|
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
return id, nil
|
|
}
|
|
|
|
// Create a new friend request if none exists
|
|
row, err = database.Manager.QueryRow(`
|
|
INSERT INTO wiiu.friend_requests (sender_pid, recipient_pid, sent_on, expires_on, message, received, accepted, denied)
|
|
VALUES ($1, $2, $3, $4, $5, false, false, $6) RETURNING id`, senderPID, recipientPID, sentTime, expireTime, message, friendRequestBlocked)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
err = row.Scan(&id)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
return id, nil
|
|
} |