Commit eed730d4 authored by Giridhari Sahoo's avatar Giridhari Sahoo

logical changes for delete API and save API

parent 66f8b350
...@@ -73,12 +73,13 @@ public class EmployeeController { ...@@ -73,12 +73,13 @@ public class EmployeeController {
.doOnError(error -> log.error("Error updating employee: {}", error.getMessage())); .doOnError(error -> log.error("Error updating employee: {}", error.getMessage()));
} }
@DeleteMapping("/deleteMapping/{id}") @DeleteMapping("/deleteEmployee/{id}")
public Mono<ResponseEntity<Object>> deleteEmployee(@PathVariable Integer id){ public Mono<ResponseEntity<Object>> deleteEmployee(@PathVariable Integer id){
return validator.isEmployeeIdValid(id) return validator.isEmployeeIdValid(id)
.flatMap(valid -> employeeService.deleteEmployee(id)) .flatMap(valid -> employeeService.deleteEmployee(id))
.thenReturn(ResponseEntity.ok().build()) .thenReturn(ResponseEntity.ok().build())
.doOnSuccess(objectResponseEntity -> log.info("deleted successfully : {}" +objectResponseEntity))
.doOnError(error -> log.error("Error deleting employee: {}", error.getMessage())); .doOnError(error -> log.error("Error deleting employee: {}", error.getMessage()));
} }
......
...@@ -32,25 +32,38 @@ public class EmployeeDao { ...@@ -32,25 +32,38 @@ public class EmployeeDao {
.bind("sal",employee.getSal()) .bind("sal",employee.getSal())
.fetch() .fetch()
.rowsUpdated() .rowsUpdated()
.flatMap(rows -> { // .flatMap(rows -> {
if (rows > 0) { // if (rows > 0) {
// Successfully inserted the employee // // Successfully inserted the employee
return Mono.just(employee) // return Mono.just(employee)
.doOnSuccess(savedEmployee -> { // .doOnSuccess(savedEmployee -> {
// Side effect: log successful insert // // Side effect: log successful insert
log.info("Successfully saved employee: {}", savedEmployee); // log.info("Successfully saved employee: {}", savedEmployee);
}); // });
} else { // } else {
// No rows updated, employee not found (error scenario) // // No rows updated, employee not found (error scenario)
return Mono.error(new EmployeeNotFoundException(ApiErrorCode.EMPLOYEE_NOT_FOUND, "Employee Not Found")); // return Mono.error(new EmployeeNotFoundException(ApiErrorCode.EMPLOYEE_NOT_FOUND, "Employee Not Found"));
} // }
// })
// .onErrorResume(RuntimeException.class,ex->{
// log.error("invalid employee data {}",ex.getMessage());
// return Mono.just(new Employee(-1,"invalid name","invalid email","invalid dept",0.0));
// });
.flatMap(rows -> Mono.justOrEmpty(rows > 0 ? employee : null))
.switchIfEmpty(Mono.error(new RuntimeException("no record updated")))
// Handle runtime exceptions
.onErrorResume(RuntimeException.class, ex -> {
log.error("Invalid employee data: {}", ex.getMessage());
return Mono.just(new Employee(-1, "invalid name", "invalid email", "invalid dept", 0.0));
}) })
.onErrorResume(RuntimeException.class,ex->{
log.error("invalid employee data {}",ex.getMessage());
return Mono.just(new Employee(-1,"invalid name","invalid email","invalid dept",0.0));
});
// Log successful insertions
.doOnSuccess(savedEmployee -> log.info("Successfully saved employee: {}", savedEmployee));
} }
public Flux<Employee> findAllEmployee(){ public Flux<Employee> findAllEmployee(){
String query="SELECT * FROM employee "; String query="SELECT * FROM employee ";
return databaseClient.sql(query) return databaseClient.sql(query)
...@@ -124,22 +137,23 @@ public class EmployeeDao { ...@@ -124,22 +137,23 @@ public class EmployeeDao {
}); });
} }
public Mono<Void> deleteEmployeeById(Integer id){ public Mono<Long> deleteEmployeeById(Integer id) {
String query= "DELETE FROM employee WHERE id = :id "; String query = "DELETE FROM employee WHERE id = :id";
return databaseClient.sql(query) return databaseClient.sql(query)
.bind("id",id) .bind("id", id)
.fetch() .fetch()
.rowsUpdated() .rowsUpdated()
.flatMap(updateRow->{ .flatMap(updatedRows -> {
if (updateRow>0){ if (updatedRows > 0) {
return Mono.empty(); // Return the number of rows deleted
}else { return Mono.just(updatedRows);
return Mono.error(new EmployeeNotFoundException(ApiErrorCode.EMPLOYEE_NOT_FOUND,"Employee_Not_Found")); } else {
// Throw an error if no rows were deleted
return Mono.error(new EmployeeNotFoundException(
ApiErrorCode.EMPLOYEE_NOT_FOUND, "Employee Not Found"));
} }
}); });
} }
......
...@@ -14,5 +14,5 @@ public interface EmployeeService { ...@@ -14,5 +14,5 @@ public interface EmployeeService {
public Flux<Employee> getAllEmployee(); public Flux<Employee> getAllEmployee();
public Mono<Employee> getEmployeeById(Integer id); public Mono<Employee> getEmployeeById(Integer id);
public Mono<Employee> updateEmployee(Integer id, Mono<EmployeeDto> mono); public Mono<Employee> updateEmployee(Integer id, Mono<EmployeeDto> mono);
public Mono<Void> deleteEmployee(Integer id); public Mono<Long> deleteEmployee(Integer id);
} }
...@@ -63,10 +63,10 @@ public class EmployeeServiceImpl implements EmployeeService{ ...@@ -63,10 +63,10 @@ public class EmployeeServiceImpl implements EmployeeService{
} }
@Override @Override
public Mono<Void> deleteEmployee(Integer id) { public Mono<Long> deleteEmployee(Integer id) {
return dao.deleteEmployeeById(id) return dao.deleteEmployeeById(id)
.doOnSuccess(success -> log.info("employee deleted successfully")) .doOnSuccess(deletedRows -> log.info("Employee deleted successfully, Rows Deleted: {}", deletedRows))
.doOnError(error -> log.error("Employee Not Found")); .doOnError(error -> log.error("Error deleting employee: {}", error.getMessage()));
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment