Questions Management – Composite Question Service – Xây dựng API xoá question

Xem toàn bộ series bài viết hướng dẫn xây dựng ứng dụng Questions Management tại đây.

Trong bài viết trước, chúng ta đã chuẩn bị tất cả các cấu hình cần thiết để có thể xây dựng API xoá question trong Composite Question Service như: một đối tượng chứa tất cả các thông tin của một câu hỏi CompositeQuestion bao gồm Question, Category và Option; một interface CoreCategoryService với implementation là CoreCategoryServiceImpl đảm nhận việc thao tác với Core Category Service; một interface CoreQuestionService với implementation là CoreQuestionServiceImpl đảm nhận việc thao tác với Core Question Service; một interface CoreOptionService với implementation là CoreOptionServiceImpl đảm nhận việc thao tác với Core Option Service; một interface CompositeQuestionService đảm nhận việc thao tác với các Core Service; một CompositeQuestionController định nghĩa các API của Composite Question Service sẽ bắt đầu với “/question” và thông tin của các Core Service được cấu hình trong tập tin application.properties. Bây giờ, chúng ta sẽ tiến hành xây dựng API này các bạn nhé!

Đầu tiên, mình sẽ nói về ý tưởng để xoá một question trước. Để xoá một question từ Composite Question Service, chúng ta sẽ cần gọi tới Core Question Service để xoá question này và cũng cần phải gọi tới Core Option Service để xoá tất cả các option thuộc về question đó. Cụ thể như thế nào, các bạn đọc tiếp nhé!

Mình sẽ định nghĩa mới một method trong CoreQuestionService đảm nhận việc gọi tới API của Core Question Service để xoá question như sau:

Implementation của method này trong class CoreQuestionServiceImpl sẽ như sau:

Tiếp theo, mình sẽ định nghĩa mới một method trong CoreOptionService đảm nhận việc gọi tới API của Core Option Service để xoá tất cả các option thuộc về question này như sau:

Implementation của method này trong class CoreOptionServiceImpl sẽ như sau:

Tiếp theo nữa, mình cũng sẽ định nghĩa một method trong CompositeQuestionService để combine việc gọi tới Core Question Service và Core Option Service để xoá question như sau:

Implementation của method này trong class CompositeQuestionServiceImpl sẽ như sau:

Như các bạn thấy, mình đã gọi qua Core Question Service trước, trong trường hợp có thể xoá question trong service này, chúng ta mới gọi qua Core Option Service để thực hiện xoá các option tiếp.

Điều cuối cùng chúng ta cần làm đó là thêm mới một method vào class CompositeQuestionController để expose một DELETE request “/{id}” với id là id của question mà chúng ta cần xoá.

Việc chúng ta chỉ là gọi tới method deleteById() của class CompositeQuestionService mà thôi:

OK, đến đây là chúng ta đã hoàn thành việc xây dựng API xoá question cho Composite Question Service rồi đó các bạn. Test thử xem sao nhé.

Giả sử hiện tại mình đang có những question như sau:

Questions Management – Composite Question Service – Xây dựng API xoá question

Nếu bây giờ mình xoá question với id là 5b810abbbd264712e80d7f29 thì kết quả sẽ như sau:

Questions Management – Composite Question Service – Xây dựng API xoá question

Add Comment