Skip to content

Commit 269b1a6

Browse files
committed
Added additional default GQL operations
1 parent 9a3c1ec commit 269b1a6

File tree

6 files changed

+117
-13
lines changed

6 files changed

+117
-13
lines changed

structures-core/src/main/java/org/kinotic/structures/internal/endpoints/graphql/DefaultGqlOperationDefinitionService.java

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,23 @@ public DefaultGqlOperationDefinitionService(EntitiesService entitiesService,
8282
.dataFetcherDefinitionFunction(structure -> new BulkSaveDataFetcher(structure.getId(), entitiesService))
8383
.build(),
8484

85+
GqlOperationDefinition.builder()
86+
.operationName(EntityOperation.BULK_UPDATE.methodName())
87+
.operationType(OperationDefinition.Operation.MUTATION)
88+
.fieldDefinitionFunction(args -> {
89+
90+
GraphQLFieldDefinition.Builder builder = newFieldDefinition()
91+
.name(EntityOperation.BULK_UPDATE.methodName() + args.getStructureName())
92+
.type(GraphQLBoolean)
93+
.argument(newArgument().name("input")
94+
.type(nonNull(list(nonNull(args.getInputType())))));
95+
96+
builder = addPolicyIfPresent(builder, args.getEntityOperationsMap().get(EntityOperation.BULK_UPDATE));
97+
return builder.build();
98+
})
99+
.dataFetcherDefinitionFunction(structure -> new BulkUpdateDataFetcher(structure.getId(), entitiesService))
100+
.build(),
101+
85102
GqlOperationDefinition.builder()
86103
.operationName(EntityOperation.COUNT.methodName())
87104
.operationType(OperationDefinition.Operation.QUERY)
@@ -172,7 +189,7 @@ public DefaultGqlOperationDefinitionService(EntitiesService entitiesService,
172189

173190
GraphQLFieldDefinition.Builder builder = newFieldDefinition()
174191
.name(EntityOperation.SAVE.methodName() + args.getStructureName())
175-
.type(GraphQLID)
192+
.type(args.getOutputType())
176193
.argument(newArgument().name("input")
177194
.type(nonNull(args.getInputType())));
178195

@@ -218,6 +235,23 @@ public DefaultGqlOperationDefinitionService(EntitiesService entitiesService,
218235
return builder.build();
219236
})
220237
.dataFetcherDefinitionFunction(structure -> new SearchDataFetcher(structure.getId(), entitiesService, objectMapper))
238+
.build(),
239+
240+
GqlOperationDefinition.builder()
241+
.operationName(EntityOperation.UPDATE.methodName())
242+
.operationType(OperationDefinition.Operation.MUTATION)
243+
.fieldDefinitionFunction(args -> {
244+
245+
GraphQLFieldDefinition.Builder builder = newFieldDefinition()
246+
.name(EntityOperation.UPDATE.methodName() + args.getStructureName())
247+
.type(args.getOutputType())
248+
.argument(newArgument().name("input")
249+
.type(nonNull(args.getInputType())));
250+
251+
builder = addPolicyIfPresent(builder, args.getEntityOperationsMap().get(EntityOperation.UPDATE));
252+
return builder.build();
253+
})
254+
.dataFetcherDefinitionFunction(structure -> new UpdateDataFetcher(structure.getId(), entitiesService))
221255
.build()
222256
);
223257
}

structures-core/src/main/java/org/kinotic/structures/internal/endpoints/graphql/datafetchers/BulkSaveDataFetcher.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import graphql.schema.DataFetcher;
44
import graphql.schema.DataFetchingEnvironment;
55
import io.vertx.ext.web.RoutingContext;
6-
import org.apache.commons.lang3.Validate;
76
import org.kinotic.structures.api.domain.EntityContext;
87
import org.kinotic.structures.api.services.EntitiesService;
98
import org.kinotic.structures.internal.endpoints.openapi.RoutingContextToEntityContextAdapter;
@@ -35,10 +34,7 @@ public CompletableFuture<Boolean> get(DataFetchingEnvironment environment) throw
3534

3635
List<Map> entity = environment.getArgument("input");
3736

38-
return entitiesService
39-
.bulkSave(structureId,
40-
entity,
41-
ec)
42-
.thenApply(v -> true);
37+
return entitiesService.bulkSave(structureId, entity, ec)
38+
.thenApply(v -> true);
4339
}
4440
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package org.kinotic.structures.internal.endpoints.graphql.datafetchers;
2+
3+
import graphql.schema.DataFetcher;
4+
import graphql.schema.DataFetchingEnvironment;
5+
import io.vertx.ext.web.RoutingContext;
6+
import org.kinotic.structures.api.domain.EntityContext;
7+
import org.kinotic.structures.api.services.EntitiesService;
8+
import org.kinotic.structures.internal.endpoints.openapi.RoutingContextToEntityContextAdapter;
9+
10+
import java.util.List;
11+
import java.util.Map;
12+
import java.util.Objects;
13+
import java.util.concurrent.CompletableFuture;
14+
15+
/**
16+
* Created by Navíd Mitchell 🤪 on 4/18/23.
17+
*/
18+
@SuppressWarnings("rawtypes")
19+
public class BulkUpdateDataFetcher implements DataFetcher<CompletableFuture<Boolean>> {
20+
21+
private final String structureId;
22+
private final EntitiesService entitiesService;
23+
24+
public BulkUpdateDataFetcher(String structureId, EntitiesService entitiesService) {
25+
this.structureId = structureId;
26+
this.entitiesService = entitiesService;
27+
}
28+
29+
@Override
30+
public CompletableFuture<Boolean> get(DataFetchingEnvironment environment) throws Exception {
31+
RoutingContext rc = environment.getGraphQlContext().get(RoutingContext.class);
32+
Objects.requireNonNull(rc);
33+
EntityContext ec = new RoutingContextToEntityContextAdapter(rc);
34+
35+
List<Map> entity = environment.getArgument("input");
36+
37+
return entitiesService.bulkUpdate(structureId, entity, ec)
38+
.thenApply(v -> true);
39+
}
40+
}

structures-core/src/main/java/org/kinotic/structures/internal/endpoints/graphql/datafetchers/DeleteDataFetcher.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,7 @@ public CompletableFuture<String> get(DataFetchingEnvironment environment) throws
3131

3232
String id = environment.getArgument("id");
3333

34-
return entitiesService.deleteById(structureId,
35-
id,
36-
ec)
34+
return entitiesService.deleteById(structureId, id, ec)
3735
.thenCompose(aVoid -> CompletableFuture.completedFuture(id));
3836
}
3937
}

structures-core/src/main/java/org/kinotic/structures/internal/endpoints/graphql/datafetchers/SaveDataFetcher.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@ public CompletableFuture<Map> get(DataFetchingEnvironment environment) throws Ex
3333

3434
Map entity = environment.getArgument("input");
3535

36-
return entitiesService.save(structureId,
37-
entity,
38-
ec);
36+
return entitiesService.save(structureId, entity, ec);
3937
}
4038
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package org.kinotic.structures.internal.endpoints.graphql.datafetchers;
2+
3+
import graphql.schema.DataFetcher;
4+
import graphql.schema.DataFetchingEnvironment;
5+
import io.vertx.ext.web.RoutingContext;
6+
import org.kinotic.structures.api.domain.EntityContext;
7+
import org.kinotic.structures.api.services.EntitiesService;
8+
import org.kinotic.structures.internal.endpoints.openapi.RoutingContextToEntityContextAdapter;
9+
10+
import java.util.Map;
11+
import java.util.Objects;
12+
import java.util.concurrent.CompletableFuture;
13+
14+
/**
15+
* Created by Navíd Mitchell 🤪 on 4/18/23.
16+
*/
17+
@SuppressWarnings("rawtypes")
18+
public class UpdateDataFetcher implements DataFetcher<CompletableFuture<Map>> {
19+
20+
private final String structureId;
21+
private final EntitiesService entitiesService;
22+
23+
public UpdateDataFetcher(String structureId, EntitiesService entitiesService) {
24+
this.structureId = structureId;
25+
this.entitiesService = entitiesService;
26+
}
27+
28+
@Override
29+
public CompletableFuture<Map> get(DataFetchingEnvironment environment) throws Exception {
30+
RoutingContext rc = environment.getGraphQlContext().get(RoutingContext.class);
31+
Objects.requireNonNull(rc);
32+
EntityContext ec = new RoutingContextToEntityContextAdapter(rc);
33+
34+
Map entity = environment.getArgument("input");
35+
36+
return entitiesService.update(structureId, entity, ec);
37+
}
38+
}

0 commit comments

Comments
 (0)