github.com/k0marov/go-socnet@v0.0.0-20220715154813-90d07867c782/features/posts/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/posts/domain/entities" 10 profile_service "github.com/k0marov/go-socnet/features/profiles/domain/service" 11 ) 12 13 type PostContextAdder func(post entities.Post, caller core_values.UserId) (entities.ContextedPost, error) 14 type PostListContextAdder func(posts []entities.Post, caller core_values.UserId) ([]entities.ContextedPost, error) 15 16 func NewPostContextAdder(getProfile profile_service.ProfileGetter, getContext likeable_contexters.OwnLikeContextGetter) PostContextAdder { 17 return func(post entities.Post, caller core_values.UserId) (entities.ContextedPost, error) { 18 author, err := getProfile(post.PostModel.AuthorId, caller) 19 if err != nil { 20 return entities.ContextedPost{}, core_err.Rethrow("getting author of post", err) 21 } 22 context, err := getContext(post.Id, author.Id, caller) 23 if err != nil { 24 return entities.ContextedPost{}, core_err.Rethrow("getting context of post", err) 25 } 26 ctxPost := entities.ContextedPost{ 27 Post: post, 28 OwnLikeContext: context, 29 Author: author, 30 } 31 return ctxPost, nil 32 } 33 } 34 35 func NewPostListContextAdder(addContext PostContextAdder) PostListContextAdder { 36 return func(posts []entities.Post, caller core_values.UserId) ([]entities.ContextedPost, error) { 37 return helpers.MapForEachWithErr(posts, func(post entities.Post) (entities.ContextedPost, error) { 38 return addContext(post, caller) 39 }) 40 } 41 }