88import com .scalar .db .api .ConditionBuilder ;
99import com .scalar .db .api .Consistency ;
1010import com .scalar .db .api .Delete ;
11+ import com .scalar .db .api .DeleteBuilder ;
1112import com .scalar .db .api .DistributedStorage ;
1213import com .scalar .db .api .Get ;
14+ import com .scalar .db .api .GetBuilder ;
1315import com .scalar .db .api .Mutation ;
1416import com .scalar .db .api .Operation ;
1517import com .scalar .db .api .Put ;
@@ -121,17 +123,19 @@ private Delete composeDelete(Operation base, TransactionResult result) throws Ex
121123 Key partitionKey = ScalarDbUtils .getPartitionKey (result , tableMetadata );
122124 Optional <Key > clusteringKey = ScalarDbUtils .getClusteringKey (result , tableMetadata );
123125
124- return Delete .newBuilder ()
125- .namespace (base .forNamespace ().get ())
126- .table (base .forTable ().get ())
127- .partitionKey (partitionKey )
128- .clusteringKey (clusteringKey .orElse (null ))
129- .condition (
130- ConditionBuilder .deleteIf (ConditionBuilder .column (ID ).isEqualToText (id ))
131- .and (ConditionBuilder .column (STATE ).isEqualToInt (result .getState ().get ()))
132- .build ())
133- .consistency (Consistency .LINEARIZABLE )
134- .build ();
126+ DeleteBuilder .Buildable deleteBuilder =
127+ Delete .newBuilder ()
128+ .namespace (base .forNamespace ().get ())
129+ .table (base .forTable ().get ())
130+ .partitionKey (partitionKey )
131+ .condition (
132+ ConditionBuilder .deleteIf (ConditionBuilder .column (ID ).isEqualToText (id ))
133+ .and (ConditionBuilder .column (STATE ).isEqualToInt (result .getState ().get ()))
134+ .build ())
135+ .consistency (Consistency .LINEARIZABLE );
136+ clusteringKey .ifPresent (deleteBuilder ::clusteringKey );
137+
138+ return deleteBuilder .build ();
135139 }
136140
137141 private Optional <TransactionResult > getLatestResult (
@@ -157,15 +161,16 @@ private Optional<TransactionResult> getLatestResult(
157161 }
158162 }
159163
160- Get get =
164+ GetBuilder . BuildableGetWithPartitionKey getBuilder =
161165 Get .newBuilder ()
162166 .namespace (operation .forNamespace ().get ())
163167 .table (operation .forTable ().get ())
164168 .partitionKey (partitionKey )
165- .clusteringKey (clusteringKey )
166- .consistency (Consistency .LINEARIZABLE )
167- .build ();
169+ .consistency (Consistency .LINEARIZABLE );
170+ if (clusteringKey != null ) {
171+ getBuilder .clusteringKey (clusteringKey );
172+ }
168173
169- return storage .get (get ).map (TransactionResult ::new );
174+ return storage .get (getBuilder . build () ).map (TransactionResult ::new );
170175 }
171176}
0 commit comments