mirror of
https://github.com/PretendoNetwork/friends.git
synced 2025-04-02 11:01:46 -04:00
74 lines
2.2 KiB
Go
74 lines
2.2 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"
|
|
)
|
|
|
|
// GetFriendPersistentInfos returns the persistent information of all friends
|
|
func GetFriendPersistentInfos(user1_pid uint32, pids []uint32) (types.List[friends_3ds_types.FriendPersistentInfo], error) {
|
|
persistentInfos := types.NewList[friends_3ds_types.FriendPersistentInfo]()
|
|
|
|
rows, err := database.Manager.Query(`
|
|
SELECT pid, region, area, language, country, favorite_title, favorite_title_version, comment, comment_changed, last_online, mii_changed FROM "3ds".user_data WHERE pid=ANY($1::int[])`, pq.Array(pids))
|
|
if err != nil {
|
|
return persistentInfos, err
|
|
}
|
|
defer rows.Close()
|
|
|
|
for rows.Next() {
|
|
persistentInfo := friends_3ds_types.NewFriendPersistentInfo()
|
|
|
|
gameKey := friends_3ds_types.NewGameKey()
|
|
|
|
var pid uint32
|
|
var region uint8
|
|
var area uint8
|
|
var language uint8
|
|
var country uint8
|
|
var titleID uint64
|
|
var titleVersion uint16
|
|
var message string
|
|
var lastOnlineTime uint64
|
|
var msgUpdateTime uint64
|
|
var miiModifiedAtTime uint64
|
|
|
|
err := rows.Scan(
|
|
&pid,
|
|
®ion,
|
|
&area,
|
|
&language,
|
|
&country,
|
|
&titleID,
|
|
&titleVersion,
|
|
&message,
|
|
&msgUpdateTime,
|
|
&lastOnlineTime,
|
|
&miiModifiedAtTime,
|
|
)
|
|
if err != nil {
|
|
return persistentInfos, err
|
|
}
|
|
|
|
gameKey.TitleID = types.NewUInt64(titleID)
|
|
gameKey.TitleVersion = types.NewUInt16(titleVersion)
|
|
|
|
persistentInfo.PID = types.NewPID(uint64(pid))
|
|
persistentInfo.Region = types.NewUInt8(region)
|
|
persistentInfo.Country = types.NewUInt8(country)
|
|
persistentInfo.Area = types.NewUInt8(area)
|
|
persistentInfo.Language = types.NewUInt8(language)
|
|
persistentInfo.Platform = types.NewUInt8(2) // * Always 3DS
|
|
persistentInfo.GameKey = gameKey
|
|
persistentInfo.Message = types.NewString(message)
|
|
persistentInfo.MessageUpdatedAt = types.NewDateTime(msgUpdateTime)
|
|
persistentInfo.MiiModifiedAt = types.NewDateTime(miiModifiedAtTime)
|
|
persistentInfo.LastOnline = types.NewDateTime(lastOnlineTime)
|
|
|
|
persistentInfos = append(persistentInfos, persistentInfo)
|
|
}
|
|
|
|
return persistentInfos, nil
|
|
}
|