Changes between Initial Version and Version 1 of Ticket #1257, comment 1
- Timestamp:
- Jan 18, 2024, 3:28:59 PM (10 months ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Ticket #1257, comment 1
initial v1 24 24 Когда пользователь, например, обнаружив опечатку в комментарии, записывает исправленную версию комментария, в поле предыдущей (первой) записи записывается ID новой (исправленной) записи. Таким образом, формируется список истории ревизий этой записи. Строго говоря, этого было бы достаточно для реализации поставленной в п. 1 задачи. 25 25 26 Вероятно, было бы полезно сделать этот список двунаправленным, а не однонаправленным - то есть иметь не один, а два дополнительных столбца со ссылками: один (`prev_rev`) ссылается на предыдущую ревизию записи, другой (`next_rev`) - на следующую. Например получить последние ревизии всех записей можно по условию `IS_NULL(next_rev)`. Условием того, что запись была изменена, будет непустое поле `prev_rev` - по этому условию можно в веб-интерфейсе делать пометку "изменена Васей 3 дня назад". Ну и ссылки на просмотр предыдущей и следующей ревизий комментария, я думаю, понятно как в этом варианте сделать.26 Вероятно, было бы удобно сделать этот список двунаправленным, а не однонаправленным - то есть иметь не один, а два дополнительных столбца со ссылками: один (`prev_rev`) ссылается на предыдущую ревизию записи, другой (`next_rev`) - на следующую. Например получить последние ревизии всех записей можно по условию `IS_NULL(next_rev)`. Условием того, что запись была изменена, будет непустое поле `prev_rev` - по этому условию можно в веб-интерфейсе делать пометку "изменена Васей 3 дня назад". Ну и ссылки на просмотр предыдущей и следующей ревизий комментария, я думаю, понятно как в этом варианте сделать. 27 27 28 Дополнительно может быть полезно хранить ссылку на самую первую ревизию (`first_rev`) - она может быть полезна для вывода истории в веб-интерфейсе - чтобы брать из нее значения полей `worker`, `date`, `type_write` и т.п. В самой первой ревизии туда можно тоже заносить NULL.28 Дополнительно может быть полезно хранить ссылку на самую первую ревизию (`first_rev`) - она может быть полезна (сократит время поиска самой первой ревизии записи) для вывода истории в веб-интерфейсе - чтобы брать из нее значения полей `worker`, `date`, `type_write` и т.п. В самой первой ревизии туда можно тоже заносить NULL. 29 29 30 30 Также рекомендую посмотреть, как это организовано в trac (я сам не смотрел).