···66//! 4. convert cbor data to json
77//! 5. store in db (limit to DB_MAX_REQ / 4 to avoid err)
8899+use std::sync::Arc;
1010+911use ipld_core::cid::multibase::Base;
1012use jacquard::url::Url;
1113use sqlx::{Pool, Postgres, query};
···3436}
35373638pub async fn backfill(
3737- conn: &Pool<Postgres>,
3939+ conn: Arc<Pool<Postgres>>,
3840 time: Option<std::time::Instant>,
3941) -> Result<(), Error> {
4042 let car = load_car(
···5153 // erase all old records and return if it fails
5254 // we dont use diffs bc theyre complex and the overhead is minimal rn
5355 // only real overhead is network latency which would be ~= anyway
5454- let _ = query!("DELETE FROM records").execute(conn).await?;
5656+ let _ = query!("DELETE FROM records").execute(&*conn).await?;
55575658 let data = parse_car(&car)
5759 .await?
···8587 },
8688 );
87898888- if let Err(err) = query.build().execute(conn).await {
9090+ if let Err(err) = query.build().execute(&*conn).await {
8991 // couldnt backfill so go nuclear
9092 // this is program startup so its prolly safe lol
9193 println!("Got error \"{}\"\nDeleting records and exiting...", err);
9292- let _ = query!("DELETE FROM records").execute(conn).await?;
9494+ let _ = query!("DELETE FROM records").execute(&*conn).await?;
9395 panic!()
9496 };
9597 }
+4-2
src/db.rs
···11//! create a connection pool and setup tables before making avaliable
2233+use std::sync::Arc;
44+35use crate::config;
46use sqlx::{Pool, Postgres, migrate, postgres::PgPool};
5766-pub async fn conn() -> Pool<Postgres> {
88+pub async fn conn() -> Arc<Pool<Postgres>> {
79 let conn = match PgPool::connect(&config::DATABASE_URL).await {
810 Ok(val) => val,
911 Err(err) => {
···1517 panic!("Error running migrations: {}", err);
1618 });
17191818- conn
2020+ Arc::new(conn)
1921}