Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/himmel520/pgpro
https://github.com/himmel520/pgpro
Last synced: 6 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/himmel520/pgpro
- Owner: himmel520
- Created: 2024-05-14T18:48:02.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2024-08-21T18:53:48.000Z (3 months ago)
- Last Synced: 2024-08-21T21:11:45.487Z (3 months ago)
- Language: Go
- Size: 113 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Тестовое задание
## Запуск
```shell
docker compose build
docker compose up
```## Выполнено
- Базовый функционал
- Поддержка долгих команд
- Сборка приложения (Dockerfile, compose.yml)## Произвольный функционал
- Swagger docs: http://localhost:8000/swagger/index.html
- Валидация id(uuid)
- Новые endpoints:
- Обновление команды по id
- Получение информации о выполнении команды по ее id
- Удаление команды и связанной с ней информации по id## Архитектура приложения:
Handlers Layer: Обрабатывает все запросы к API, соответствующие различным маршрутам.
- Проверка доступности сервера: ```GET /api/v1/ping```
- Получение списка всех команд: ```GET /api/v1/commands/```
- Получение информации о команде по её id: ```GET /api/v1/commands/:id```
- Получение вывода выполнения команды по её id: ```GET /api/v1/commands/:id/info```
- Создание новой команды: ```POST /api/v1/commands/```
- Удаление команды и связанной с ней информации по её id: ```DELETE /api/v1/commands/:id```
- Остановка выполнения команды по её id: ```POST /api/v1/commands/:id/stop```
- Обновление информации о команде по её id: ```PUT /api/v1/commands/:id```Service Layer: Включает в себя репозиторий для работы с базой данных и исполнитель для запуска команд.
- Runner: Отвечает за запуск и управление выполнением команд. Создаёт новый процесс для выполнения команды. Позволяет добавлять новые команды, запускать их, останавливать, а также получать вывод выполнения и статус завершения команды.Repository Layer: Отвечает за взаимодействие с базой данных.
## Postgres
Таблица: commands
| Поле | Тип | Обязательность | Значение по умолчанию |
|-------------------|------------------|------------------|------------------|
| id | UUID | PRIMARY KEY |gen_random_uuid() |
| name | VARCHAR(64) | NOT NULL | |
| description | TEXT | | |
| script | TEXT | NOT NULL | |Таблица: commands_info
| Поле | Тип | Обязательность | Значение по умолчанию |
|-------------------|------------------|------------------|------------------|
| id | UUID | PRIMARY KEY | gen_random_uuid() |
| commands_id | UUID | REFERENCES commands(id) | |
| start_time | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP |
| end_time | TIMESTAMP | | NULL |
| exitcode | INTEGER | | 0 |
| output | TEXT | | '' |