[done] extends REST data access via vertx messages
This commit is contained in:
parent
fde982f94a
commit
2f5b0fd315
3 changed files with 93 additions and 26 deletions
|
|
@ -77,21 +77,63 @@ public class RestDataAccess<T extends SerializableWithId> {
|
|||
|
||||
protected T getDataFromRequest(final RoutingContext context) {
|
||||
return context.body().asPojo(classReference);
|
||||
}
|
||||
|
||||
private void handleMessage(final Message<RestDataRequest<T>> request) {
|
||||
switch (request.body().getCommand()) {
|
||||
case LIST:
|
||||
request.reply(new ArrayList<>(list()));
|
||||
break;
|
||||
case GET:
|
||||
request.reply(get(request.body().getId()));
|
||||
default:
|
||||
request.fail(500, "Unsupported request type");
|
||||
break;
|
||||
}private void handleMessage(final Message<RestDataRequest<T>> request) {
|
||||
try {
|
||||
RestDataRequest<T> req = request.body();
|
||||
switch (req.getCommand()) {
|
||||
case LIST -> handleList(request);
|
||||
case GET -> handleGet(request, req.getId());
|
||||
case ADD -> handleAdd(request, req.getData());
|
||||
case UPDATE -> handleUpdate(request, req.getData());
|
||||
case DELETE -> handleDelete(request, req.getId());
|
||||
default -> request.fail(500, "Unsupported request type");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
request.fail(500, "Internal server error: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private void handleList(Message<RestDataRequest<T>> request) {
|
||||
request.reply(new ArrayList<>(list()));
|
||||
}
|
||||
|
||||
private void handleGet(Message<RestDataRequest<T>> request, String id) {
|
||||
T data = get(id);
|
||||
if (data == null) {
|
||||
request.fail(404, "Not found");
|
||||
} else {
|
||||
request.reply(data);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleAdd(Message<RestDataRequest<T>> request, T data) {
|
||||
if (data == null) {
|
||||
request.fail(400, "No data provided");
|
||||
} else {
|
||||
add(data);
|
||||
request.reply(data.getId());
|
||||
}
|
||||
}
|
||||
|
||||
private void handleUpdate(Message<RestDataRequest<T>> request, T data) {
|
||||
if (data == null || !contains(data.getId())) {
|
||||
request.fail(400, "Invalid data or ID not found");
|
||||
} else {
|
||||
update(data);
|
||||
request.reply(data.getId());
|
||||
}
|
||||
}
|
||||
|
||||
private void handleDelete(Message<RestDataRequest<T>> request, String id) {
|
||||
if (id == null || !contains(id)) {
|
||||
request.fail(404, "Not found");
|
||||
} else {
|
||||
delete(id);
|
||||
request.reply(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void list(final RoutingContext context) {
|
||||
if (context.response().ended()) {
|
||||
return;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue