You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
KostLinux 151aaffad6 fix: prettier linter 1 month ago
..
README.md fix: prettier linter 1 month ago

README.md

Software Engineer - Game Task

Tools and technologies used:

  1. Go
  2. PostgreSQL
  3. Docker
  4. Makefile
  5. Postman

All database tables are in migrations folder. To run them, use make command.

  1. make migrate-up - to run up migrations
  2. make migrate-down - to run down migrations
  3. make migrate-force - to force run migrations if you have some errors like error: Dirty database version -1. Fix and force version.

Tables:

  1. users - contains users data
  2. transaction - contains transactions data

Endpoints to test:

  1. GET /users - to get all users
  2. GET /users/{user_id} - to get user by id, check his balance
  3. GET /transactions/{user_id} - to get all transactions by user id (check if user has any transactions)
  4. POST /process-record/{user_id} - to process record by user id

Process record request body example:

{
    "amount": 10,
    "transaction_id": "64338a05-81e5-426b-b01e-927e447c9e33",
    "state": "win"
}

Transaction id is unique, so you can't process the same transaction twice, provide UUID v4 format. State can be win or lose. Amount is a number should be positive but to have a negative balance you should provide a lose state.

Required header for all endpoints:

  1. Source-Type: game - available values: game, server, payment

Postman collection is in postman folder to test endpoints.

To run the app locally:

  1. Create .env file in root folder and add all required variables from .env.example file
  2. To run migrations you should have migrate tool installed. You can install it with brew install golang-migrate (https://github.com/golang-migrate/migrate/tree/master/cmd/migrate)
  3. To run any make command you should have make tool installed. You can install it with sudo apt install make command (https://linuxhint.com/install-make-ubuntu/)
  4. Run make migrate-up command to run migrations and create all tables with test user (user_id: 63e83104-b9a7-4fec-929e-9d08cae3f9b9)
  5. Run make run command to run application
  6. Take a look at postman folder to take collection for testing all endpoints

Test user with id 63e83104-b9a7-4fec-929e-9d08cae3f9b9 will be created automatically when you run migrations. This user has 50 amount of his balance for testing.

To run application in docker container:

  1. Create .env file in root folder and add all required variables from .env.example file
  2. To run docker container you should have docker and docker-compose tools installed (Tested on Docker version 26.1.3, build b72abbb and Docker Compose version v2.27.1)
  3. docker-compose up - to run application in docker container
  4. docker-compose down - to stop application in docker container