1import type * as SVC from "@distilled.cloud/aws/finspace";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { KxEnvironment } from "./KxEnvironment.ts";
5
6/**
7 * Runtime binding for `finspace:CreateKxChangeset` — ingests data into a kdb database in the bound environment by creating a changeset from staged S3 objects — the Managed kdb data-ingestion primitive.
8 * Provide the implementation with
9 * `Effect.provide(AWS.FinSpace.CreateKxChangesetHttp)`.
10 * ### Ingesting Data
11 * **Example:** Load Ticks from S3
12 * ```typescript
13 * const createChangeset = yield* AWS.FinSpace.CreateKxChangeset(kdb);
14 *
15 * const changeset = yield* createChangeset({
16 * databaseName: "ticks",
17 * changeRequests: [
18 * { changeType: "PUT", s3Path: "s3://bucket/2024.01.02/", dbPath: "/2024.01.02/" },
19 * ],
20 * clientToken: crypto.randomUUID(),
21 * });
22 * ```
23 *
24 * @binding
25 */
26export interface CreateKxChangeset extends Binding.Service<
27 CreateKxChangeset,
28 "AWS.FinSpace.CreateKxChangeset",
29 <K extends KxEnvironment>(
30 environment: K,
31 ) => Effect.Effect<
32 (
33 request: Omit<SVC.CreateKxChangesetRequest, "environmentId">,
34 ) => Effect.Effect<
35 SVC.CreateKxChangesetResponse,
36 SVC.CreateKxChangesetError
37 >
38 >
39> {}
40export const CreateKxChangeset = Binding.Service<CreateKxChangeset>(
41 "AWS.FinSpace.CreateKxChangeset",
42);