LastReadPost by INDEX vs. by DATE

 
 
 
Сообщения:365
Возвращаясь к прежней дискуссии о том хранить ли индекс последнего прочитанного сообщения либо хранить дату. Наткнулся на такой метод:
    public void updateLastReadPostsWhenPostDeleted(Post post) {
        List<LastReadPost> lastReadPosts = lastReadPostDao.getLastReadPostsInTopic(post.getTopic());
        for (LastReadPost lastReadPost : lastReadPosts) {
            int index = lastReadPost.getPostIndex();
            if (index >= post.getPostIndexInTopic()) {
                lastReadPost.setPostIndex(index - 1);
                lastReadPostDao.saveOrUpdate(lastReadPost);
            }
        }
    }
Перевожу на русский:
  1. Найти все записи, которые ссылаются на Тему чтоб узнать является ли удаляемый Пост последним прочитанным.
  2. Если является, значит декрементим last read post index
  3. Если не является (то бишь пользователь прочел следующее за ним сообщение), значит зря выбирали этот объект.
Если бы это была дата, нам вообще не нужно было бы ничего делать. Если пользователь прочел этот пост последним и дата его создания была бы записана в LastReadPost, то дата следующего поста будет все равно больше и это сообщение останется непрочитанным. Если дата меньше, ну и ладно, тоже ничего делать не придется.

То бишь при удалении поста мы делаем то, чего могли бы не делать вовсе. Shogun, masyan, jk1, что скажете?
 
 
Сообщения:53
насколько я помню была в чем то проблема, что мы не можем юзать даты...но в чем была проблема я не помню
 
 
Сообщения:16
Тоже так и не вспомню причину, по которой дата не подходит. Надо было записать тогда.
 
 
Сообщения:365
Насколько я помню в прошлый раз просто решили, что оба подхода дают один и тот же результат.
 
 
Сообщения:53
вспомнил, проблема была в том что юзер мог не дочитаь до конца тему, а она бы ему отметилась как прочтенная
 
 
Сообщения:365
Это не проблема - мы запоминаем не текущую дату (System.currentDate()), а дату создания поста (того поста, что пользователь прочел).
Изменен:12 авг 2013 15:07
 
 
Сообщения:53
да, и потом мы выяснили что все останется тоже самое, только вместо индекса будет дата, а количество записй втаблице las_read_posts не изменится. И особого смысла нет, что-то менять
 
 
Сообщения:365
Вооот. А теперь я, как и обещал, привел один из примеров когда дата на самом деле будет выгодней, чем индекс :)
 
 
Сообщения:20
Дату, пробовали, с ней слишком много проблем. Например отредактированные посты, удаленные посты. Это все тоже обновления, но подход с датой их нормально обработать не может.
 
 
Сообщения:365
Дата редактирования здесь не причем, ориентироваться нужно на дату создания.
 
 
Сообщения:365
Короче я задачу завел, если ни у кого не осталось возражений, будем рефакторить.
 
 
Сообщения:81
Поправьте меня, если я что-то упустил. Задача сводится к следующему.
1. Добавить к LastReadPost поле creationDate
2. Написать миграцию, суть которой в добавлении столбца CREATION_DATE, копированию в него данных (дат) для уже имеющихся записей.
3. Рефакторинг кода для замены использования индекса поста на дату создания.
Изменен:02 сен 2013 09:55
 
 
Сообщения:53
ну там не дата создания будет, а дата апдейта наверно. ведь по ней же будет проверятся, обновилось там че то или нет
 
 
Сообщения:81
ctapobep:
Дата редактирования здесь не причем, ориентироваться нужно на дату создания.


masyan:
ну там не дата создания будет, а дата апдейта наверно. ведь по ней же будет проверятся, обновилось там че то или нет


Почему обновления то? Мы же ориентируемся на последний прочитанный пост по дате создания, так как она не меняется.
Изменен:02 сен 2013 11:17
 
 
Сообщения:365
Да, именно дата создания. Редактирование поста не делает его непрочитанным.
 
Модераторы:katctapobepІраїдаJulia AtlyginaJulik21Julikdsafjifb
Сейчас эту тему просматривают:Нет