package like import ( "context" "tercul/internal/domain" ) // LikeCommands contains the command handlers for the like aggregate. type LikeCommands struct { repo domain.LikeRepository } // NewLikeCommands creates a new LikeCommands handler. func NewLikeCommands(repo domain.LikeRepository) *LikeCommands { return &LikeCommands{repo: repo} } // CreateLikeInput represents the input for creating a new like. type CreateLikeInput struct { UserID uint WorkID *uint TranslationID *uint CommentID *uint } // CreateLike creates a new like. func (c *LikeCommands) CreateLike(ctx context.Context, input CreateLikeInput) (*domain.Like, error) { like := &domain.Like{ UserID: input.UserID, WorkID: input.WorkID, TranslationID: input.TranslationID, CommentID: input.CommentID, } err := c.repo.Create(ctx, like) if err != nil { return nil, err } return like, nil } // DeleteLike deletes a like by ID. func (c *LikeCommands) DeleteLike(ctx context.Context, id uint) error { return c.repo.Delete(ctx, id) }