Skip to content
This repository has been archived by the owner on Nov 7, 2024. It is now read-only.

himmel520/PGPro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание

Запуск

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 ''

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published