65 lines
2.0 KiB
Go
65 lines
2.0 KiB
Go
package client
|
|
|
|
import (
|
|
"context"
|
|
|
|
"google.golang.org/grpc"
|
|
userv1 "hyapp.local/api/proto/user/v1"
|
|
"hyapp/pkg/appcode"
|
|
domain "hyapp/services/activity-service/internal/domain/cpweeklyrank"
|
|
)
|
|
|
|
// GRPCCPWeeklyRankSource reads CP weekly rank snapshots from user-service, the owner of CP relationship facts.
|
|
type GRPCCPWeeklyRankSource struct {
|
|
client userv1.UserCPInternalServiceClient
|
|
}
|
|
|
|
func NewGRPCCPWeeklyRankSource(conn *grpc.ClientConn) *GRPCCPWeeklyRankSource {
|
|
return &GRPCCPWeeklyRankSource{client: userv1.NewUserCPInternalServiceClient(conn)}
|
|
}
|
|
|
|
func (s *GRPCCPWeeklyRankSource) ListCPWeeklyRankEntries(ctx context.Context, relationType string, startMS int64, endMS int64, limit int32) ([]domain.Entry, error) {
|
|
resp, err := s.client.ListCPWeeklyRankEntries(ctx, &userv1.ListCPWeeklyRankEntriesRequest{
|
|
Meta: &userv1.RequestMeta{
|
|
RequestId: "cp-weekly-rank",
|
|
Caller: "activity-service",
|
|
AppCode: appcode.FromContext(ctx),
|
|
},
|
|
RelationType: relationType,
|
|
StartMs: startMS,
|
|
EndMs: endMS,
|
|
Limit: limit,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
entries := make([]domain.Entry, 0, len(resp.GetEntries()))
|
|
for _, item := range resp.GetEntries() {
|
|
entries = append(entries, domain.Entry{
|
|
Rank: item.GetRank(),
|
|
RelationshipID: item.GetRelationshipId(),
|
|
RelationType: item.GetRelationType(),
|
|
Score: item.GetScore(),
|
|
UserA: cpWeeklyRankUserFromProto(item.GetUserA()),
|
|
UserB: cpWeeklyRankUserFromProto(item.GetUserB()),
|
|
FormedAtMS: item.GetFormedAtMs(),
|
|
UpdatedAtMS: item.GetUpdatedAtMs(),
|
|
FirstScoredAtMS: item.GetFirstScoredAtMs(),
|
|
LastScoredAtMS: item.GetLastScoredAtMs(),
|
|
})
|
|
}
|
|
return entries, nil
|
|
}
|
|
|
|
func cpWeeklyRankUserFromProto(user *userv1.CPIntimacyLeaderboardUser) domain.User {
|
|
if user == nil {
|
|
return domain.User{}
|
|
}
|
|
return domain.User{
|
|
UserID: user.GetUserId(),
|
|
DisplayUserID: user.GetDisplayUserId(),
|
|
Username: user.GetUsername(),
|
|
Avatar: user.GetAvatar(),
|
|
}
|
|
}
|