aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/juick/service
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2022-12-09 14:45:24 +0300
committerGravatar Vitaly Takmazov2022-12-09 14:45:52 +0300
commita5ccfcd3f3e8d96250c92638cf2f66736827ffbc (patch)
treeddab5a2464976533d27ae9eb92dfcb5b71c9b06b /src/main/java/com/juick/service
parent13b81d40fde2939500924403dd767bdc9887ff14 (diff)
Better caching in AnythingFilter
Diffstat (limited to 'src/main/java/com/juick/service')
-rw-r--r--src/main/java/com/juick/service/UserService.java7
-rw-r--r--src/main/java/com/juick/service/UserServiceImpl.java6
2 files changed, 11 insertions, 2 deletions
diff --git a/src/main/java/com/juick/service/UserService.java b/src/main/java/com/juick/service/UserService.java
index a3ab8315..db02c34e 100644
--- a/src/main/java/com/juick/service/UserService.java
+++ b/src/main/java/com/juick/service/UserService.java
@@ -46,12 +46,15 @@ public interface UserService {
String getSignUpHashByTelegramID(Long telegramId, String username);
- @CacheEvict(value = "users_by_name", allEntries = true)
+ @CacheEvict(value = { "usernames", "users_by_name" }, allEntries = true)
Optional<User> createUser(String username, String password) throws UsernameTakenException;
Optional<User> getUserByUID(int uid);
- @Cacheable(value = "users_by_name")
+ @Cacheable(value = "usernames")
+ List<String> getUsernames();
+
+ @Cacheable(value = "users_by_name", key = "{ #username }")
@Nonnull User getUserByName(String username);
@Nonnull User getUserByEmail(String email);
diff --git a/src/main/java/com/juick/service/UserServiceImpl.java b/src/main/java/com/juick/service/UserServiceImpl.java
index 71f2dc91..0e6f9606 100644
--- a/src/main/java/com/juick/service/UserServiceImpl.java
+++ b/src/main/java/com/juick/service/UserServiceImpl.java
@@ -173,6 +173,12 @@ public class UserServiceImpl extends BaseJdbcService implements UserService {
return AnonymousUser.INSTANCE;
}
+ @Transactional(readOnly = true)
+ @Override
+ public List<String> getUsernames() {
+ return getJdbcTemplate().queryForList("SELECT nick FROM users", String.class);
+ }
+
@Override
@Transactional(readOnly = true)
@Nonnull