···1111#[derive(Error, Debug)]
1212pub enum Error {
1313 #[error("Error loading car file: {}", .0)]
1414- ClientError(#[from] jacquard::error::ClientError),
1414+ Client(#[from] jacquard::error::ClientError),
1515 #[error("Error loading car file: {}", .0)]
1616- RepoError(#[from] jacquard_repo::RepoError),
1616+ Repo(#[from] jacquard_repo::RepoError),
1717 #[error("Missing root block from car file (malformed car file)")]
1818 MissingRoot,
1919}
···3333use std::cmp::Ordering;
3434impl PartialOrd<Tid> for Car {
3535 fn partial_cmp(&self, other: &Tid) -> Option<Ordering> {
3636- return match self.rev.compare_to(other) {
3636+ match self.rev.compare_to(other) {
3737 1 => Some(Ordering::Greater),
3838 0 => Some(Ordering::Equal),
3939 -1 => Some(Ordering::Less),
4040 _ => None,
4141- };
4141+ }
4242 }
4343}
4444···5050 let res = agent.xrpc(pds).send(&req).await?;
51515252 let car = res.buffer();
5353- let car = jacquard_repo::car::parse_car_bytes(&car).await?;
5353+ let car = jacquard_repo::car::parse_car_bytes(car).await?;
54545555 let storage = jacquard_repo::storage::MemoryBlockStore::new_from_blocks(car.blocks);
5656
+17-23
src/backfill/mod.rs
···2727 #[error("Error parsing TID: {}", .0)]
2828 TidParse(#[from] jacquard::types::string::AtStrError),
2929 #[error("{}", .0)]
3030- GetCarError(#[from] crate::backfill::load_car::Error),
3030+ GetCar(#[from] crate::backfill::load_car::Error),
3131 #[error(
3232 "The database claims to be more up to date than the PDS.
3333Most likely either the PDS or repo is broken, or the database has been corrupted.
···3535 )]
3636 DbTidTooLow,
3737 #[error("Database error: {}", .0)]
3838- DbError(#[from] sqlx::Error),
3838+ Db(#[from] sqlx::Error),
3939 #[error("{}", .0)]
4040- ParseCarError(#[from] crate::backfill::parse_car::Error),
4040+ ParseCar(#[from] crate::backfill::parse_car::Error),
4141}
42424343pub async fn backfill(
···9292 let _ = query!("DELETE FROM records").execute(conn).await?;
93939494 let data = parse_car(&car).await?;
9595- let mut data = data.chunks(DB_MAX_REQ / 4);
9595+ let data = data.chunks(DB_MAX_REQ / 4);
96969797 if let Some(time) = time {
9898 println!("Parsed car file ({:?})", time.elapsed());
9999 }
100100 let time = time.map(|_| std::time::Instant::now());
101101102102- while let Some(data) = data.next() {
102102+ for data in data {
103103 let mut query = sqlx::QueryBuilder::new("INSERT INTO records(collection, rkey, record) ");
104104 query.push_values(
105105 data,
···110110 },
111111 );
112112113113- match query.build().execute(conn).await {
114114- Err(err) => {
115115- // couldnt backfill so go nuclear
116116- // this is program startup so its prolly safe lol
117117- println!("Got error \"{}\"\nDeleting records and exiting...", err);
118118- let _ = query!("DELETE FROM records").execute(conn).await?;
119119- panic!()
120120- }
121121- _ => {}
113113+ if let Err(err) = query.build().execute(conn).await {
114114+ // couldnt backfill so go nuclear
115115+ // this is program startup so its prolly safe lol
116116+ println!("Got error \"{}\"\nDeleting records and exiting...", err);
117117+ let _ = query!("DELETE FROM records").execute(conn).await?;
118118+ panic!()
122119 };
123120 }
124121···126123 println!("Saved to database ({:?})", time.elapsed());
127124 }
128125129129- match query!(
126126+ if let Err(err) = query!(
130127 "UPDATE meta SET rev = $1 WHERE did = $2",
131128 car.rev.to_string(),
132129 config::USER.to_string()
···134131 .execute(conn)
135132 .await
136133 {
137137- Err(err) => {
138138- // couldnt save tid so go nuclear
139139- // this is program startup so its prolly safe lol
140140- println!("Got error \"{}\"\nDeleting records and exiting...", err);
141141- let _ = query!("DELETE FROM records").execute(conn).await?;
142142- panic!()
143143- }
144144- _ => {}
134134+ // couldnt save tid so go nuclear
135135+ // this is program startup so its prolly safe lol
136136+ println!("Got error \"{}\"\nDeleting records and exiting...", err);
137137+ let _ = query!("DELETE FROM records").execute(conn).await?;
138138+ panic!()
145139 };
146140147141 Ok(())
+3-3
src/backfill/parse_car.rs
···1111#[derive(Debug, Error)]
1212pub enum Error {
1313 #[error("Error getting records from car file: {}", .0)]
1414- RepoError(#[from] jacquard_repo::RepoError),
1414+ Repo(#[from] jacquard_repo::RepoError),
1515 #[error("Missing CID from car file")]
1616 MissingCid,
1717 #[error("Could not decode record: {}", .0)]
1818- DecodeError(#[from] serde_ipld_dagcbor::DecodeError<std::convert::Infallible>),
1818+ Decode(#[from] serde_ipld_dagcbor::DecodeError<std::convert::Infallible>),
1919 #[error("Could not convert into json: {}", .0)]
2020- IpldToJsonError(#[from] crate::utils::ipld_json::Error),
2020+ IpldToJson(#[from] crate::utils::ipld_json::Error),
2121 #[error("Could not break {} into a collection and rkey", .0)]
2222 MalformedRecordKey(SmolStr),
2323}