mirror of
https://github.com/PretendoNetwork/friends.git
synced 2025-04-02 11:01:46 -04:00
51 lines
1.4 KiB
Go
51 lines
1.4 KiB
Go
package grpc
|
|
|
|
import (
|
|
"context"
|
|
|
|
"google.golang.org/grpc/codes"
|
|
"google.golang.org/grpc/status"
|
|
|
|
"github.com/PretendoNetwork/friends/database"
|
|
database_3ds "github.com/PretendoNetwork/friends/database/3ds"
|
|
database_wiiu "github.com/PretendoNetwork/friends/database/wiiu"
|
|
"github.com/PretendoNetwork/friends/globals"
|
|
pb "github.com/PretendoNetwork/grpc-go/friends"
|
|
)
|
|
|
|
func (s *gRPCFriendsServer) GetUserFriendPIDs(ctx context.Context, in *pb.GetUserFriendPIDsRequest) (*pb.GetUserFriendPIDsResponse, error) {
|
|
var pids []uint32
|
|
var err error
|
|
|
|
// * Try Wii U database first
|
|
pids, err = database_wiiu.GetUserFriendPIDs(in.GetPid())
|
|
if err != nil && err != database.ErrEmptyList {
|
|
globals.Logger.Critical(err.Error())
|
|
return nil, status.Errorf(codes.Internal, "internal server error")
|
|
}
|
|
|
|
if len(pids) > 0 {
|
|
return &pb.GetUserFriendPIDsResponse{
|
|
Pids: pids,
|
|
}, nil
|
|
}
|
|
|
|
// * If no PIDs are given, try with 3DS database instead
|
|
relationships, err := database_3ds.GetUserFriends(in.GetPid())
|
|
if err != nil && err != database.ErrEmptyList {
|
|
globals.Logger.Critical(err.Error())
|
|
return nil, status.Errorf(codes.Internal, "internal server error")
|
|
}
|
|
|
|
if relationships != nil {
|
|
for _, relationship := range relationships {
|
|
if relationship.RelationshipType == 1 {
|
|
pids = append(pids, uint32(relationship.PID))
|
|
}
|
|
}
|
|
}
|
|
|
|
return &pb.GetUserFriendPIDsResponse{
|
|
Pids: pids,
|
|
}, nil
|
|
}
|