@Override
public Backfill store(Backfill backfill) throws IOException {
final Key key = DatastoreStorage.backfillKey(tx.getDatastore().newKeyFactory(), backfill.id());
Entity.Builder builder = Entity.newBuilder(key)
.set(PROPERTY_CONCURRENCY, backfill.concurrency())
.set(PROPERTY_START, instantToTimestamp(backfill.start()))
.set(PROPERTY_END, instantToTimestamp(backfill.end()))
.set(PROPERTY_COMPONENT, backfill.workflowId().componentId())
.set(PROPERTY_WORKFLOW, backfill.workflowId().id())
.set(PROPERTY_SCHEDULE, backfill.schedule().toString())
.set(PROPERTY_NEXT_TRIGGER, instantToTimestamp(backfill.nextTrigger()))
.set(PROPERTY_ALL_TRIGGERED, backfill.allTriggered())
.set(PROPERTY_HALTED, backfill.halted())
.set(PROPERTY_REVERSE, backfill.reverse());
backfill.description().ifPresent(x -> builder.set(PROPERTY_DESCRIPTION, StringValue
.newBuilder(x).setExcludeFromIndexes(true).build()));
if (backfill.triggerParameters().isPresent()) {
final String json = OBJECT_MAPPER.writeValueAsString(backfill.triggerParameters().get());
builder.set(PROPERTY_TRIGGER_PARAMETERS,
StringValue.newBuilder(json).setExcludeFromIndexes(true).build());
}
tx.put(builder.build());
return backfill;
}