2023-12-15 20:04:57 +02:00
|
|
|
package dev.mvvasilev.common.controller;
|
|
|
|
|
|
|
|
import dev.mvvasilev.common.web.APIErrorDTO;
|
|
|
|
import dev.mvvasilev.common.web.APIResponseDTO;
|
2023-12-27 18:15:42 +02:00
|
|
|
import dev.mvvasilev.common.web.CrudResponseDTO;
|
|
|
|
import org.springframework.http.HttpStatus;
|
|
|
|
import org.springframework.http.ResponseEntity;
|
2023-12-15 20:04:57 +02:00
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
2023-12-27 18:15:42 +02:00
|
|
|
public abstract class AbstractRestController {
|
2023-12-15 20:04:57 +02:00
|
|
|
|
2023-12-27 18:15:42 +02:00
|
|
|
protected <T> ResponseEntity<APIResponseDTO<T>> withStatus(HttpStatus status, T body) {
|
|
|
|
return ResponseEntity.status(status).body(new APIResponseDTO<>(body, null, status.value(), status.getReasonPhrase()));
|
2023-12-15 20:04:57 +02:00
|
|
|
}
|
|
|
|
|
2023-12-27 18:15:42 +02:00
|
|
|
protected <T> ResponseEntity<APIResponseDTO<T>> withSingleError(HttpStatus status, String errorMessage, String errorCode, String stacktrace) {
|
|
|
|
return ResponseEntity.status(status).body(new APIResponseDTO<>(null, List.of(new APIErrorDTO(errorMessage, errorCode, stacktrace)), status.value(), status.getReasonPhrase()));
|
2023-12-15 20:04:57 +02:00
|
|
|
}
|
|
|
|
|
2023-12-27 18:15:42 +02:00
|
|
|
protected <T> ResponseEntity<APIResponseDTO<T>> ok(T body) {
|
|
|
|
return withStatus(HttpStatus.OK, body);
|
|
|
|
}
|
|
|
|
|
|
|
|
protected <T> ResponseEntity<APIResponseDTO<Object>> emptySuccess() {
|
|
|
|
return withStatus(HttpStatus.OK, null);
|
|
|
|
}
|
|
|
|
|
|
|
|
protected <T> ResponseEntity<APIResponseDTO<CrudResponseDTO>> created(Long id) {
|
|
|
|
return withStatus(HttpStatus.CREATED, new CrudResponseDTO(id, null));
|
|
|
|
}
|
|
|
|
|
|
|
|
protected <T> ResponseEntity<APIResponseDTO<CrudResponseDTO>> updated(Integer affectedRows) {
|
|
|
|
return withStatus(HttpStatus.OK, new CrudResponseDTO(null, affectedRows));
|
|
|
|
}
|
|
|
|
|
|
|
|
protected <T> ResponseEntity<APIResponseDTO<CrudResponseDTO>> deleted(Integer affectedRows) {
|
|
|
|
return withStatus(HttpStatus.OK, new CrudResponseDTO(null, affectedRows));
|
2023-12-15 20:04:57 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|