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.