Skip to content

Commit

Permalink
3. Rest API. Базовая структура. [#505107]
Browse files Browse the repository at this point in the history
  • Loading branch information
vadimstrya committed Jan 22, 2025
1 parent bc37e06 commit 4b43824
Show file tree
Hide file tree
Showing 2 changed files with 90 additions and 0 deletions.
45 changes: 45 additions & 0 deletions src/main/java/ru/job4j/api/controller/PostController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package ru.job4j.api.controller;

import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import ru.job4j.api.entity.UserPost;
import ru.job4j.api.enums.Statuses;
import ru.job4j.api.repository.UserPostRepository;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/post")
public class PostController {

private final UserPostRepository userPostRepository;

@GetMapping("/{postId}")
public ResponseEntity<UserPost> get(@PathVariable Long postId) {
return userPostRepository.findById(postId)
.map(ResponseEntity::ok)
.orElseGet(() -> ResponseEntity.notFound().build());
}

@PostMapping
public ResponseEntity<UserPost> save(@RequestBody UserPost post) {
post.setStatus(Statuses.A);
return ResponseEntity.ok(userPostRepository.save(post));
}

@PutMapping
@ResponseStatus(HttpStatus.OK)
public void update(@RequestBody UserPost post) {
userPostRepository.save(post);
}

@DeleteMapping("/{postId}")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void delete(@PathVariable Long postId) {
userPostRepository.findById(postId).ifPresent(post -> {
post.setStatus(Statuses.D);
userPostRepository.save(post);
});
}
}
45 changes: 45 additions & 0 deletions src/main/java/ru/job4j/api/controller/UserController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package ru.job4j.api.controller;

import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import ru.job4j.api.entity.User;
import ru.job4j.api.enums.Statuses;
import ru.job4j.api.repository.UserRepository;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/user")
public class UserController {

private final UserRepository userRepository;

@GetMapping("/{userId}")
public ResponseEntity<User> get(@PathVariable Long userId) {
return userRepository.findById(userId)
.map(ResponseEntity::ok)
.orElseGet(() -> ResponseEntity.notFound().build());
}

@PostMapping
public ResponseEntity<User> save(@RequestBody User user) {
user.setStatus(Statuses.A);
return ResponseEntity.ok(userRepository.save(user));
}

@PutMapping
@ResponseStatus(HttpStatus.OK)
public void update(@RequestBody User user) {
userRepository.save(user);
}

@DeleteMapping("/{userId}")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void delete(@PathVariable Long userId) {
userRepository.findById(userId).ifPresent(user -> {
user.setStatus(Statuses.D);
userRepository.save(user);
});
}
}

0 comments on commit 4b43824

Please sign in to comment.