github.com/k0marov/go-socnet@v0.0.0-20220715154813-90d07867c782/features/comments/domain/contexters/contexters.go (about) 1 package contexters 2 3 import ( 4 likeable_contexters "github.com/k0marov/go-socnet/core/abstract/ownable_likeable/contexters" 5 "github.com/k0marov/go-socnet/core/general/core_err" 6 "github.com/k0marov/go-socnet/core/general/core_values" 7 8 "github.com/k0marov/go-socnet/core/helpers" 9 "github.com/k0marov/go-socnet/features/comments/domain/entities" 10 profile_service "github.com/k0marov/go-socnet/features/profiles/domain/service" 11 ) 12 13 type CommentContextAdder func(comment entities.Comment, caller core_values.UserId) (entities.ContextedComment, error) 14 type CommentListContextAdder func(comments []entities.Comment, caller core_values.UserId) ([]entities.ContextedComment, error) 15 16 func NewCommentContextAdder(getProfile profile_service.ProfileGetter, getContext likeable_contexters.OwnLikeContextGetter) CommentContextAdder { 17 return func(comment entities.Comment, caller core_values.UserId) (entities.ContextedComment, error) { 18 author, err := getProfile(comment.AuthorId, caller) 19 if err != nil { 20 return entities.ContextedComment{}, core_err.Rethrow("getting author of comment", err) 21 } 22 context, err := getContext(comment.Id, author.Id, caller) 23 if err != nil { 24 return entities.ContextedComment{}, core_err.Rethrow("getting context data of a comment", err) 25 } 26 return entities.ContextedComment{ 27 Comment: comment, 28 Author: author, 29 OwnLikeContext: context, 30 }, nil 31 } 32 } 33 34 func NewCommentListContextAdder(addContext CommentContextAdder) CommentListContextAdder { 35 return func(comments []entities.Comment, caller core_values.UserId) (ctxComments []entities.ContextedComment, err error) { 36 return helpers.MapForEachWithErr(comments, func(comm entities.Comment) (entities.ContextedComment, error) { 37 return addContext(comm, caller) 38 }) 39 } 40 }