Skip to content

Commit

Permalink
feat: create delete operation
Browse files Browse the repository at this point in the history
Signed-off-by: Otavio Santana <otaviopolianasantana@gmail.com>
  • Loading branch information
otaviojava committed Dec 28, 2023
1 parent 472d411 commit 984af01
Showing 1 changed file with 40 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.List;
import java.util.stream.StreamSupport;

@SuppressWarnings({"rawtypes", "unchecked"})
public enum AnnotationOperation {
Expand Down Expand Up @@ -80,6 +81,45 @@ private static Object executeSingleEntity(Operation operation, Object param, Ret
return param;
}
}
}, DELETE {
@Override
public Object invoke(Operation operation) {
checkParameterNumber(operation);
Object param = operation.params[0];
ReturnType returnType = new ReturnType(operation.method);
if (param instanceof Iterable entities) {
return executeIterable(operation, entities, returnType);
} else if (param.getClass().isArray()) {
List<Object> entities = Arrays.asList((Object[]) param);
return executeIterable(operation, entities, returnType );
} else {
return executeSingleEntity(operation, param, returnType);
}
}

private static Object executeIterable(Operation operation, Iterable entities, ReturnType returnType) {

operation.repository.deleteAll(entities);
if (returnType.isVoid()) {
return Void.TYPE;
} else if (returnType.isBoolean()) {
return true;
} else if (returnType.isInt()) {
return StreamSupport.stream(entities.spliterator(), false).count();
}
return null;
}
private static Object executeSingleEntity(Operation operation, Object param, ReturnType returnType) {
operation.repository.delete(param);
if (returnType.isVoid()) {
return Void.TYPE;
} else if (returnType.isBoolean()) {
return true;
} else if (returnType.isInt()) {
return 1;
}
return null;
}
};


Expand Down

0 comments on commit 984af01

Please sign in to comment.