Skip to content

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

New issue

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

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

Already on GitHub? Sign in 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
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