tigris-starter-go

command module
v0.0.0-...-3ecf305 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 21, 2022 License: Apache-2.0 Imports: 9 Imported by: 0

README

Tigris Getting Started Golang Application

The code in this repo shows how to integrate Tigris with the backend of microservice architecture application, using simplified eCommerce service implementation.

For more information please refer to: Tigris documentation

Clone the repo

git clone https://github.com/tigrisdata/tigris-starter-go.git
cd tigris-starter-go

Install Tigris CLI

macOS
curl -sSL https://tigris.dev/cli-macos | sudo tar -xz -C /usr/local/bin
Linux
curl -sSL https://tigris.dev/cli-linux | sudo tar -xz -C /usr/local/bin

Start local Tigris instance

tigris local up

Compile and start the application

go build .
./tigris-starter-go

Test the application in new terminal window

Insert users

Run following commands to create two users: Jane and John

curl localhost:8080/users/create \
    -X POST \
    -H 'Content-Type: application/json' \
    -d '{"Name":"John","Balance":100}'
    
curl localhost:8080/users/create \
    -X POST \
    -H 'Content-Type: application/json' \
    -d '{"Name":"Jane","Balance":200}'
Insert products

Run the following commands to insert two products: Avocado and Gold

curl localhost:8080/products/create \
    -X POST \
    -H 'Content-Type: application/json' \
    -d '{"Name":"Avocado","Price":10,"Quantity":5}'
    
curl localhost:8080/products/create \
    -X POST \
    -H 'Content-Type: application/json' \
    -d '{"Name":"Gold","Price":3000,"Quantity":1}'
Place some orders
Low balance

Let's start off with an order that fails because John is trying to purchase 1 unit of Gold that costs $3000.00, while John's balance is $100.00.

curl http://localhost:8080/orders/create \
      -X POST \
      -H 'Content-Type: application/json' \
      -d '{"UserId":1,"Products":[{"Id":2,"Quantity":1}]}'
Low stock

The next order fails as well because Jane is trying to purchase 10 Avocados, but there is only 5 in the stock.

curl http://localhost:8080/orders/create \
      -X POST \
      -H 'Content-Type: application/json' \
      -d '{"UserId":2,"Products":[{"Id":1,"Quantity":10}]}'
Successful purchase

Now an order that succeeds as John purchases 5 Avocados that cost $50.00 and John's balance is $100.00, which is enough for the purchase.

curl http://localhost:8080/orders/create \
      -X POST \
      -H 'Content-Type: application/json' \
      -d '{"UserId":1,"Products":[{"Id":1,"Quantity":5}]}'
Check the balances and stock

Now go ahead and confirm that both John's balance and the Avocado stock is up-to-date.

curl http://localhost:8080/users/read/1
curl http://localhost:8080/products/read/1
curl http://localhost:8080/orders/read/1

Now, search for users

curl http://localhost:8080/users/search \
    -X POST \
    -H 'Content-Type: application/json' \
    -d '{"q":"john"}'

Or search for products named "avocado"

curl localhost:8080/products/search \
    -X POST \
    -H 'Content-Type: application/json' \
    -d '{
        "q": "avocado",
        "searchFields": ["Name"]
      }'

License

This software is licensed under the Apache 2.0.

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL