mirror of
https://github.com/PretendoNetwork/friends.git
synced 2025-04-02 11:01:46 -04:00
78 lines
2.4 KiB
Go
78 lines
2.4 KiB
Go
package database_wiiu
|
|
|
|
import (
|
|
"database/sql"
|
|
|
|
"github.com/PretendoNetwork/friends/database"
|
|
"github.com/PretendoNetwork/nex-go/v2/types"
|
|
friends_wiiu_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-wiiu/types"
|
|
)
|
|
|
|
// GetUserBlockList returns a user's blacklist
|
|
func GetUserBlockList(pid uint32) (types.List[friends_wiiu_types.BlacklistedPrincipal], error) {
|
|
blockList := types.NewList[friends_wiiu_types.BlacklistedPrincipal]()
|
|
|
|
rows, err := database.Manager.Query(`
|
|
SELECT
|
|
b.blocked_pid, b.title_id, b.title_version, b.date,
|
|
bi.username, bi.unknown,
|
|
mii.name, mii.unknown1, mii.unknown2, mii.data, mii.unknown_datetime
|
|
FROM wiiu.blocks AS b
|
|
INNER JOIN wiiu.principal_basic_info AS bi ON bi.pid = b.blocked_pid
|
|
INNER JOIN wiiu.mii AS mii ON mii.pid = b.blocked_pid
|
|
WHERE blocker_pid=$1
|
|
`, pid)
|
|
if err != nil {
|
|
if err == sql.ErrNoRows {
|
|
return blockList, database.ErrBlacklistNotFound
|
|
} else {
|
|
return blockList, err
|
|
}
|
|
}
|
|
defer rows.Close()
|
|
|
|
for rows.Next() {
|
|
var blockedPID uint32
|
|
var titleID uint64
|
|
var titleVersion uint16
|
|
var date uint64
|
|
|
|
var blockedNNID string
|
|
var unknown uint8
|
|
|
|
var miiName string
|
|
var miiUnknown1 uint8
|
|
var miiUnknown2 uint8
|
|
var miiData []byte
|
|
var miiDatetime uint64
|
|
|
|
err := rows.Scan(&blockedPID, &titleID, &titleVersion, &date, &blockedNNID, &unknown, &miiName, &miiUnknown1, &miiUnknown2, &miiData, &miiDatetime)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
mii := friends_wiiu_types.NewMiiV2()
|
|
mii.Name = types.NewString(miiName)
|
|
mii.Unknown1 = types.NewUInt8(miiUnknown1)
|
|
mii.Unknown2 = types.NewUInt8(miiUnknown2)
|
|
mii.MiiData = types.NewBuffer(miiData)
|
|
mii.Datetime = types.NewDateTime(miiDatetime)
|
|
|
|
principalBasicInfo := friends_wiiu_types.NewPrincipalBasicInfo()
|
|
principalBasicInfo.PID = types.NewPID(uint64(blockedPID))
|
|
principalBasicInfo.NNID = types.NewString(blockedNNID)
|
|
principalBasicInfo.Unknown = types.NewUInt8(unknown)
|
|
principalBasicInfo.Mii = mii
|
|
|
|
blacklistPrincipal := friends_wiiu_types.NewBlacklistedPrincipal()
|
|
blacklistPrincipal.PrincipalBasicInfo = principalBasicInfo
|
|
blacklistPrincipal.GameKey = friends_wiiu_types.NewGameKey()
|
|
blacklistPrincipal.GameKey.TitleID = types.NewUInt64(titleID)
|
|
blacklistPrincipal.GameKey.TitleVersion = types.NewUInt16(titleVersion)
|
|
blacklistPrincipal.BlackListedSince = types.NewDateTime(date)
|
|
|
|
blockList = append(blockList, blacklistPrincipal)
|
|
}
|
|
|
|
return blockList, nil
|
|
}
|