В качестве CRUD системы был создан абстрактный класс CrudService.kt с дженерик функциями и через него был реализован основной сервис NoteService для класса заметок Note и вспомогательный сервис для работы с классом комментариев Comment на том же астрактном классе CommentService
Функции из CommentService вызываются через NoteService при методах работы с комментариями
Класс Note содержит поля Note VK кроме read_comments
и view_url
, а также дополнительно содержит список комментариев commentsList
, прикрепленных именно к этому посту
Класс Comment дополнительно содержит список флаг deleted
, для пометки объекта что он был удален (и затем может быть восстановлен)
Каждый комментарий хранится в общем списке комментариев в CommentService
и там при удалении лишь изменяется флаг, а также копией внутри commentsList
конкретной заметки, которая удаляется при удалении заметки.
Тесты для каждого сервиса разнесены в свои файлы NoteServiceTest и CommentServiceTest