mirror of
https://github.com/PretendoNetwork/friends.git
synced 2026-03-21 18:04:11 -05:00
fix(database): Proper checks on QueryRow for sql.ErrNoRows
This commit is contained in:
parent
9855dea445
commit
116b5c7df5
|
|
@ -12,12 +12,12 @@ func UpdateUserLastOnlineTime(pid uint32, lastOnline *types.DateTime) error {
|
|||
var showOnline bool
|
||||
|
||||
row, err := database.Manager.QueryRow(`SELECT show_online FROM "3ds".user_data WHERE pid=$1`, pid)
|
||||
if err != nil && err != sql.ErrNoRows {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = row.Scan(&showOnline)
|
||||
if err != nil {
|
||||
if err != nil && err != sql.ErrNoRows {
|
||||
return err
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,11 @@ func AcceptFriendRequestAndReturnFriendInfo(friendRequestID uint64) (*friends_wi
|
|||
var recipientPID uint32
|
||||
|
||||
row, err := database.Manager.QueryRow(`SELECT sender_pid, recipient_pid FROM wiiu.friend_requests WHERE id=$1`, friendRequestID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = row.Scan(&senderPID, &recipientPID)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, database.ErrFriendRequestNotFound
|
||||
|
|
@ -23,11 +28,6 @@ func AcceptFriendRequestAndReturnFriendInfo(friendRequestID uint64) (*friends_wi
|
|||
}
|
||||
}
|
||||
|
||||
err = row.Scan(&senderPID, &recipientPID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
acceptedTime := types.NewDateTime(0).Now()
|
||||
|
||||
// * Friendships are two-way relationships, not just one link between 2 entities
|
||||
|
|
@ -73,6 +73,11 @@ func AcceptFriendRequestAndReturnFriendInfo(friendRequestID uint64) (*friends_wi
|
|||
// * Offline
|
||||
var lastOnlineTime uint64
|
||||
row, err = database.Manager.QueryRow(`SELECT last_online FROM wiiu.user_data WHERE pid=$1`, senderPID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = row.Scan(&lastOnlineTime)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, database.ErrPIDNotFound
|
||||
|
|
@ -81,11 +86,6 @@ func AcceptFriendRequestAndReturnFriendInfo(friendRequestID uint64) (*friends_wi
|
|||
}
|
||||
}
|
||||
|
||||
err = row.Scan(&senderPID, &recipientPID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
lastOnline = types.NewDateTime(lastOnlineTime) // TODO - Change this
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,6 +11,11 @@ func DeleteFriendRequestAndReturnFriendPID(friendRequestID uint64) (uint32, erro
|
|||
var recipientPID uint32
|
||||
|
||||
row, err := database.Manager.QueryRow(`SELECT recipient_pid FROM wiiu.friend_requests WHERE id=$1`, friendRequestID)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
err = row.Scan(&recipientPID)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return 0, database.ErrFriendRequestNotFound
|
||||
|
|
@ -19,11 +24,6 @@ func DeleteFriendRequestAndReturnFriendPID(friendRequestID uint64) (uint32, erro
|
|||
}
|
||||
}
|
||||
|
||||
err = row.Scan(&recipientPID)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
result, err := database.Manager.Exec(`
|
||||
DELETE FROM wiiu.friend_requests WHERE id=$1`, friendRequestID)
|
||||
if err != nil {
|
||||
|
|
|
|||
|
|
@ -12,6 +12,11 @@ func GetPIDsByFriendRequestID(friendRequestID uint64) (uint32, uint32, error) {
|
|||
var recipientPID uint32
|
||||
|
||||
row, err := database.Manager.QueryRow(`SELECT sender_pid, recipient_pid FROM wiiu.friend_requests WHERE id=$1`, friendRequestID)
|
||||
if err != nil {
|
||||
return 0, 0, err
|
||||
}
|
||||
|
||||
err = row.Scan(&senderPID, &recipientPID)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return 0, 0, database.ErrFriendRequestNotFound
|
||||
|
|
@ -20,10 +25,5 @@ func GetPIDsByFriendRequestID(friendRequestID uint64) (uint32, uint32, error) {
|
|||
}
|
||||
}
|
||||
|
||||
err = row.Scan(&senderPID, &recipientPID)
|
||||
if err != nil {
|
||||
return 0, 0, err
|
||||
}
|
||||
|
||||
return senderPID, recipientPID, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,11 @@ func GetUserComment(pid uint32) (*friends_wiiu_types.Comment, error) {
|
|||
var changed uint64 = 0
|
||||
|
||||
row, err := database.Manager.QueryRow(`SELECT comment, comment_changed FROM wiiu.user_data WHERE pid=$1`, pid)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = row.Scan(&contents, &changed)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, database.ErrPIDNotFound
|
||||
|
|
@ -25,11 +30,6 @@ func GetUserComment(pid uint32) (*friends_wiiu_types.Comment, error) {
|
|||
}
|
||||
}
|
||||
|
||||
err = row.Scan(&contents, &changed)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
comment.Contents = types.NewString(contents)
|
||||
comment.LastChanged = types.NewDateTime(changed)
|
||||
|
||||
|
|
|
|||
|
|
@ -19,6 +19,11 @@ func GetUserMii(pid uint32) (*friends_wiiu_types.MiiV2, error) {
|
|||
var datetime uint64
|
||||
|
||||
row, err := database.Manager.QueryRow(`SELECT name, unknown1, unknown2, data, unknown_datetime FROM wiiu.mii WHERE pid=$1`, pid)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = row.Scan(&name, &unknown1, &unknown2, &data, &datetime)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, database.ErrPIDNotFound
|
||||
|
|
@ -27,11 +32,6 @@ func GetUserMii(pid uint32) (*friends_wiiu_types.MiiV2, error) {
|
|||
}
|
||||
}
|
||||
|
||||
err = row.Scan(&name, &unknown1, &unknown2, &data, &datetime)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
mii.Name = types.NewString(name)
|
||||
mii.Unknown1 = types.NewPrimitiveU8(unknown1)
|
||||
mii.Unknown2 = types.NewPrimitiveU8(unknown2)
|
||||
|
|
|
|||
|
|
@ -16,6 +16,11 @@ func GetUserNetworkAccountInfo(pid uint32) (*friends_wiiu_types.NNAInfo, error)
|
|||
var unknown2 uint8
|
||||
|
||||
row, err := database.Manager.QueryRow(`SELECT unknown1, unknown2 FROM wiiu.network_account_info WHERE pid=$1`, pid)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = row.Scan(&unknown1, &unknown2)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, database.ErrPIDNotFound
|
||||
|
|
@ -24,11 +29,6 @@ func GetUserNetworkAccountInfo(pid uint32) (*friends_wiiu_types.NNAInfo, error)
|
|||
}
|
||||
}
|
||||
|
||||
err = row.Scan(&unknown1, &unknown2)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
nnaInfo.Unknown1 = types.NewPrimitiveU8(unknown1)
|
||||
nnaInfo.Unknown2 = types.NewPrimitiveU8(unknown2)
|
||||
nnaInfo.PrincipalBasicInfo, err = GetUserPrincipalBasicInfo(pid)
|
||||
|
|
|
|||
|
|
@ -16,6 +16,11 @@ func GetUserPrincipalBasicInfo(pid uint32) (*friends_wiiu_types.PrincipalBasicIn
|
|||
var unknown uint8
|
||||
|
||||
row, err := database.Manager.QueryRow(`SELECT username, unknown FROM wiiu.principal_basic_info WHERE pid=$1`, pid)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = row.Scan(&nnid, &unknown)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, database.ErrPIDNotFound
|
||||
|
|
@ -24,11 +29,6 @@ func GetUserPrincipalBasicInfo(pid uint32) (*friends_wiiu_types.PrincipalBasicIn
|
|||
}
|
||||
}
|
||||
|
||||
err = row.Scan(&nnid, &unknown)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
principalBasicInfo.PID = types.NewPID(uint64(pid))
|
||||
principalBasicInfo.NNID = types.NewString(nnid)
|
||||
principalBasicInfo.Unknown = types.NewPrimitiveU8(unknown)
|
||||
|
|
|
|||
|
|
@ -17,6 +17,11 @@ func GetUserPrincipalPreference(pid uint32) (*friends_wiiu_types.PrincipalPrefer
|
|||
var blockFriendRequests bool
|
||||
|
||||
row, err := database.Manager.QueryRow(`SELECT show_online, show_current_game, block_friend_requests FROM wiiu.user_data WHERE pid=$1`, pid)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = row.Scan(&showOnlinePresence, &showCurrentTitle, &blockFriendRequests)
|
||||
if err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, database.ErrPIDNotFound
|
||||
|
|
@ -25,11 +30,6 @@ func GetUserPrincipalPreference(pid uint32) (*friends_wiiu_types.PrincipalPrefer
|
|||
}
|
||||
}
|
||||
|
||||
err = row.Scan(&showOnlinePresence, &showCurrentTitle, &blockFriendRequests)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
preference.ShowOnlinePresence = types.NewPrimitiveBool(showOnlinePresence)
|
||||
preference.ShowCurrentTitle = types.NewPrimitiveBool(showCurrentTitle)
|
||||
preference.BlockFriendRequests = types.NewPrimitiveBool(blockFriendRequests)
|
||||
|
|
|
|||
|
|
@ -17,12 +17,12 @@ func SaveFriendRequest(senderPID uint32, recipientPID uint32, sentTime uint64, e
|
|||
|
||||
// Make sure we don't already have that friend request! If we do, give them the one we already have.
|
||||
row, err := database.Manager.QueryRow(`SELECT id FROM wiiu.friend_requests WHERE sender_pid=$1 AND recipient_pid=$2`, senderPID, recipientPID)
|
||||
if err != nil && err != sql.ErrNoRows {
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
err = row.Scan(&id)
|
||||
if err != nil {
|
||||
if err != nil && err != sql.ErrNoRows {
|
||||
return 0, err
|
||||
} else if id != 0 {
|
||||
// If they aren't blocked, we want to unset the denied status on the previous request we have so that it appears again.
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user