blob: 8bf0650d2687c7935ddcb461859f61ef767813af [file] [log] [blame]
package pl.hackerspace.controller;
import pl.hackerspace.domain.Client;
import pl.hackerspace.repository.ClientRepository;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;
@RestController
@RequestMapping("/clients")
public class ClientsController {
private final ClientRepository clientRepository;
public ClientsController(ClientRepository clientRepository) {
this.clientRepository = clientRepository;
}
@GetMapping
public List<Client> getClients() {
return clientRepository.findAll();
}
@GetMapping("/{nip}")
public Client getClient(@PathVariable String nip) {
return clientRepository.findById(nip).orElseThrow(RuntimeException::new);
}
@PostMapping
public ResponseEntity<Client> createClient(@RequestBody Client client) throws URISyntaxException {
Client savedClient = clientRepository.save(client);
return ResponseEntity.created(new URI("/clients/" + savedClient.getNip())).body(savedClient);
}
@PutMapping("/{nip}")
public ResponseEntity<Client> updateClient(@PathVariable String nip, @RequestBody Client client) {
Client currentClient = clientRepository.findById(nip).orElseThrow(RuntimeException::new);
currentClient.setName(client.getName());
currentClient.setEmail(client.getEmail());
currentClient = clientRepository.save(client);
return ResponseEntity.ok(currentClient);
}
@DeleteMapping("/{nip}")
public ResponseEntity<Void> deleteClient(@PathVariable String nip) {
clientRepository.deleteById(nip);
return ResponseEntity.ok().build();
}
}