Skip to content

Commit 8443733

Browse files
committed
insert in batch and nitpicks
1 parent 7cc884c commit 8443733

File tree

7 files changed

+42
-14
lines changed

7 files changed

+42
-14
lines changed

.sqlx/query-600ebc4def7b6cc0fc0ebe17c567ace4e5bb4e7c6f959bcae80304029753d11d.json

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ migrate-status:
4747
@sqlx migrate info --source migrations --database-url $(DATABASE_URL)
4848

4949
# Init dev environment
50-
init-dev: run-db
50+
init-dev: run-db
5151
@until pg_isready -h localhost -p 5434 -U pguser > /dev/null 2>&1; do sleep 1; done
5252
@$(MAKE) migrate-up init-dev-db
5353
# Init dev db (creates DMOB table and seeds data)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
-- Remove update_at trigger
1+
-- Remove updated_at trigger
22
DROP TRIGGER IF EXISTS update_storage_providers_updated_at ON storage_providers;
33
DROP FUNCTION IF EXISTS update_updated_at_column();

url_finder/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,4 @@ uuid = { version = "1.10.0", features = ["v4", "serde"] }
4141
chrono = { version = "0.4.38", features = ["serde"] }
4242
regex = "1.11.1"
4343
moka = { version = "0.12.10", default-features = false, features = ["future"] }
44-
dotenvy = "0.15.7"
44+
dotenvy = "0.15.7"

url_finder/src/background/provider_discovery.rs

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,8 @@ async fn discover_and_sync_providers(
3636

3737
debug!("Found {} distinct providers in dmob", providers.len());
3838

39-
let mut processed = 0;
40-
for provider in &providers {
41-
match sp_repo.insert_if_not_exists(provider).await {
42-
Ok(_) => processed += 1,
43-
Err(e) => error!("Failed to insert provider {}: {:?}", provider, e),
44-
}
39+
match sp_repo.insert_batch_if_not_exists(&providers).await {
40+
Ok(count) => Ok(count),
41+
Err(e) => Err(e),
4542
}
46-
47-
debug!("Processed {} providers", processed);
48-
49-
Ok(providers.len())
5043
}

url_finder/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ async fn main() -> Result<()> {
105105
cache,
106106
});
107107

108-
// Start the provider discovery the background
108+
// Start the provider discovery in the background
109109
tokio::spawn({
110110
let sp_repo = sp_repo.clone();
111111
let deal_repo = deal_repo.clone();

url_finder/src/repository/storage_provider_repo.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ impl StorageProviderRepository {
3030
Self { pool }
3131
}
3232

33+
#[allow(dead_code)]
3334
pub async fn insert_if_not_exists(&self, provider_id: &str) -> Result<()> {
3435
sqlx::query!(
3536
r#"INSERT INTO
@@ -45,6 +46,26 @@ impl StorageProviderRepository {
4546
Ok(())
4647
}
4748

49+
pub async fn insert_batch_if_not_exists(&self, provider_ids: &[String]) -> Result<usize> {
50+
if provider_ids.is_empty() {
51+
return Ok(0);
52+
}
53+
54+
let result = sqlx::query!(
55+
r#"INSERT INTO
56+
storage_providers (provider_id)
57+
SELECT
58+
UNNEST($1::text[])
59+
ON CONFLICT DO NOTHING
60+
"#,
61+
provider_ids
62+
)
63+
.execute(&self.pool)
64+
.await?;
65+
66+
Ok(result.rows_affected() as usize)
67+
}
68+
4869
pub async fn get_by_provider_id(&self, provider_id: &str) -> Result<Option<StorageProvider>> {
4970
Ok(sqlx::query_as!(
5071
StorageProvider,

0 commit comments

Comments
 (0)