Skip to content

Instantly share code, notes, and snippets.

View varugasu's full-sized avatar

Lucas Vargas varugasu

View GitHub Profile
type User struct {
ID int64
IsFamous bool
tweetFactory TweetFactory
}
func (u *User) CreateTweet(content string) (Tweet, error) {
tweet := u.tweetFactory.NewTweet(*u, content)
type TweetFactory struct {
lazyRepository func() TweetRepository
}
func (t *TweetFactory) NewTweet(user User, content string) *Tweet {
charactersLimit := 140
if user.IsFamous {
charactersLimit = 280
}
func NewTweet(user User, content string, repository TweetRepository) *Tweet {
return &Tweet{Content: content, User: user, repository: repository}
}
func (u *User) CreateTweet(content string) (Tweet, error) {
charactersLimit := 140
if u.IsFamous {
charactersLimit = 280
}
func (u *UserService) CreateTweet(user model.User, content string) error {
tweet, err := user.CreateTweet(content)
if err != nil {
u.logger.Error("could not create tweet", err)
return err
}
u.logger.Debug("tweet created")
u.eventPublisher.PublishTweet("TWEET_CREATED", tweet)
package model
import "fmt"
type User struct {
ID int64
IsFamous bool
tweetRepository TweetRepository
}
func (u *UserService) CreateTweet(user User, tweet string) error {
charactersLimit := 140
if user.IsFamous {
charactersLimit := 280
}
if len(tweet) > charactersLimit {
err := fmt.Errorf(
"max characters exceeded. Received: %d. Max: %d",
len(tweet), charactersLimit,
func (u *UserService) CreateTweet(user User, tweet string) error {
charactersLimit := 140
if user.IsFamous {
charactersLimit := 280
}
if len(tweet) > charactersLimit {
return fmt.Errorf(
"max characters exceeded. Received: %d. Max: %d",
len(tweet), charactersLimit,
@varugasu
varugasu / main.go
Last active August 21, 2021 19:50
[Golang RabbitMQ] Using the Mandatory flag and getting the Basic.Return response
package main
import (
"log"
"os"
"github.com/davecgh/go-spew/spew"
"github.com/joho/godotenv"
"github.com/streadway/amqp"
)
@varugasu
varugasu / hello_rabbitmq_world.go
Last active August 20, 2021 11:57
Hello World in RabbitMQ
package main
import (
"fmt"
"log"
"os"
"github.com/joho/godotenv"
"github.com/streadway/amqp"
)
@varugasu
varugasu / main.go
Created March 11, 2021 11:37
Golang HTTP Context With Value
package main
import (
"context"
"encoding/json"
"log"
"net/http"
"time"
"github.com/google/uuid"