package logic import ( "context" "errors" "juwan-backend/app/community/rpc/internal/svc" "juwan-backend/app/community/rpc/pb" "github.com/zeromicro/go-zero/core/logx" ) type UpdatePostLikesLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewUpdatePostLikesLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdatePostLikesLogic { return &UpdatePostLikesLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } func (l *UpdatePostLikesLogic) UpdatePostLikes(in *pb.UpdatePostLikesReq) (*pb.UpdatePostLikesResp, error) { if in.PostId == nil || in.UserId == nil { return nil, errors.New("postId and userId are required") } postID := in.GetPostId() userID := in.GetUserId() store := l.svcCtx.Store store.Mu.Lock() defer store.Mu.Unlock() if _, ok := store.Posts[postID]; !ok { return nil, errors.New("post not found") } key := postLikeKey(postID, userID) store.PostLikes[key] = &pb.PostLikes{ PostId: postID, UserId: userID, CreatedAt: nowUnix(in.GetCreatedAt()), } return &pb.UpdatePostLikesResp{}, nil }