Skip to content

Commit 05cacdd

Browse files
committed
RecommendationService became and interface.
Old RecommendationService is now RecommendationServiceImpl.
1 parent f1e1fd8 commit 05cacdd

File tree

4 files changed

+36
-24
lines changed

4 files changed

+36
-24
lines changed

src/main/java/com/trendyol/recomengine/webservice/controllers/RecommendationController.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ class RecommendationController {
2424
* @param userId The user's id who sends the GET request.
2525
* @return If there is a recommendation list for the user in the database, returns it. Otherwise, returns a default
2626
* recommendation list using generateDefaultRecommendations.
27-
* @see RecommendationController#generateDefaultRecommendations(String)
2827
*/
2928
@GetMapping("/users/{userId}/recommendations")
3029
Recommendation getRecommendation(@PathVariable String userId) {

src/main/java/com/trendyol/recomengine/webservice/services/RecommendationService.java

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,6 @@
66
import org.springframework.stereotype.Service;
77

88
@Service
9-
public class RecommendationService {
10-
@Autowired
11-
private RecommendationRepository repository;
12-
13-
public Recommendation getRecommendations(String userId) {
14-
Recommendation fetched = repository.findBy_id(userId);
15-
return fetched == null ? generateDefaultRecommendations(userId) : fetched;
16-
}
17-
18-
/**
19-
* Generates a default recommendation list for the user. For now, it returns 10 products' ids but default
20-
* recommendations could be generated based on a criterion.
21-
*
22-
* @param userId The user id of the user that is to be recommended.
23-
* @return A list of recommendations that is generated for the user.
24-
* @see Recommendation
25-
*/
26-
private Recommendation generateDefaultRecommendations(String userId) {
27-
return new Recommendation(userId, new String[]{
28-
"100", "101", "102", "103", "104",
29-
"105", "106", "107", "108", "109"
30-
});
31-
}
9+
public interface RecommendationService {
10+
Recommendation getRecommendations(String userId);
3211
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.trendyol.recomengine.webservice.services.impl;
2+
3+
import com.trendyol.recomengine.webservice.repositories.RecommendationRepository;
4+
import com.trendyol.recomengine.webservice.resource.Recommendation;
5+
import com.trendyol.recomengine.webservice.services.RecommendationService;
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.stereotype.Service;
8+
9+
@Service
10+
public class RecommendationServiceImpl implements RecommendationService {
11+
@Autowired
12+
private RecommendationRepository repository;
13+
14+
public Recommendation getRecommendations(String userId) {
15+
Recommendation fetched = repository.findBy_id(userId);
16+
return fetched == null ? generateDefaultRecommendations(userId) : fetched;
17+
}
18+
19+
/**
20+
* Generates a default recommendation list for the user. For now, it returns 10 products' ids but default
21+
* recommendations could be generated based on a criterion.
22+
*
23+
* @param userId The user id of the user that is to be recommended.
24+
* @return A list of recommendations that is generated for the user.
25+
* @see Recommendation
26+
*/
27+
private Recommendation generateDefaultRecommendations(String userId) {
28+
return new Recommendation(userId, new String[]{
29+
"100", "101", "102", "103", "104",
30+
"105", "106", "107", "108", "109"
31+
});
32+
}
33+
}

src/test/java/com/trendyol/recomengine/webservice/controllers/RecommendationControllerTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.springframework.test.web.servlet.MockMvc;
1414

1515
import static org.hamcrest.Matchers.hasItems;
16+
import static org.hamcrest.Matchers.hasSize;
1617
import static org.mockito.BDDMockito.given;
1718
import static org.springframework.test.web.servlet.ResultMatcher.matchAll;
1819
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;

0 commit comments

Comments
 (0)