diff --git a/Cargo.toml b/Cargo.toml
index 6053abd..9cdd25d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,9 +1,5 @@
[workspace]
-members = [
- "crates/types",
- "crates/lambdas",
- "crates/worker",
-]
+members = ["crates/types", "crates/lambdas", "crates/worker"]
exclude = ["api"]
[workspace.dependencies]
@@ -12,12 +8,16 @@ aws-sdk-s3 = "1.43.0"
aws-sdk-sqs = "1.39.0"
aws-sdk-dynamodb = "1.42.0"
chrono = "0.4.38"
-tokio = {version = "1.39.3", features = ["macros"]}
+tokio = { version = "1.39.3", features = ["macros"] }
serde = "1.0.207"
serde_json = "1.0.128"
thiserror = "1.0.63"
tracing = { version = "0.1.40", features = ["log"] }
-tracing-subscriber = { version = "0.3.18", default-features = false, features = ["fmt", "ansi"] }
+tracing-subscriber = { version = "0.3.18", default-features = false, features = [
+ "fmt",
+ "ansi",
+] }
uuid = { version = "1.10.0", features = ["serde", "v4"] }
-types = {version = "0.0.1", path = "crates/types"}
\ No newline at end of file
+# Internal dependencies
+types = { version = "0.0.1", path = "crates/types" }
diff --git a/crates/lambdas/Cargo.toml b/crates/lambdas/Cargo.toml
index c221c22..5398911 100644
--- a/crates/lambdas/Cargo.toml
+++ b/crates/lambdas/Cargo.toml
@@ -13,16 +13,14 @@ chrono.workspace = true
tokio.workspace = true
serde.workspace = true
serde_json.workspace = true
-thiserror.workspace = true
tracing.workspace = true
tracing-subscriber.workspace = true
uuid.workspace = true
-lambda_runtime = "0.13.0"
lambda_http = "0.13.0"
# Inner crates
-types = {workspace = true}
+types.workspace = true
[[bin]]
name = "generate-presigned-urls"
diff --git a/crates/types/Cargo.toml b/crates/types/Cargo.toml
index c94bb1f..5fbcf59 100644
--- a/crates/types/Cargo.toml
+++ b/crates/types/Cargo.toml
@@ -11,4 +11,4 @@ thiserror.workspace = true
uuid.workspace = true
[dev-dependencies]
-serde_json.workspace = true
\ No newline at end of file
+serde_json.workspace = true
diff --git a/crates/worker/Cargo.toml b/crates/worker/Cargo.toml
index 3f404d7..dc05778 100644
--- a/crates/worker/Cargo.toml
+++ b/crates/worker/Cargo.toml
@@ -9,7 +9,7 @@ aws-sdk-s3.workspace = true
aws-sdk-sqs.workspace = true
aws-sdk-dynamodb.workspace = true
chrono.workspace = true
-tokio = {workspace = true, features = ["rt-multi-thread", "sync"]}
+tokio = { workspace = true, features = ["rt-multi-thread", "sync"] }
serde = { workspace = true, features = ["derive"] }
serde_json.workspace = true
thiserror.workspace = true
diff --git a/crates/worker/src/clients.rs b/crates/worker/src/clients.rs
index e642bf5..557002e 100644
--- a/crates/worker/src/clients.rs
+++ b/crates/worker/src/clients.rs
@@ -1,4 +1,5 @@
-pub mod dynamodb_client;
+pub mod dynamodb_clients;
pub mod errors;
-pub mod s3_client;
+mod retriable;
+pub mod s3_clients;
pub mod sqs_clients;
diff --git a/crates/worker/src/clients/dynamodb_client.rs b/crates/worker/src/clients/dynamodb_client.rs
deleted file mode 100644
index 434aa8f..0000000
--- a/crates/worker/src/clients/dynamodb_client.rs
+++ /dev/null
@@ -1,48 +0,0 @@
-use aws_sdk_dynamodb::types::AttributeValue;
-use aws_sdk_dynamodb::Client;
-use types::item::Item;
-
-use crate::clients::errors::DBError;
-
-#[derive(Clone)]
-pub struct DynamoDBClient {
- pub client: Client,
- pub table_name: String,
-}
-
-impl DynamoDBClient {
- pub fn new(client: Client, table_name: &str) -> Self {
- Self {
- client,
- table_name: table_name.into(),
- }
- }
-
- pub async fn delete_item(&self, id: &str) -> Result<(), DBError> {
- self.client
- .delete_item()
- .table_name(self.table_name.clone())
- .key(Item::primary_key_name(), AttributeValue::S(id.to_string()))
- .send()
- .await?;
-
- Ok(())
- }
-
- pub async fn get_item(&self, key: &str) -> Result