Skip to content

#115 Добавить отложенные публикации #262

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Merged
merged 6 commits into from
Mar 6, 2025

Conversation

m0nclous
Copy link
Contributor

@m0nclous m0nclous commented Mar 3, 2025

PR реализует запрашиваемый функционал для #115 для реализации публикации (видимости) постов по publish_at

Note

В требованиях было сказано добавить колонку publish_at с useCurrent.

Если мы это оставим в таком виде, то старым постам установится дата выполнения миграции, что не совсем корректно.

В качестве решения я добавил обновление publish_at текущим значением колонки created_at, это делает строчка

DB::statement('UPDATE posts SET publish_at = created_at');

Note

В требованиях не было сказано о выводимых данных created_at для постов.

Мне кажется, нужно выводить именно publish_at, а не created_at, так как публикация может быть отложена на неделю и в момент публикации постах будет отображаться дата недельной давности.

Этот момент связан с тезисом выше, так как если мы перейдём на publish_at, то дата там должна содержаться корректная.

Note

В требованиях было сказано сделать так

$builder->whereDate('publish_at', '<', now());

Но я сделал вот так

$builder->whereDate('publish_at', '<=', now());

Добавленное равенство с now() поможет с тестированием, чтобы только что созданные фейковые посты попали в scope

В тестах есть проверка кейса с null значением в publish_at - в этом случае пост не попадёт в выборку никогда.

Данный PR не реализует выбор даты публикации на frontend части и нотификацию в Telegram в момент публикации.

Я отключил нотификацию, если пост запланирован в будущее.

Warning

Есть момент с сортировкой: возможно стоит изменить с поля id на поле publish_at , так как при отложенной публикации их фактический вывод может быть нарушен. Например мы добавили пост на завтра и на сегодня, в этом случае завтра "свежий" пост будет находиться после вчерашнего.

Если так сделаем, то лучше добавить индекс на publish_at


Предлагаю сделать реализацию выбора даты публикации для frontend части второй итерацией.
Там же нотификацию в Telegram канал, так как появится возможность создания постов в будущее.

@tabuna tabuna merged commit d4ef10b into laravelsu:master Mar 6, 2025
0 of 4 checks passed
@m0nclous m0nclous deleted the feature/115-post-schedule-publish branch March 6, 2025 06:47
@m0nclous m0nclous restored the feature/115-post-schedule-publish branch March 6, 2025 06:47
@m0nclous m0nclous deleted the feature/115-post-schedule-publish branch March 6, 2025 06:48
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants