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
Зараз переглядають цю тему:Жоден