Simple App

This commit is contained in:
Struchkov Mark 2022-06-17 16:30:52 +03:00
parent 1f3e8b75b3
commit 327f7e3c6b
6 changed files with 123 additions and 0 deletions

View File

@ -0,0 +1,34 @@
package dev.struchkov.example.controlleradvice.controller;
import dev.struchkov.example.controlleradvice.domain.Person;
import dev.struchkov.example.controlleradvice.service.PersonService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.UUID;
@Slf4j
@RestController
@RequestMapping("api/person")
@RequiredArgsConstructor
public class PersonController {
private final PersonService personService;
@GetMapping
public ResponseEntity<Person> getByLogin(@RequestParam("login") String login) {
return ResponseEntity.ok(personService.getByLoginOrThrown(login));
}
@GetMapping("{id}")
public ResponseEntity<Person> getById(@PathVariable("id") UUID id) {
return ResponseEntity.ok(personService.getByIdOrThrown(id));
}
}

View File

@ -0,0 +1,14 @@
package dev.struchkov.example.controlleradvice.domain;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
public class ErrorMessage {
private String message;
}

View File

@ -0,0 +1,21 @@
package dev.struchkov.example.controlleradvice.domain;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.util.UUID;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class Person {
private UUID id;
private String login;
private String firstName;
private String password;
}

View File

@ -0,0 +1,9 @@
package dev.struchkov.example.controlleradvice.exception;
public class AppException extends RuntimeException {
public AppException(String message) {
super(message);
}
}

View File

@ -0,0 +1,9 @@
package dev.struchkov.example.controlleradvice.exception;
public class NotFoundException extends AppException {
public NotFoundException(String message) {
super(message);
}
}

View File

@ -0,0 +1,36 @@
package dev.struchkov.example.controlleradvice.service;
import dev.struchkov.example.controlleradvice.domain.Person;
import dev.struchkov.example.controlleradvice.exception.NotFoundException;
import lombok.NonNull;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@Service
public class PersonService {
private final Map<UUID, Person> persons = new HashMap<>();
public PersonService() {
final UUID komarId = UUID.randomUUID();
persons.put(komarId, new Person(komarId, "komar", "Алексей", "ertyuiop"));
}
public Person getByLoginOrThrown(@NonNull String login) {
return persons.values().stream()
.filter(person -> person.getLogin().equals(login))
.findFirst()
.orElseThrow();
}
public Person getByIdOrThrown(@NonNull UUID id) {
if (!persons.containsKey(id)) {
throw new NotFoundException("Пользователь не найден");
}
return persons.get(id);
}
}