use serde::{Deserialize, Serialize};
use vantage_table::table::Table;
use crate::{AwsAccount, eq};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DynamoDbTable {
#[serde(rename = "TableName")]
pub table_name: String,
}
pub fn tables_table(aws: AwsAccount) -> Table<AwsAccount, DynamoDbTable> {
Table::new(
"json10/TableNames:dynamodb/DynamoDB_20120810.ListTables",
aws,
)
.with_id_column("TableName")
}
impl DynamoDbTable {
pub fn from_arn(arn: &str, aws: AwsAccount) -> Option<Table<AwsAccount, DynamoDbTable>> {
let after = arn.split(":table/").nth(1)?;
let name = after.split('/').next().unwrap_or(after);
if name.is_empty() {
return None;
}
let mut t = tables_table(aws);
t.add_condition(eq("TableName", name.to_string()));
Some(t)
}
}