pub type Result<T, E = Error> = std::result::Result<T, E>;
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[cfg(feature = "dynamodb-base")]
#[error(transparent)]
Dynamo(#[from] DynamoDbError),
}
#[cfg(feature = "dynamodb-base")]
#[derive(Debug, thiserror::Error)]
pub enum DynamoDbError {
#[error(
"failed to load previous leaderboard with id {leaderboard_id} for year {year}: {source}"
)]
LoadPreviousLeaderboard {
leaderboard_id: u64,
year: i32,
source: LoadPreviousDynamoDbError,
},
#[error("failed to save leaderboard with id {leaderboard_id} for year {year}: {source}")]
SaveLeaderboard {
leaderboard_id: u64,
year: i32,
source: SaveDynamoDbError,
},
#[error(
"failed to save last error information for leaderboard with id {leaderboard_id} for year {year}: {source}"
)]
SaveLastError {
leaderboard_id: u64,
year: i32,
source: SaveDynamoDbError,
},
#[error("failed to create table {table_name}: {source}")]
CreateTable {
table_name: String,
source: CreateDynamoDbTableError,
},
}
#[cfg(feature = "dynamodb-base")]
#[derive(Debug, thiserror::Error)]
pub enum LoadPreviousDynamoDbError {
#[error("error loading leaderboard data: {0}")]
GetItem(
#[from]
Box<
aws_sdk_dynamodb::error::SdkError<
aws_sdk_dynamodb::operation::get_item::GetItemError,
aws_sdk_dynamodb::config::http::HttpResponse,
>,
>,
),
#[error("failed to deserialize leaderboard data: {0}")]
Deserialize(#[from] serde_dynamo::Error),
}
#[cfg(feature = "dynamodb-base")]
#[derive(Debug, thiserror::Error)]
pub enum SaveDynamoDbError {
#[error("error saving leaderboard data: {0}")]
PutItem(
#[from]
Box<
aws_sdk_dynamodb::error::SdkError<
aws_sdk_dynamodb::operation::put_item::PutItemError,
aws_sdk_dynamodb::config::http::HttpResponse,
>,
>,
),
#[error("error upserting last error information: {0}")]
UpdateItem(
#[from]
Box<
aws_sdk_dynamodb::error::SdkError<
aws_sdk_dynamodb::operation::update_item::UpdateItemError,
aws_sdk_dynamodb::config::http::HttpResponse,
>,
>,
),
#[error("failed to serialize data for DynamoDB: {0}")]
Serialize(#[from] serde_dynamo::Error),
}
#[cfg(feature = "dynamodb-base")]
#[derive(Debug, thiserror::Error)]
pub enum CreateDynamoDbTableError {
#[error("error creating table: {0}")]
CreateTable(
#[from]
Box<
aws_sdk_dynamodb::error::SdkError<
aws_sdk_dynamodb::operation::create_table::CreateTableError,
aws_sdk_dynamodb::config::http::HttpResponse,
>,
>,
),
#[error("error getting table description: {0}")]
DescribeTable(
#[from]
Box<
aws_sdk_dynamodb::error::SdkError<
aws_sdk_dynamodb::operation::describe_table::DescribeTableError,
aws_sdk_dynamodb::config::http::HttpResponse,
>,
>,
),
}