Usage
$ git clone https://github.com/NasSilverBullet/twitter-clone-api.git
$ cd twitter-clone-api
$ docker-compose up
$ docker-compose run --rm db db/cli up
$ docker-compose run --rm db db/cli seed
$ curl -s localhost:8080/users/1 | jq -r
{
"id": 1,
"name": "Luke Skywalker",
"email": "luke@example.com",
"created": "2019-11-09T17:51:01+09:00",
"updated_at": "2019-11-09T17:51:01+09:00",
"deleted_at": "0001-01-01T00:00:00Z"
}
Architecture

Refs: https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
$ tree -a -I "\.DS_Store|\.git"
.
βββ .env
βββ .gitignore
βββ .realize.yaml
βββ LICENSE.txt
βββ README.md
βββ app
βΒ Β βββ entities
βΒ Β βΒ Β βββ user.go
βΒ Β βββ frameworks
βΒ Β βΒ Β βββ env.go
βΒ Β βΒ Β βββ logger.go
βΒ Β βΒ Β βββ router.go
βΒ Β βΒ Β βββ sql_handler.go
βΒ Β βΒ Β βββ validator.go
βΒ Β βββ interfaces
βΒ Β βΒ Β βββ logger.go
βΒ Β βΒ Β βββ sql_handler.go
βΒ Β βΒ Β βββ user_handler.go
βΒ Β βΒ Β βββ user_repository.go
βΒ Β βΒ Β βββ user_repository_test.go
βΒ Β βΒ Β βββ validator.go
βΒ Β βββ main.go
βΒ Β βββ usecases
βΒ Β βββ user_interactor.go
βΒ Β βββ user_interactor_test.go
βΒ Β βββ user_repository.go
βββ db
βΒ Β βββ cli
βΒ Β βββ migrations
βΒ Β βΒ Β βββ 20191106231421_create_users_table.down.sql
βΒ Β βΒ Β βββ 20191106231421_create_users_table.up.sql
βΒ Β βββ seeds
βΒ Β βββ users_table.sql
βββ docker
βΒ Β βββ app
βΒ Β βΒ Β βββ Dockerfile
βΒ Β βββ db
βΒ Β βββ Dockerfile
βΒ Β βββ my.cnf
βββ docker-compose.yml
βββ go.mod
βββ go.sum
HTTP methods
List | GET /users | N/A | Users |
Get | GET /users/{id} | N/A | User |
Create | POST /users | User | UserID |
CURL exmaple
$ curl localhost:8080/users
$ curl localhost:8080/users/1
$ curl localhost:8080/users \
-H 'Content-Type: application/json' \
-d '{"name":"Obi-Wan Kenobi","email":"obi-wan@example.com"}'
License
MIT License. See LICENSE.txt for more information.