https://github.com/zhayt/cert
docker docker-compose golang postgresql redis swagger
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/zhayt/cert
- Owner: zhayt
- Created: 2024-02-08T07:14:35.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-03-06T07:17:46.000Z (about 1 year ago)
- Last Synced: 2025-01-10T09:12:08.852Z (4 months ago)
- Topics: docker, docker-compose, golang, postgresql, redis, swagger
- Language: Go
- Homepage:
- Size: 8.73 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# CERT
Это сервис REST API, реализованный на языке Golang. Сервис предоставляет различные конечные точки для выполнения различных операций, начиная от простого CRUD и заканчивая анализом текста и вычислением хэша на основе запросов. Сервис интегрируется с PostgreSQL и Redis.Также проект покрыт юнит-тестами, тесты написаны для всех слоев.
# How to run
### Предварительные требования
- Установленный Docker
- Установленный Docker Compose
## Установка и Запуск приложения1. Клонируйте репозиторий проекта на свой компьютер:
```shell
git clone https://github.com/zhayt/cert-tz
```
2. Перейдите в директорию проекта:
```shell
cd ./cert-tz
```
3. Запустите приложение с помощью Docker Compose:
```shell
docker-compose up --build
```
или
```shell
./scripts/app/run.sh
```
4. Чтобы остановить приложение, выполните команду:
```shell
docker-compose down
```### API Endpoints
#### ** Формат обмена данными JSON. Есть Testrequests.http file для проверки работы эндпойнтов**
#### Swagger документация доступна по адресу http://localhost:8000/swagger/
1. **/rest/substr**
- **POST /rest/substr/find** - endpoint для нахождения заданной подстроки. Строка
передаеться в теле HTTP запроса.
2. **/rest/email**
- **POST /rest/email/check** - endpoint, которая анализирует тело HTTP запроса и
выдает все найденные email адреса.
3. **/rest/iin**
- **POST /rest/iin/check** - endpoint, которая анализирует тело HTTP запроса и
выдает все найденные валидные иин.4. **/rest/counter**
- **POST /rest/counter/add/$i** - увеличивает счетчика на ($i), i целое число.
- **POST /rest/counter/sub/$i** - уменьшает счетчика на ($i), i целое число.
- **GET /rest/counter/val** - выводит текущее значение счетчика.5. **/rest/user**
- **POST /rest/user** - Создает нового пользователя с полями first_name и last_name. Возвращает идентификатор, присвоенный пользователю.
- **GET /rest/user/:id** - Достает пользователя (first name, last name).
- **PUT /rest/user/:id** - Обновляет пользователя по индентификатору i, данные передается в теле HTTP запроса.
- **DELETE /rest/user/:id** - Удоляет пользователя по индентификатору i.6. **/rest/hash**
- **POST /rest/hash/calc** - Отправляет запрос на вычисление хэша для предоставленных в теле запроса данных. Возвращается уникальный идентификатор запроса.
- **GET /rest/hash/result/$id** - Получение результата для запроса с указанным идентификатором ($id). Возвращает "PENDING", если результат еще не вычислен, или хэш-значение, если вычисление завершено.
Одновременное вычисления хеша ограничена константой N, N = 3.## Testing
Запуск unit тестов
```shell
go test -cover ./...
```
Перед выполнением тестов для конечных точек /rest/user и /rest/counter, соответственно, убедитесь, что проты 5432 и 6379 не заняты. Поскольку тестконтейнеры будут подниматься на эти порты