github.com/k0marov/go-socnet@v0.0.0-20220715154813-90d07867c782/core/abstract/ownable_likeable/contexters/contexters.go (about)

     1  package contexters
     2  
     3  import (
     4  	"github.com/k0marov/go-socnet/core/abstract/likeable"
     5  	"github.com/k0marov/go-socnet/core/general/core_err"
     6  	"github.com/k0marov/go-socnet/core/general/core_values"
     7  )
     8  
     9  type OwnLikeContext struct {
    10  	IsLiked bool
    11  	IsMine  bool
    12  }
    13  
    14  type OwnLikeContextGetter func(target string, owner, caller core_values.UserId) (OwnLikeContext, error)
    15  
    16  func NewOwnLikeContextGetter(checkLiked likeable.LikeChecker) OwnLikeContextGetter {
    17  	return func(target string, owner, caller core_values.UserId) (OwnLikeContext, error) {
    18  		isLiked, err := checkLiked(target, caller)
    19  		if err != nil {
    20  			return OwnLikeContext{}, core_err.Rethrow("checking if target is liked", err)
    21  		}
    22  		return OwnLikeContext{
    23  			IsLiked: isLiked,
    24  			IsMine:  caller == owner,
    25  		}, nil
    26  	}
    27  }