package client

import (
	"context"

	"google.golang.org/grpc"
	userv1 "hyapp.local/api/proto/user/v1"
	"hyapp/pkg/appcode"
)

// GRPCInviteAttributionSource 从 user-service 读取被邀请用户的邀请归因。
type GRPCInviteAttributionSource struct {
	client userv1.UserServiceClient
}

func NewGRPCInviteAttributionSource(conn *grpc.ClientConn) *GRPCInviteAttributionSource {
	return &GRPCInviteAttributionSource{client: userv1.NewUserServiceClient(conn)}
}

func (s *GRPCInviteAttributionSource) GetInviteAttribution(ctx context.Context, invitedUserID int64) (*userv1.InviteAttribution, error) {
	resp, err := s.client.GetInviteAttribution(ctx, &userv1.GetInviteAttributionRequest{
		Meta: &userv1.RequestMeta{
			RequestId: "invite-activity-attribution",
			Caller:    "activity-service",
			AppCode:   appcode.FromContext(ctx),
		},
		InvitedUserId: invitedUserID,
	})
	if err != nil {
		return nil, err
	}
	return resp.GetAttribution(), nil
}
