1import type * as serverless from "@distilled.cloud/aws/redshift-serverless";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Namespace } from "./Namespace.ts";
5
6/**
7 * Runtime binding for the `RestoreTableFromSnapshot` operation (IAM actions
8 * `redshift-serverless:RestoreTableFromSnapshot`).
9 *
10 * Restores a single table from a snapshot into the bound
11 * {@link Namespace} under a new name — undo for a bad table mutation
12 * without rolling back the whole namespace. Provide the implementation with
13 * `Effect.provide(AWS.RedshiftServerless.RestoreTableFromSnapshotHttp)`.
14 * ### Restoring Data
15 * **Example:** Restore One Table from a Snapshot
16 * ```typescript
17 * // init — resolve the runtime client
18 * const restoreTable = yield* AWS.RedshiftServerless.RestoreTableFromSnapshot(namespace);
19 *
20 * yield* restoreTable({
21 * workgroupName,
22 * snapshotName: "pre-migration-1",
23 * sourceDatabaseName: "dev",
24 * sourceTableName: "orders",
25 * newTableName: "orders_restored",
26 * });
27 * ```
28 *
29 * @binding
30 */
31export interface RestoreTableFromSnapshot extends Binding.Service<
32 RestoreTableFromSnapshot,
33 "AWS.RedshiftServerless.RestoreTableFromSnapshot",
34 (
35 namespace: Namespace,
36 ) => Effect.Effect<
37 (
38 request: Omit<
39 serverless.RestoreTableFromSnapshotRequest,
40 "namespaceName"
41 >,
42 ) => Effect.Effect<
43 serverless.RestoreTableFromSnapshotResponse,
44 serverless.RestoreTableFromSnapshotError
45 >
46 >
47> {}
48export const RestoreTableFromSnapshot =
49 Binding.Service<RestoreTableFromSnapshot>(
50 "AWS.RedshiftServerless.RestoreTableFromSnapshot",
51 );