timoth-y/kicksware-api

View on GitHub
services/users/api/gRPC/interact.go

Summary

Maintainability
A
0 mins
Test Coverage
package gRPC

import (
    "context"

    "go.kicksware.com/api/shared/util"

    "go.kicksware.com/api/services/users/api/gRPC/proto"
    "go.kicksware.com/api/services/users/usecase/business"
)

func (h *Handler) Like(ctx context.Context, request *proto.LikeRequest) (resp *proto.LikeResponse, err error) {
    userID, ok := getLikeUserID(ctx, request); if !ok {
        return nil, business.ErrUserNotFound
    }
    err = h.interact.Like(userID, request.EntityID)
    resp = &proto.LikeResponse{
        Success: err == nil,
        Error: util.GetErrorMsg(err),
    }
    return
}

func (h *Handler) Unlike(ctx context.Context, request *proto.LikeRequest) (resp *proto.LikeResponse, err error) {
    userID, ok := getLikeUserID(ctx, request); if !ok {
        return nil, business.ErrUserNotFound
    }
    err = h.interact.Unlike(userID, request.EntityID)

    resp = &proto.LikeResponse{
        Success: err == nil,
        Error: util.GetErrorMsg(err),
    }
    return
}

func getLikeUserID(ctx context.Context, request *proto.LikeRequest) (string, bool) {
    userID := request.UserID
    if id, ok := util.RetrieveUserID(ctx); ok {
        userID = id
    }; if len(userID) == 0 {
        return "", false
    }
    return userID, true
}