Search in sources :

Example 1 with ColumnDeleteQuery

use of org.jnosql.diana.api.column.ColumnDeleteQuery in project jnosql-artemis by eclipse.

the class AbstractColumnRepositoryAsyncProxy method invoke.

@Override
public Object invoke(Object instance, Method method, Object[] args) throws Throwable {
    String methodName = method.getName();
    ColumnRepositoryType type = ColumnRepositoryType.of(method, args);
    switch(type) {
        case DEFAULT:
            return method.invoke(getRepository(), args);
        case FIND_BY:
            ColumnQuery query = getQueryParser().parse(methodName, args, getClassRepresentation(), getConverters());
            return executeQuery(getCallBack(args), query);
        case FIND_ALL:
            return executeQuery(getCallBack(args), select().from(getClassRepresentation().getName()).build());
        case DELETE_BY:
            ColumnDeleteQuery deleteQuery = getDeleteParser().parse(methodName, args, getClassRepresentation(), getConverters());
            return executeDelete(getCallBack(args), deleteQuery);
        case QUERY:
            ColumnQuery columnQuery = ColumnRepositoryType.getQuery(args).get();
            return executeQuery(getCallBack(args), columnQuery);
        case QUERY_DELETE:
            return executeDelete(args, ColumnRepositoryType.getDeleteQuery(args).get());
        case OBJECT_METHOD:
            return method.invoke(this, args);
        default:
            return Void.class;
    }
}
Also used : ColumnQuery(org.jnosql.diana.api.column.ColumnQuery) ColumnDeleteQuery(org.jnosql.diana.api.column.ColumnDeleteQuery)

Example 2 with ColumnDeleteQuery

use of org.jnosql.diana.api.column.ColumnDeleteQuery in project jnosql-artemis by eclipse.

the class AbstractColumnRepositoryProxy method invoke.

@Override
public Object invoke(Object instance, Method method, Object[] args) throws Throwable {
    String methodName = method.getName();
    ColumnRepositoryType type = ColumnRepositoryType.of(method, args);
    Class<?> typeClass = getClassRepresentation().getClassInstance();
    switch(type) {
        case DEFAULT:
            return method.invoke(getRepository(), args);
        case FIND_BY:
            ColumnQuery query = getQueryParser().parse(methodName, args, getClassRepresentation(), getConverters());
            return returnObject(query, getTemplate(), typeClass, method);
        case FIND_ALL:
            return returnObject(select().from(getClassRepresentation().getName()).build(), getTemplate(), typeClass, method);
        case DELETE_BY:
            ColumnDeleteQuery deleteQuery = getDeleteParser().parse(methodName, args, getClassRepresentation(), getConverters());
            getTemplate().delete(deleteQuery);
            return Void.class;
        case QUERY:
            ColumnQuery columnQuery = getQuery(args).get();
            return returnObject(columnQuery, getTemplate(), typeClass, method);
        case QUERY_DELETE:
            ColumnDeleteQuery columnDeleteQuery = getDeleteQuery(args).get();
            getTemplate().delete(columnDeleteQuery);
            return Void.class;
        case OBJECT_METHOD:
            return method.invoke(this, args);
        default:
            return Void.class;
    }
}
Also used : ColumnQuery(org.jnosql.diana.api.column.ColumnQuery) ColumnDeleteQuery(org.jnosql.diana.api.column.ColumnDeleteQuery)

Example 3 with ColumnDeleteQuery

use of org.jnosql.diana.api.column.ColumnDeleteQuery in project jnosql-artemis by eclipse.

the class AbstractColumnTemplate method delete.

@Override
public <T, ID> void delete(Class<T> entityClass, ID id) {
    requireNonNull(entityClass, "entityClass is required");
    requireNonNull(id, "id is required");
    ClassRepresentation classRepresentation = getClassRepresentations().get(entityClass);
    FieldRepresentation idField = classRepresentation.getId().orElseThrow(() -> IdNotFoundException.newInstance(entityClass));
    Object value = ConverterUtil.getValue(id, classRepresentation, idField.getFieldName(), getConverters());
    ColumnDeleteQuery query = ColumnQueryBuilder.delete().from(classRepresentation.getName()).where(idField.getName()).eq(value).build();
    getManager().delete(query);
}
Also used : FieldRepresentation(org.jnosql.artemis.reflection.FieldRepresentation) ClassRepresentation(org.jnosql.artemis.reflection.ClassRepresentation) ColumnDeleteQuery(org.jnosql.diana.api.column.ColumnDeleteQuery)

Example 4 with ColumnDeleteQuery

use of org.jnosql.diana.api.column.ColumnDeleteQuery in project jnosql-artemis by eclipse.

the class AbstractColumnTemplateAsync method delete.

@Override
public <T, ID> void delete(Class<T> entityClass, ID id) {
    requireNonNull(entityClass, "entityClass is required");
    requireNonNull(id, "id is required");
    ColumnDeleteQuery query = getDeleteQuery(entityClass, id);
    delete(query);
}
Also used : ColumnDeleteQuery(org.jnosql.diana.api.column.ColumnDeleteQuery)

Example 5 with ColumnDeleteQuery

use of org.jnosql.diana.api.column.ColumnDeleteQuery in project jnosql-artemis by eclipse.

the class AbstractColumnTemplateAsync method delete.

@Override
public <T, ID> void delete(Class<T> entityClass, ID id, Consumer<Void> callBack) {
    requireNonNull(entityClass, "entityClass is required");
    requireNonNull(id, "id is required");
    requireNonNull(callBack, "callBack is required");
    ColumnDeleteQuery query = getDeleteQuery(entityClass, id);
    delete(query, callBack);
}
Also used : ColumnDeleteQuery(org.jnosql.diana.api.column.ColumnDeleteQuery)

Aggregations

ColumnDeleteQuery (org.jnosql.diana.api.column.ColumnDeleteQuery)62 Test (org.junit.jupiter.api.Test)57 ColumnCondition (org.jnosql.diana.api.column.ColumnCondition)20 Column (org.jnosql.diana.api.column.Column)15 Person (org.jnosql.artemis.model.Person)13 List (java.util.List)10 ColumnQuery (org.jnosql.diana.api.column.ColumnQuery)9 ColumnEntity (org.jnosql.diana.api.column.ColumnEntity)7 Duration (java.time.Duration)4 Collections.singletonList (java.util.Collections.singletonList)4 Consumer (java.util.function.Consumer)4 ColumnQueryBuilder.delete (org.jnosql.diana.api.column.query.ColumnQueryBuilder.delete)4 ColumnQueryBuilder.select (org.jnosql.diana.api.column.query.ColumnQueryBuilder.select)4 BeforeEach (org.junit.jupiter.api.BeforeEach)4 Arrays.asList (java.util.Arrays.asList)3 Collections.emptyList (java.util.Collections.emptyList)3 Optional (java.util.Optional)3 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)3 AtomicReference (java.util.concurrent.atomic.AtomicReference)3 Inject (javax.inject.Inject)3