Skip to content

Обновление логики задач#25

Open
bauerexe wants to merge 1 commit into
medods:developfrom
bauerexe:period_task_logic
Open

Обновление логики задач#25
bauerexe wants to merge 1 commit into
medods:developfrom
bauerexe:period_task_logic

Conversation

@bauerexe
Copy link
Copy Markdown

Решение

В первую очередь, обновил доменную сущность, добавив к Task
Структуру Repeated с несколькими полями:

Type          PeriodType  `json:"type"`
EveryNDays    int         `json:"every_n_days,omitempty"`
DayOfMonth    int         `json:"day_of_month,omitempty"`
SpecificDates []time.Time `json:"specific_dates,omitempty"`

для отслеживания типа повторения заданий
Задал новый тип PeriodType с underling type = string, чтобы сохранить единый стиль с уже существующими типами в доменной модели.
Дополнительно реализовал валидацию как для самого PeriodType, так и для Repeated, чтобы проверять корректность настроек периодичности в зависимости от выбранного типа.\

Далее обновил openapi документацию добавив логику Repeated туда, решил сделать необязательным передачу этого поля
при отсутствии просто назначу периодичность none

При написании usecase слоя, решил нормализовать дату, чтобы избежать дубликатов

Также обновил логику репозитория и добавил миграции для изменения БД: были добавлены отдельные столбцы под тип периодичности, интервал в днях, день месяца и набор конкретных дат.
На уровне схемы БД дополнительно зафиксировал ограничения через CHECK, чтобы не допускать некорректных значений напрямую в базе.
В хендлер добавил проброс Repeated и мапинг Dto -> taskdomain.Repeated

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants