Bat/src/main/java/cc/fascinated/bat/service/UserService.java

69 lines
1.8 KiB
Java
Raw Normal View History

2024-06-24 12:56:01 +00:00
package cc.fascinated.bat.service;
2024-06-25 10:55:26 +00:00
import cc.fascinated.bat.model.BatUser;
2024-06-24 12:56:01 +00:00
import cc.fascinated.bat.repository.UserRepository;
import lombok.Getter;
2024-06-24 12:56:01 +00:00
import lombok.NonNull;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.DependsOn;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
2024-06-24 12:56:01 +00:00
import java.util.Optional;
/**
* @author Fascinated (fascinated7)
*/
@Service @Log4j2 @Getter
2024-06-24 12:56:01 +00:00
@DependsOn("discordService")
public class UserService {
/**
* The cached users
*/
private final Map<String, BatUser> users = new HashMap<>();
2024-06-24 12:56:01 +00:00
/**
* The user repository to use
*/
private final UserRepository userRepository;
@Autowired
public UserService(@NonNull UserRepository userRepository) {
this.userRepository = userRepository;
}
/**
* Gets a user by their ID
*
* @param id The ID of the user
* @return The user
*/
public BatUser getUser(@NonNull String id) {
if (users.containsKey(id)) {
return users.get(id);
}
2024-06-24 12:56:01 +00:00
long start = System.currentTimeMillis();
Optional<BatUser> optionalUser = userRepository.findById(id);
if (optionalUser.isPresent()) {
BatUser user = optionalUser.get();
users.put(id, user);
return user;
2024-06-24 12:56:01 +00:00
}
BatUser user = userRepository.save(new BatUser(id));
2024-06-27 16:38:28 +00:00
log.info("Created user for \"{}\" in {}ms", user.getDiscordUser().getName(), System.currentTimeMillis() - start);
2024-06-24 12:56:01 +00:00
return user;
}
/**
* Saves a user
*
* @param user The user to save
*/
public void saveUser(@NonNull BatUser user) {
userRepository.save(user);
}
}