Shop API
Published by Pakphom Promsean.
About Shop API
So this project is going to act like CRUD project + OAuth2.
Features of Shop API
- Item Shop
- Item Managing
- Inventory
- Player Coin
- OAuth2
- Player Login
- Admin Login
- Logout
- Middleware
- Player Authorize
- Admin Authorize
Architecture
ER Diagram
Start PostgreSQL on Docker
-
Pull the PostgreSQL image
docker pull postgres:alpine
-
Start the PostgreSQL container
docker run --name shopdb -p 5432:5432 -e POSTGRES_PASSWORD=123456 -d postgres:alpine
-
Create the Shop Database
docker exec -it shopdb bash
psql -U postgres
CREATE DATABASE shopdb;
-
In case you need to delete the database
DROP DATABASE shopdb;
Database Migration
go run ./databases/migration/migratedb.go
config.yaml Example
server:
port: 8080
allowOrigins:
- "*"
bodyLimit: "10M"
timeout: 30
oauth2:
playerRedirectUrl: "http://localhost:8080/v1/oauth2/google/player/login/callback"
adminRedirectUrl: "http://localhost:8080/v1/oauth2/google/admin/login/callback"
clientId: "xxxxx.apps.googleusercontent.com"
clientSecret: "xxxxx"
endpoints:
authUrl: "https://accounts.google.com/o/oauth2/auth?access_type=offline&approval_prompt=force"
tokenUrl: "https://oauth2.googleapis.com/token"
deviceAuthUrl: "https://oauth2.googleapis.com/device/code"
scopes:
- "https://www.googleapis.com/auth/userinfo.email"
- "https://www.googleapis.com/auth/userinfo.profile"
userInfoUrl: "https://www.googleapis.com/oauth2/v2/userinfo"
revokeUrl: "https://accounts.google.com/o/oauth2/revoke"
database:
host: localhost
port: 5432
user: postgres
password: 168
dbname: shopdb
sslmode: disable
schema: public
Start Shop API using Docker
Let's see the IPv4 of our database container first by this follwing command.
docker network inspect bridge
Then copy the IPv4 of shopdb to change the host of database in the config.yaml.
And now let's build and start the shop-api through the Docker.
docker build -t shop-api:v1.0.0 .
docker run --name shop-api -v /path/to/config-folder:/app/etc -d shop-api:v1.0.0
Postman Collection and ENV