Skip to content

Latest commit

 

History

History
106 lines (75 loc) · 8.46 KB

README.md

File metadata and controls

106 lines (75 loc) · 8.46 KB

Планировщик.

  • В данном проекте также реализовано:
    • Возможность определять порт, если есть переменная окружения TODO_PORT.
    • Возможность определять путь к файлу базы данных, если есть переменная окружения TODO_DBFILE.
    • Назначение задачи в указанные дни недели.
    • Назначение задачи в указанные дни месяца, с возможностью указания конкретных месяцев.
    • Реализован поиск1, независимо от регистра, по полям TITLE и COMMENT.
    • Простейшая аутентификация, через переменную окружения TODO_PASSWORD.
    • Реализован Dockerfile для создания образа.

Программа выполняет функции планировщика, который возвращает следующую дату выполнения задачи в зависимости от переданных параметров её повторения.

Инструкция по локальному запуску и информация по приложению.
Инструкция по созданию Docker образа и запуску контейнера.
Инструкция по запуску SQLite в терминале внутри запущенного контейнера.

logo


Инструкция по локальному запуску и информация по приложению.

Пароль по-умолчанию для планировщика назначен: qwerty
По-умолчанию приложение запускается: 0.0.0.0:7540
База создаётся c названием и путём: internal/storage_db/scheduler.db
Стандартные настройки для сервера лежат: internal/config/server_conf.go
Стандартные настройки для тестов лежат: internal/config/settings.go
Переменные окружения и их описание, хранятся в файле корня проекта: .env
Для генерации кода работы с базами данных, был использован: SQLC2

  • Программу можно запускать двумя способами через терминал.
    • Обычные команды.
    • Короткими командами из TaskFile.

Для изменения стандартных параметров, как и пароля, нужно изменить TODO_PORT, TODO_DBFILE или TODO_PASSWORD в .env файле корня проекта.

  • Для запуска приложения в терминале.
    go run ./... или task run
  • Для запуска тестов в терминале.
    go test -v ./... -count=1 или task test

Путь для тестов, назначается в .env отдельно от основного для программы, должен совпадать с основным, но иметь свой выход на расположение базы данных. При изменении TODO_DBFILE необходимо также менять значения в TODO_DBFILE_TEST.

!!! ЗАПУСК ТЕСТОВ УДАЛЯЕТ ВСЕ ДАННЫЕ ИЗ БАЗЫ ДАННЫХ !!!


Инструкция по созданию Docker образа и запуску контейнера.

  1. Первым шагом собрать образ.
  • Для запуска сборки Docker.
    docker build -t scheduler_app:v1 . или task d_build
  1. Вторым шагом, запустить необходимым способом.
  • Обычный запуск с портом по-умолчанию, при изменении 7540 страница планировщика открываться не будет, сервер так и останется на 7540 порте.
    docker run --name="sched_app" -d -p 7540:7540 scheduler_app:v1

  • Для изменения стандартного порта необходимо передать TODO_PORT и указать его в -p, тогда сервер будет доступен на переданном порте.
    docker run --name="sched_app" -e "TODO_PORT=7544" -d -p 7544:7544 scheduler_app:v1

  • Запустит контейнер на порт указанный в Dockerfile EXPOSE 7540.
    docker run --name="sched_app" -d -P scheduler_app:v1

  • Для изменения стандартного пароля необходимо передать TODO_PASSWORD, тогда стандартный пароль будет изменен и можно войти по своему.
    docker run --name="sched_app" -e "TODO_PASSWORD=yourPass" -d -p 7540:7540 scheduler_app:v1

  • Для изменения стандартного пути необходимо передать TODO_DBFILE, тогда приложение создаст базу данных в соответствии с переданными, включая название базы.
    docker run --name="sched_app" -e "TODO_DBFILE=internal/yourPath/yourName.db" -d -p 7540:7540 scheduler_app:v1

  • Если необходимо изменить все стандартные значения. При изменении порта, обязательно передавать такое же значение через -p.
    docker run --name="sched_app" -e "TODO_DBFILE=internal/yourPath/yourName.db" -e "TODO_PASSWORD=yourPass" -e "TODO_PORT=7544" -d -p 7544:7544 scheduler_app:v1

  • Запуск в интерактивном режиме, только при запущенном контейнере.
    docker exec -it sched_app /bin/bash

  1. Остановить контейнер после использования.
  • Остановка контейнера.
    docker stop sched_app
  1. Запускать уже собранный и остановленный контейнер по необходимости, чтобы получать сохраненные данные.
  • Запуск уже собранного и остановленного контейнера.
    docker start sched_app


Инструкция по запуску SQLite в терминале внутри запущенного контейнера

Если имя таблицы и путь не изменялись, то запуск бинарника сразу откроет базу данных "scheduler.db". И можно работать с таблицей.

Для этого необходимо, при стандартных настройках:

  1. Запустить контейнер одним из обычных способов запуска Docker образа.
  2. При запущенном контейнере выполнить docker exec -it sched_app /bin/bash команду.
  3. Должна открыться консоль bash-5.1$ .
  4. Выполнить команду ./run_sqlite.sh и попадёте внутрь программы SQLite.
  5. Для выхода написать .exit и снова exit.

Footnotes

  1. Для поиска была сделана еще одна колонка в таблице, которая хранит данные из TITLE и REPEAT в нижнем регистре.

  2. После генерации нового кода SQLC необходимо заменить все типы значений ID int64 на string в файле query.sql.go и models.go. А также для методов CreateTask и UpdateTask, изменить поля arg.Search на strings.ToLower(arg.Title+" "+arg.Comment).