UserController.java
package com.oliwier.listmebackend.api;
import com.oliwier.listmebackend.api.dto.UpdateUserRequest;
import com.oliwier.listmebackend.api.dto.UserResponse;
import com.oliwier.listmebackend.domain.model.User;
import com.oliwier.listmebackend.domain.repository.UserRepository;
import com.oliwier.listmebackend.identity.CurrentUser;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api/users")
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class UserController {
private final UserRepository userRepository;
@GetMapping("/me")
public UserResponse me(@CurrentUser User user) {
return UserResponse.from(user);
}
@PatchMapping("/me")
@Transactional
public UserResponse updateMe(@CurrentUser User user,
@Valid @RequestBody UpdateUserRequest req) {
if (req.displayName() != null) user.setDisplayName(req.displayName());
if (req.profilePicture() != null) user.setProfilePicture(req.profilePicture());
if (req.theme() != null) user.setTheme(req.theme());
return UserResponse.from(userRepository.save(user));
}
}