44
55import io .grpc .CallCredentials ;
66import io .reactivex .rxjava3 .core .Single ;
7+ import java .util .concurrent .TimeUnit ;
78import javax .inject .Inject ;
89import org .hypertrace .core .graphql .common .request .ContextualRequest ;
910import org .hypertrace .core .graphql .context .GraphQlRequestContext ;
1011import org .hypertrace .core .graphql .utils .grpc .GrpcChannelRegistry ;
1112import org .hypertrace .core .graphql .utils .grpc .GrpcContextBuilder ;
1213import org .hypertrace .graphql .config .HypertraceGraphQlServiceConfig ;
14+ import org .hypertrace .graphql .label .request .LabelCreateRequest ;
15+ import org .hypertrace .graphql .label .request .LabelUpdateRequest ;
16+ import org .hypertrace .graphql .label .schema .Label ;
1317import org .hypertrace .graphql .label .schema .LabelResultSet ;
1418import org .hypertrace .label .config .service .v1 .GetLabelsRequest ;
1519import org .hypertrace .label .config .service .v1 .GetLabelsResponse ;
@@ -20,18 +24,21 @@ class LabelConfigServiceDao implements LabelDao {
2024 private final LabelsConfigServiceFutureStub labelConfigServiceStub ;
2125 private final GrpcContextBuilder grpcContextBuilder ;
2226 private final HypertraceGraphQlServiceConfig serviceConfig ;
23- private final LabelResponseConverter converter ;
27+ private final LabelRequestConverter requestConverter ;
28+ private final LabelResponseConverter responseConverter ;
2429
2530 @ Inject
2631 LabelConfigServiceDao (
2732 HypertraceGraphQlServiceConfig serviceConfig ,
2833 CallCredentials credentials ,
2934 GrpcContextBuilder grpcContextBuilder ,
3035 GrpcChannelRegistry grpcChannelRegistry ,
31- LabelResponseConverter converter ) {
36+ LabelRequestConverter requestConverter ,
37+ LabelResponseConverter responseConverter ) {
3238 this .grpcContextBuilder = grpcContextBuilder ;
3339 this .serviceConfig = serviceConfig ;
34- this .converter = converter ;
40+ this .requestConverter = requestConverter ;
41+ this .responseConverter = responseConverter ;
3542 this .labelConfigServiceStub =
3643 LabelsConfigServiceGrpc .newFutureStub (
3744 grpcChannelRegistry .forAddress (
@@ -42,7 +49,7 @@ class LabelConfigServiceDao implements LabelDao {
4249 @ Override
4350 public Single <LabelResultSet > getLabels (ContextualRequest request ) {
4451 return this .makeRequest (request .context (), GetLabelsRequest .getDefaultInstance ())
45- .flatMap (serverResponse -> converter . convert ( serverResponse ) );
52+ .flatMap (this . responseConverter :: convert );
4653 }
4754
4855 private Single <GetLabelsResponse > makeRequest (
@@ -57,4 +64,34 @@ private Single<GetLabelsResponse> makeRequest(
5764 serviceConfig .getConfigServiceTimeout ().toMillis (), MILLISECONDS )
5865 .getLabels (request )));
5966 }
67+
68+ @ Override
69+ public Single <Label > createLabel (LabelCreateRequest request ) {
70+ return Single .fromFuture (
71+ this .grpcContextBuilder
72+ .build (request .context ())
73+ .call (
74+ () ->
75+ this .labelConfigServiceStub
76+ .withDeadlineAfter (
77+ serviceConfig .getConfigServiceTimeout ().toMillis (),
78+ TimeUnit .MILLISECONDS )
79+ .createLabel (this .requestConverter .convertCreationRequest (request ))))
80+ .flatMap (this .responseConverter ::convertLabel );
81+ }
82+
83+ @ Override
84+ public Single <Label > updateLabel (LabelUpdateRequest request ) {
85+ return Single .fromFuture (
86+ this .grpcContextBuilder
87+ .build (request .context ())
88+ .call (
89+ () ->
90+ this .labelConfigServiceStub
91+ .withDeadlineAfter (
92+ serviceConfig .getConfigServiceTimeout ().toMillis (),
93+ TimeUnit .MILLISECONDS )
94+ .updateLabel (this .requestConverter .convertUpdateRequest (request ))))
95+ .flatMap (this .responseConverter ::convertUpdateLabel );
96+ }
6097}
0 commit comments