createKxChangeset method
Creates a changeset for a kdb database. A changeset allows you to add and delete existing files by using an ordered list of change requests.
May throw AccessDeniedException.
May throw ConflictException.
May throw InternalServerException.
May throw LimitExceededException.
May throw ResourceNotFoundException.
May throw ThrottlingException.
May throw ValidationException.
Parameter changeRequests :
A list of change request objects that are run in order. A change request
object consists of changeType , s3Path, and
dbPath. A changeType can have the following values:
- PUT – Adds or updates files in a database.
- DELETE – Deletes files in a database.
dbPath attribute
that defines the path within the database directory. All database paths
must start with a leading / and end with a trailing /. The
s3Path attribute defines the s3 source file path and is
required for a PUT change type. The s3path must end with a
trailing / if it is a directory and must end without a trailing / if it is
a file.
Here are few examples of how you can use the change request object:
-
This request adds a single sym file at database root location.
{ "changeType": "PUT", "s3Path":"s3://bucket/db/sym", "dbPath":"/"} -
This request adds files in the given
s3Pathunder the 2020.01.02 partition of the database.{ "changeType": "PUT", "s3Path":"s3://bucket/db/2020.01.02/", "dbPath":"/2020.01.02/"} -
This request adds files in the given
s3Pathunder the taq table partition of the database.[ { "changeType": "PUT", "s3Path":"s3://bucket/db/2020.01.02/taq/", "dbPath":"/2020.01.02/taq/"}] -
This request deletes the 2020.01.02 partition of the database.
[{ "changeType": "DELETE", "dbPath": "/2020.01.02/"} ] -
The DELETE request allows you to delete the existing files under
the 2020.01.02 partition of the database, and the PUT request adds
a new taq table under it.
[ {"changeType": "DELETE", "dbPath":"/2020.01.02/"}, {"changeType": "PUT", "s3Path":"s3://bucket/db/2020.01.02/taq/", "dbPath":"/2020.01.02/taq/"}]
Parameter databaseName :
The name of the kdb database.
Parameter environmentId :
A unique identifier of the kdb environment.
Parameter clientToken :
A token that ensures idempotency. This token expires in 10 minutes.
Implementation
Future<CreateKxChangesetResponse> createKxChangeset({
required List<ChangeRequest> changeRequests,
required String databaseName,
required String environmentId,
String? clientToken,
}) async {
final $payload = <String, dynamic>{
'changeRequests': changeRequests,
'clientToken': clientToken ?? _s.generateIdempotencyToken(),
};
final response = await _protocol.send(
payload: $payload,
method: 'POST',
requestUri:
'/kx/environments/${Uri.encodeComponent(environmentId)}/databases/${Uri.encodeComponent(databaseName)}/changesets',
exceptionFnMap: _exceptionFns,
);
return CreateKxChangesetResponse.fromJson(response);
}