createKxChangeset method

Future<CreateKxChangesetResponse> createKxChangeset({
  1. required List<ChangeRequest> changeRequests,
  2. required String databaseName,
  3. required String environmentId,
  4. String? clientToken,
})

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.
All the change requests require a mandatory 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:

  1. This request adds a single sym file at database root location.

    { "changeType": "PUT", "s3Path":"s3://bucket/db/sym", "dbPath":"/"}

  2. This request adds files in the given s3Path under the 2020.01.02 partition of the database.

    { "changeType": "PUT", "s3Path":"s3://bucket/db/2020.01.02/", "dbPath":"/2020.01.02/"}

  3. This request adds files in the given s3Path under the taq table partition of the database.

    [ { "changeType": "PUT", "s3Path":"s3://bucket/db/2020.01.02/taq/", "dbPath":"/2020.01.02/taq/"}]

  4. This request deletes the 2020.01.02 partition of the database.

    [{ "changeType": "DELETE", "dbPath": "/2020.01.02/"} ]

  5. 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);
}