/
ilgizok
/
MyLibService
Обзор
Документация
Войти
/
ilgizok
/
MyLibService
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
Test
src/main/java/com/example/mylib/controller/UserController.java
128 строк
5 KB
ilgiz
add
20 апр 2025, 01:03
20 апр 2025, 01:03
981190d
Код
Авторство
О чём код?
package com.example.mylib.controller; import com.example.mylib.entity.*; import com.example.mylib.service.BookService; import com.example.mylib.service.UserService; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/api/users") @RequiredArgsConstructor public class UserController { private final UserService userService; public record RegisterRequest(String username, String email, String passwordHash) { } // Регистрация @PostMapping("/register") public ResponseEntity<User> register(@RequestBody RegisterRequest request) { User user = userService.registerUser(request.username(), request.email(), request.passwordHash()); return ResponseEntity.ok(user); } public record LoginRequest(String email, String passwordHash) { } // Вход @PostMapping("/login") public ResponseEntity<User> login( @RequestBody LoginRequest request) { User user = userService.login(request.email(), request.passwordHash()); return ResponseEntity.ok(user); } // Получение текущего пользователя @GetMapping("/me") public ResponseEntity<User> getCurrentUser(@RequestParam Long userId) { User user = userService.getCurrentUser(userId); return ResponseEntity.ok(user); } // Получение другого пользователя @GetMapping("/{userId}") public ResponseEntity<User> getUserProfile(@PathVariable Long userId) { User user = userService.getUserProfile(userId); return ResponseEntity.ok(user); } // Добавление книги в библиотеку @PostMapping("/{userId}/library") public ResponseEntity<UserLibrary> addBookToLibrary( @PathVariable Long userId, @RequestParam Integer bookId, @RequestParam String status) { UserLibrary userLibrary = userService.addBookToLibrary(userId, bookId, status); return ResponseEntity.ok(userLibrary); } // Изменение статуса книги @PutMapping("/{userId}/library/{bookId}") public ResponseEntity<UserLibrary> updateBookStatus( @PathVariable Long userId, @PathVariable Integer bookId, @RequestParam String status) { UserLibrary userLibrary = userService.updateBookStatus(userId, bookId, status); return ResponseEntity.ok(userLibrary); } // Удаление книги из библиотеки @DeleteMapping("/{userId}/library/{bookId}") public ResponseEntity<Void> removeBookFromLibrary( @PathVariable Long userId, @PathVariable Integer bookId) { userService.removeBookFromLibrary(userId, bookId); return ResponseEntity.noContent().build(); } // Оценка книги @PostMapping("/{userId}/ratings") public ResponseEntity<Rating> rateBook( @PathVariable Long userId, @RequestParam Integer bookId, @RequestParam Integer rating) { Rating ratingObj = userService.rateBook(userId, bookId, rating); return ResponseEntity.ok(ratingObj); } // Написание рецензии @PostMapping("/{userId}/reviews") public ResponseEntity<Review> addReview( @PathVariable Long userId, @RequestParam Integer bookId, @RequestParam String content) { Review review = userService.addReview(userId, bookId, content); return ResponseEntity.ok(review); } // Получение библиотеки пользователя @GetMapping("/{userId}/library") public ResponseEntity<List<UserLibrary>> getUserLibrary(@PathVariable Long userId) { List<UserLibrary> library = userService.getUserLibrary(userId); return ResponseEntity.ok(library); } // Получение рецензий пользователя @GetMapping("/{userId}/reviews") public ResponseEntity<List<Review>> getUserReviews(@PathVariable Long userId) { List<Review> reviews = userService.getUserReviews(userId); return ResponseEntity.ok(reviews); } // Обновление профиля @PutMapping("/{userId}/profile") public ResponseEntity<User> updateProfile( @PathVariable Long userId, @RequestParam(required = false) String username, @RequestParam(required = false) String email, @RequestParam(required = false) String bio, @RequestParam(required = false) String profileImageUrl) { User user = userService.updateProfile(userId, username, email, bio, profileImageUrl); return ResponseEntity.ok(user); } }