From a36c55cf7bde5a06220ddcf44561ec4d9d823525 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?F=C3=A9ry=20Mathieu=20=28Mathius=29?=
 <ferymathieuy@gmail.com>
Date: Mon, 6 Dec 2021 21:49:11 +0100
Subject: [PATCH] feat(tokenService): Update TokenService for reduce call to
 datastore

---
 .../webandcloud/api/controllers/v1/Posts.java     |  2 +-
 .../webandcloud/api/controllers/v1/Users.java     |  6 +++---
 .../webandcloud/api/services/TokenService.java    | 15 +++++++++++++++
 3 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/src/main/java/fr/univnantes/webandcloud/api/controllers/v1/Posts.java b/src/main/java/fr/univnantes/webandcloud/api/controllers/v1/Posts.java
index 06ffca2..50cf6c1 100644
--- a/src/main/java/fr/univnantes/webandcloud/api/controllers/v1/Posts.java
+++ b/src/main/java/fr/univnantes/webandcloud/api/controllers/v1/Posts.java
@@ -118,7 +118,7 @@ public class Posts extends BaseController {
             @Parameter(description = "Token for identify your account", example = "abcEFG145") @RequestHeader(required = false) @Nullable String token,
             @Parameter(description = "Payload of Post") @RequestBody @NonNull PostContent postContent)
             throws ResponseError {
-        User currentUser = tokenService.getUserRelated(token);
+        User currentUser = tokenService.getUserRelatedWithoutLinks(token);
         if (currentUser == null)
             throw new BadRequest("Token must be valid");
         Post post = new Post(postContent, currentUser);
diff --git a/src/main/java/fr/univnantes/webandcloud/api/controllers/v1/Users.java b/src/main/java/fr/univnantes/webandcloud/api/controllers/v1/Users.java
index 8c3383f..a677bc4 100644
--- a/src/main/java/fr/univnantes/webandcloud/api/controllers/v1/Users.java
+++ b/src/main/java/fr/univnantes/webandcloud/api/controllers/v1/Users.java
@@ -98,7 +98,7 @@ public class Users extends BaseController {
             @Parameter(description = "Token for identify your account", example = "abcEFG145") @RequestHeader(required = false) @Nullable String token,
             @Parameter(description = "Payload of User") @RequestBody @NonNull UserPayload userPayload)
             throws ResponseError {
-        User currentUser = tokenService.getUserRelated(token);
+        User currentUser = tokenService.getUserRelatedWithoutLinks(token);
         if (currentUser == null)
             throw new BadRequest("Token must be valid");
         if (!userPayload.id.equals(currentUser.getId()))
@@ -155,7 +155,7 @@ public class Users extends BaseController {
     public Token createUser(@Parameter(description = "Payload of User") @RequestBody @NonNull UserPayload userPayload)
             throws ResponseError {
         try {
-            getUser(userPayload.id);
+            userDB.getWithoutLinks(userPayload.id);
             throw new BadRequest("User already exist");
         } catch (NotFoundException ignored) {
             User user = this.userDB.add(new User(userPayload));
@@ -172,7 +172,7 @@ public class Users extends BaseController {
     public void disconnect(
             @Parameter(description = "Token for identify your account", example = "abcEFG145") @RequestHeader(required = false) @Nullable String token)
             throws ResponseError {
-        User currentUser = tokenService.getUserRelated(token);
+        User currentUser = tokenService.getUserRelatedWithoutLinks(token);
         if (currentUser == null)
             throw new BadRequest("Token must be valid");
         tokenDB.remove(token);
diff --git a/src/main/java/fr/univnantes/webandcloud/api/services/TokenService.java b/src/main/java/fr/univnantes/webandcloud/api/services/TokenService.java
index 43f84e8..b522356 100644
--- a/src/main/java/fr/univnantes/webandcloud/api/services/TokenService.java
+++ b/src/main/java/fr/univnantes/webandcloud/api/services/TokenService.java
@@ -13,6 +13,16 @@ public class TokenService {
     @Autowired
     protected DBService<Token> tokenDB;
 
+    public Token getTokenRelatedWithoutLinks(String token) {
+        if (token == null)
+            return null;
+        try {
+            return tokenDB.getWithoutLinks(token);
+        } catch (ResponseError error) {
+            return null;
+        }
+    }
+
     public Token getTokenRelated(String token) {
         if (token == null)
             return null;
@@ -31,4 +41,9 @@ public class TokenService {
         Token tokenData = getTokenRelated(token);
         return tokenData != null ? getUserRelated(tokenData) : null;
     }
+
+    public User getUserRelatedWithoutLinks(String token) {
+        Token tokenData = getTokenRelatedWithoutLinks(token);
+        return tokenData != null ? getUserRelated(tokenData) : null;
+    }
 }
-- 
GitLab