Skip to content

Instantly share code, notes, and snippets.

@percybolmer
Created August 31, 2021 06:55
Show Gist options
  • Save percybolmer/45e374c2cbfb760f45678b8eb0b97276 to your computer and use it in GitHub Desktop.
Save percybolmer/45e374c2cbfb760f45678b8eb0b97276 to your computer and use it in GitHub Desktop.
// Package main runs the tavern and performs an Order
package main
import (
"github.com/google/uuid"
"github.com/percybolmer/tavern/domain/product"
"github.com/percybolmer/tavern/services/order"
servicetavern "github.com/percybolmer/tavern/services/tavern"
)
func main() {
products := productInventory()
// Create Order Service to use in tavern
os, err := order.NewOrderService(
order.WithMongoCustomerRepository("mongodb://localhost:27017"),
order.WithMemoryProductRepository(products),
)
if err != nil {
panic(err)
}
// Create tavern service
tavern, err := servicetavern.NewTavern(
servicetavern.WithOrderService(os))
if err != nil {
panic(err)
}
uid, err := os.AddCustomer("Percy")
if err != nil {
panic(err)
}
order := []uuid.UUID{
products[0].GetID(),
}
// Execute Order
err = tavern.Order(uid, order)
if err != nil {
panic(err)
}
}
func productInventory() []product.Product {
beer, err := product.NewProduct("Beer", "Healthy Beverage", 1.99)
if err != nil {
panic(err)
}
peenuts, err := product.NewProduct("Peenuts", "Healthy Snacks", 0.99)
if err != nil {
panic(err)
}
wine, err := product.NewProduct("Wine", "Healthy Snacks", 0.99)
if err != nil {
panic(err)
}
products := []product.Product{
beer, peenuts, wine,
}
return products
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment