core/docs/load_shouts.md
2024-11-20 23:59:11 +03:00

3.3 KiB
Raw Permalink Blame History

Система загрузки публикаций

Особенности реализации

Базовый запрос

  • Автоматически подгружает основного автора
  • Добавляет основную тему публикации
  • Поддерживает гибкую систему фильтрации
  • Оптимизирует запросы на основе запрошенных полей

Статистика

  • Подсчёт лайков/дислайков
  • Количество комментариев
  • Дата последней реакции
  • Статистика подгружается только при запросе поля stat

Оптимизация производительности

  • Ленивая загрузка связанных данных
  • Кэширование результатов на 5 минут
  • Пакетная загрузка авторов и тем
  • Использование подзапросов для сложных выборок

Типы лент

Случайные топовые посты (load_shouts_random_top)

Преимущества:

  • Разнообразный контент
  • Быстрая выборка из кэша топовых постов
  • Настраиваемый размер пула для выборки

Ограничения:

  • Обновление раз в 5 минут
  • Максимальный размер пула: 100 постов
  • Учитываются только лайки/дислайки (без комментариев)

Неоцененные посты (load_shouts_unrated)

Преимущества:

  • Помогает найти новый контент
  • Равномерное распределение оценок
  • Случайный порядок выдачи

Ограничения:

  • Только посты с менее чем 3 реакциями
  • Не учитываются комментарии
  • Без сортировки по рейтингу

Закладки (load_shouts_bookmarked)

Преимущества:

  • Персонализированная выборка
  • Быстрый доступ к сохраненному
  • Поддержка всех фильтров

Ограничения:

  • Требует авторизации
  • Ограничение на количество закладок
  • Кэширование отключено

Важные моменты

Пагинация

  • Стандартный размер страницы: 10
  • Максимальный размер: 100
  • Поддержка курсор-пагинации

Кэширование

  • TTL: 5 минут
  • Инвалидация при изменении поста
  • Отдельный кэш для каждого типа сортировки

Сортировка

  • По рейтингу (лайки минус дислайки)
  • По количеству комментариев
  • По дате последней реакции
  • По дате публикации (по умолчанию)

Безопасность

  • Проверка прав доступа
  • Фильтрация удаленного контента
  • Защита от SQL-инъекций
  • Валидация входных данных