ArkovKonstantin / user-balance-api

Микросервис для работы с балансом пользователей

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

user-balance-api

Микросервис для работы с балансом пользователейAPI методы

Оглавление

  1. Запуск приложения
  2. API методы
  3. База данных
$ git clone https://github.com/ArkovKonstantin/user-balance-api.git
$ cd user-balance-api
$ make test
$ make run

Приложение будет доступно по адресу http://localhost:9000

Метод начисления средств на баланс

Request

curl --request POST \
  --url http://localhost:9000/balance/add \
  --header 'content-type: application/json' \
  --data '{
	"user_id": 1,
	"amount": 10
}'

Responses:

  • HTTP/1.1 200 OK
{
  "user_id": 1,
  "balance": 10
}

Метод списания средств с баланса

Request

curl --request POST \
  --url http://localhost:9000/balance/sub \
  --header 'content-type: application/json' \
  --data '{
	"user_id": 1,
	"amount": 5
}'

Responses:

  • HTTP/1.1 200 OK
{
  "user_id": 1,
  "balance": 5
}

Метод перевода средств от пользователя к пользователю

Request

curl --request POST \
  --url http://localhost:9000/transfer \
  --header 'content-type: application/json' \
  --data '{
	"sender_id": 1,
	"recipient_id": 2,
	"amount": 5
}'

Responses:

  • HTTP/1.1 200 OK
{
  "sender": {
    "user_id": 1,
    "balance": 0
  },
  "recipient": {
    "user_id": 2,
    "balance": 5
  }
}

Метод получения текущего баланса пользователя

Request

curl --request GET \
  --url 'http://localhost:9000/balance/get?user_id=1'

Responses:

  • HTTP/1.1 200 OK
{
  "user_id": 1,
  "balance": 0
}

Схема

Image

Сущности

User
Пользователь приложения

  • id - уникальный идентификатор пользователя
  • name - имя пользователя

Account
Счет пользователя

  • id - идентификатор счета
  • user_id - идентификатор пользователя, которому принадлежит счет (между таблицей User и Account установлена связь 1:1)
  • balance - баланс отображает кол-во денег на счету у пользователя (в рублях)

Opeartion
Совершенные операции, касающиеся изменения баланса пользователя

  • id - уникальный идентификатор операции
  • member - идентификатор пользователя, чей баланс был изменен
  • created_at - время совершенной операции
  • meta - мета информация об операции (ex: тип, назначение(для перевода), описание)

Листинг скрипта, инициализирующего базу данных

create table "user"
(
    id   serial primary key,
    name varchar
);

create table "account"
(
    id      serial,
    user_id int primary key references "user" (id),
    balance int
        constraint positive_balance CHECK (balance >= 0)
);

create table "operation"
(
    id         serial primary key,
    member     int references "user" (id),
    created_at timestamp default now(),
    meta       json
);

-- create users
insert into "user" (name)
values ('kolya'),
       ('petya'),
       ('vasya'),
       ('tanya');

About

Микросервис для работы с балансом пользователей


Languages

Language:Go 98.0%Language:Makefile 1.1%Language:Dockerfile 0.9%