dynamodb_tools/
error.rs

1use aws_sdk_dynamodb::{
2    error::SdkError,
3    operation::{
4        create_table::CreateTableError, delete_table::DeleteTableError,
5        describe_table::DescribeTableError,
6    },
7};
8use thiserror::Error;
9
10#[derive(Error, Debug)]
11pub enum DynamoToolsError {
12    #[error("Failed to read configuration file '{0}': {1}")]
13    ConfigRead(String, #[source] std::io::Error),
14
15    #[error("Failed to parse configuration file '{0}': {1}")]
16    ConfigParse(String, #[source] serde_yaml::Error),
17
18    #[error("Failed to build AWS SDK config: {0}")]
19    AwsSdkConfig(#[from] aws_sdk_dynamodb::error::BuildError),
20
21    #[error("Missing expected field in configuration or SDK response: {0}")]
22    MissingField(String),
23    #[error("AWS DynamoDB SDK error: {0}")]
24    DynamoDbSdk(#[from] aws_sdk_dynamodb::Error),
25
26    #[error("AWS SDK error during table creation: {0}")]
27    TableCreation(#[from] SdkError<CreateTableError>),
28
29    #[error("AWS SDK error during table deletion: {0}")]
30    TableDeletion(#[from] SdkError<DeleteTableError>),
31
32    #[error("AWS SDK error during table description: {0}")]
33    TableDescribe(#[from] SdkError<DescribeTableError>),
34
35    #[error("Failed to read seed data file '{0}': {1}")]
36    SeedFileRead(String, #[source] std::io::Error),
37
38    #[error("Failed to parse seed data JSON file '{0}': {1}")]
39    SeedJsonParse(String, #[source] serde_json::Error),
40
41    #[error("Failed to convert seed data item to DynamoDB format: {0}")]
42    SeedDynamoConversion(#[from] serde_dynamo::Error),
43
44    #[error("Failed to batch write seed data to table '{0}': {1}")]
45    SeedBatchWrite(
46        String,
47        SdkError<aws_sdk_dynamodb::operation::batch_write_item::BatchWriteItemError>,
48    ),
49
50    #[error("Internal error: {0}")]
51    Internal(String),
52}
53
54pub type Result<T> = std::result::Result<T, DynamoToolsError>;