friends/database/3ds/get_friend_miis.go
2025-02-15 23:31:32 -05:00

49 lines
1.4 KiB
Go

package database_3ds
import (
"github.com/PretendoNetwork/friends/database"
"github.com/PretendoNetwork/nex-go/v2/types"
friends_3ds_types "github.com/PretendoNetwork/nex-protocols-go/v2/friends-3ds/types"
"github.com/lib/pq"
)
// GetFriendMiis returns the Mii of all friends
func GetFriendMiis(pids []uint32) (types.List[friends_3ds_types.FriendMii], error) {
friendMiis := types.NewList[friends_3ds_types.FriendMii]()
rows, err := database.Manager.Query(`
SELECT pid, mii_name, mii_profanity, mii_character_set, mii_data, mii_changed FROM "3ds".user_data WHERE pid=ANY($1::int[])`, pq.Array(pids))
if err != nil {
return friendMiis, err
}
defer rows.Close()
for rows.Next() {
var pid uint32
var miiName string
var miiProfanity bool
var miiCharacterSet uint8
var miiData []byte
var changedTime uint64
err := rows.Scan(&pid, &miiName, &miiProfanity, &miiCharacterSet, &miiData, &changedTime)
if err != nil {
return friendMiis, err
}
mii := friends_3ds_types.NewMii()
mii.Name = types.NewString(miiName)
mii.ProfanityFlag = types.NewBool(miiProfanity)
mii.CharacterSet = types.NewUInt8(miiCharacterSet)
mii.MiiData = types.NewBuffer(miiData)
friendMii := friends_3ds_types.NewFriendMii()
friendMii.PID = types.NewPID(uint64(pid))
friendMii.Mii = mii
friendMii.ModifiedAt = types.NewDateTime(changedTime)
friendMiis = append(friendMiis, friendMii)
}
return friendMiis, nil
}