Skip to main content
Glama
Southclaws

Storyden

by Southclaws
liker.go1.83 kB
package post_liker import ( "context" "github.com/rs/xid" "github.com/Southclaws/storyden/app/resources/account" "github.com/Southclaws/storyden/app/resources/like/like_writer" "github.com/Southclaws/storyden/app/resources/message" "github.com/Southclaws/storyden/app/resources/post" "github.com/Southclaws/storyden/app/resources/post/post_querier" "github.com/Southclaws/storyden/app/resources/post/thread_cache" "github.com/Southclaws/storyden/internal/infrastructure/pubsub" ) type PostLiker struct { likeWriter *like_writer.LikeWriter postQuerier *post_querier.Querier bus *pubsub.Bus cache *thread_cache.Cache } func New( likeWriter *like_writer.LikeWriter, postQuerier *post_querier.Querier, bus *pubsub.Bus, cache *thread_cache.Cache, ) *PostLiker { return &PostLiker{ likeWriter: likeWriter, postQuerier: postQuerier, bus: bus, cache: cache, } } func (l *PostLiker) AddPostLike(ctx context.Context, accountID account.AccountID, postID post.ID) error { postRef, err := l.postQuerier.Probe(ctx, postID) if err != nil { return err } if err := l.cache.Invalidate(ctx, xid.ID(postRef.Root)); err != nil { return err } err = l.likeWriter.AddPostLike(ctx, accountID, postID) if err != nil { return err } l.bus.Publish(ctx, &message.EventPostLiked{ PostID: postID, }) return nil } func (l *PostLiker) RemovePostLike(ctx context.Context, accountID account.AccountID, postID post.ID) error { postRef, err := l.postQuerier.Probe(ctx, postID) if err != nil { return err } if err := l.cache.Invalidate(ctx, xid.ID(postRef.Root)); err != nil { return err } err = l.likeWriter.RemovePostLike(ctx, accountID, postID) if err != nil { return err } l.bus.Publish(ctx, &message.EventPostUnliked{ PostID: postID, }) return nil }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Southclaws/storyden'

If you have feedback or need assistance with the MCP directory API, please join our Discord server