blob: ad95666ca940b910b90e68a01332ba04817163c2 [file]
/*
* Copyright 2023 CeresDB Project Authors. Licensed under Apache-2.0.
*/
package io.ceresdb;
import java.util.concurrent.CompletableFuture;
import io.ceresdb.models.Err;
import io.ceresdb.models.Point;
import io.ceresdb.models.RequestContext;
import io.ceresdb.models.Result;
import io.ceresdb.models.WriteOk;
import io.ceresdb.models.WriteRequest;
import io.ceresdb.rpc.Context;
import io.ceresdb.util.StreamWriteBuf;
/**
* CeresDB write API. Writes the streaming data to the database, support
* failed retries.
*
*/
public interface Write {
/**
* @see #write(WriteRequest, Context)
*/
default CompletableFuture<Result<WriteOk, Err>> write(final WriteRequest req) {
return write(req, Context.newDefault());
}
/**
* Write the data stream to the database.
*
* @param req write request
* @param ctx the invoked context
* @return write result
*/
CompletableFuture<Result<WriteOk, Err>> write(final WriteRequest req, final Context ctx);
/**
* @see #streamWrite(RequestContext, String, Context)
*/
default StreamWriteBuf<Point, WriteOk> streamWrite(final String table) {
return streamWrite(null, table, Context.newDefault());
}
default StreamWriteBuf<Point, WriteOk> streamWrite(final RequestContext reqCtx, final String table) {
return streamWrite(reqCtx, table, Context.newDefault());
}
/**
* Executes a stream-write-call, returns a write request observer for streaming-write.
*
* @param table the table to write
* @param ctx the invoked context
* @return a write request observer for streaming-write
*/
StreamWriteBuf<Point, WriteOk> streamWrite(RequestContext reqCtx, final String table, final Context ctx);
}