···257257 deadpool_diesel::Manager<SqliteConnection>,
258258 deadpool_diesel::sqlite::Object,
259259 >,
260260+ actor_db: &deadpool_diesel::Pool<
261261+ deadpool_diesel::Manager<SqliteConnection>,
262262+ deadpool_diesel::sqlite::Object,
263263+ >,
260264) -> Result<()> {
265265+ use crate::schema::actor_store::repo_root::dsl as RepoRootSchema;
261266 use crate::schema::pds::email_token::dsl as EmailTokenSchema;
262267 use crate::schema::pds::refresh_token::dsl as RefreshTokenSchema;
263263- use crate::schema::pds::repo_root::dsl as RepoRootSchema;
264268269269+ let did_clone = did.to_owned();
270270+ _ = actor_db
271271+ .get()
272272+ .await?
273273+ .interact(move |conn| {
274274+ delete(RepoRootSchema::repo_root)
275275+ .filter(RepoRootSchema::did.eq(&did_clone))
276276+ .execute(conn)
277277+ })
278278+ .await
279279+ .expect("Failed to delete actor")?;
265280 let did = did.to_owned();
266281 _ = db
267282 .get()
268283 .await?
269284 .interact(move |conn| {
270270- _ = delete(RepoRootSchema::repo_root)
271271- .filter(RepoRootSchema::did.eq(&did))
272272- .execute(conn)?;
273285 _ = delete(EmailTokenSchema::email_token)
274286 .filter(EmailTokenSchema::did.eq(&did))
275287 .execute(conn)?;
+3-5
src/account_manager/helpers/repo.rs
···44//! Modified for SQLite backend
55use anyhow::Result;
66use cidv10::Cid;
77+use deadpool_diesel::{Manager, Pool, sqlite::Object};
78use diesel::*;
89910pub async fn update_root(
1011 did: String,
1112 cid: Cid,
1213 rev: String,
1313- db: &deadpool_diesel::Pool<
1414- deadpool_diesel::Manager<SqliteConnection>,
1515- deadpool_diesel::sqlite::Object,
1616- >,
1414+ db: &Pool<Manager<SqliteConnection>, Object>,
1715) -> Result<()> {
1816 // @TODO balance risk of a race in the case of a long retry
1919- use crate::schema::pds::repo_root::dsl as RepoRootSchema;
1717+ use crate::schema::actor_store::repo_root::dsl as RepoRootSchema;
20182119 let now = rsky_common::now();
2220
···44//!
55//! Modified for SQLite backend
6677-use crate::models::pds as models;
77+use crate::models::actor_store as models;
88use anyhow::{Result, bail};
99use cidv10::Cid;
1010use diesel::dsl::{count_distinct, exists, not};
···67676868 /// Get metadata for a blob by CID
6969 pub async fn get_blob_metadata(&self, cid: Cid) -> Result<GetBlobMetadataOutput> {
7070- use crate::schema::pds::blob::dsl as BlobSchema;
7070+ use crate::schema::actor_store::blob::dsl as BlobSchema;
71717272 let did = self.did.clone();
7373 let found = self
···112112113113 /// Get all records that reference a specific blob
114114 pub async fn get_records_for_blob(&self, cid: Cid) -> Result<Vec<String>> {
115115- use crate::schema::pds::record_blob::dsl as RecordBlobSchema;
115115+ use crate::schema::actor_store::record_blob::dsl as RecordBlobSchema;
116116117117 let did = self.did.clone();
118118 let res = self
···169169170170 /// Track a blob that hasn't been associated with any records yet
171171 pub async fn track_untethered_blob(&self, metadata: BlobMetadata) -> Result<BlobRef> {
172172- use crate::schema::pds::blob::dsl as BlobSchema;
172172+ use crate::schema::actor_store::blob::dsl as BlobSchema;
173173174174 let did = self.did.clone();
175175 self.db.get().await?.interact(move |conn| {
···254254255255 /// Delete blobs that are no longer referenced by any records
256256 pub async fn delete_dereferenced_blobs(&self, writes: Vec<PreparedWrite>) -> Result<()> {
257257- use crate::schema::pds::blob::dsl as BlobSchema;
258258- use crate::schema::pds::record_blob::dsl as RecordBlobSchema;
257257+ use crate::schema::actor_store::blob::dsl as BlobSchema;
258258+ use crate::schema::actor_store::record_blob::dsl as RecordBlobSchema;
259259260260 // Extract URIs
261261 let uris: Vec<String> = writes
···386386387387 /// Verify a blob and make it permanent
388388 pub async fn verify_blob_and_make_permanent(&self, blob: PreparedBlobRef) -> Result<()> {
389389- use crate::schema::pds::blob::dsl as BlobSchema;
389389+ use crate::schema::actor_store::blob::dsl as BlobSchema;
390390391391 let found = self
392392 .db
···433433434434 /// Associate a blob with a record
435435 pub async fn associate_blob(&self, blob: PreparedBlobRef, record_uri: String) -> Result<()> {
436436- use crate::schema::pds::record_blob::dsl as RecordBlobSchema;
436436+ use crate::schema::actor_store::record_blob::dsl as RecordBlobSchema;
437437438438 let cid = blob.cid.to_string();
439439 let did = self.did.clone();
···460460461461 /// Count all blobs for this actor
462462 pub async fn blob_count(&self) -> Result<i64> {
463463- use crate::schema::pds::blob::dsl as BlobSchema;
463463+ use crate::schema::actor_store::blob::dsl as BlobSchema;
464464465465 let did = self.did.clone();
466466 self.db
···479479480480 /// Count blobs associated with records
481481 pub async fn record_blob_count(&self) -> Result<i64> {
482482- use crate::schema::pds::record_blob::dsl as RecordBlobSchema;
482482+ use crate::schema::actor_store::record_blob::dsl as RecordBlobSchema;
483483484484 let did = self.did.clone();
485485 self.db
···501501 &self,
502502 opts: ListMissingBlobsOpts,
503503 ) -> Result<Vec<ListMissingBlobsRefRecordBlob>> {
504504- use crate::schema::pds::blob::dsl as BlobSchema;
505505- use crate::schema::pds::record_blob::dsl as RecordBlobSchema;
504504+ use crate::schema::actor_store::blob::dsl as BlobSchema;
505505+ use crate::schema::actor_store::record_blob::dsl as RecordBlobSchema;
506506507507 let did = self.did.clone();
508508 self.db
···563563564564 /// List all blobs with optional filtering
565565 pub async fn list_blobs(&self, opts: ListBlobsOpts) -> Result<Vec<String>> {
566566- use crate::schema::pds::record::dsl as RecordSchema;
567567- use crate::schema::pds::record_blob::dsl as RecordBlobSchema;
566566+ use crate::schema::actor_store::record::dsl as RecordSchema;
567567+ use crate::schema::actor_store::record_blob::dsl as RecordBlobSchema;
568568569569 let ListBlobsOpts {
570570 since,
···617617618618 /// Get the takedown status of a blob
619619 pub async fn get_blob_takedown_status(&self, cid: Cid) -> Result<Option<StatusAttr>> {
620620- use crate::schema::pds::blob::dsl as BlobSchema;
620620+ use crate::schema::actor_store::blob::dsl as BlobSchema;
621621622622 self.db
623623 .get()
···653653654654 /// Update the takedown status of a blob
655655 pub async fn update_blob_takedown_status(&self, blob: Cid, takedown: StatusAttr) -> Result<()> {
656656- use crate::schema::pds::blob::dsl as BlobSchema;
656656+ use crate::schema::actor_store::blob::dsl as BlobSchema;
657657658658 let takedown_ref: Option<String> = match takedown.applied {
659659 true => takedown.r#ref.map_or_else(|| Some(now()), Some),
+2-2
src/actor_store/mod.rs
···481481482482 pub async fn destroy(&mut self) -> Result<()> {
483483 let did: String = self.did.clone();
484484- use crate::schema::pds::blob::dsl as BlobSchema;
484484+ use crate::schema::actor_store::blob::dsl as BlobSchema;
485485486486 let blob_rows: Vec<String> = self
487487 .storage
···520520 return Ok(vec![]);
521521 }
522522 let did: String = self.did.clone();
523523- use crate::schema::pds::record::dsl as RecordSchema;
523523+ use crate::schema::actor_store::record::dsl as RecordSchema;
524524525525 let cid_strs: Vec<String> = cids.into_iter().map(|c| c.to_string()).collect();
526526 let touched_uri_strs: Vec<String> = touched_uris.iter().map(|t| t.to_string()).collect();
+3-3
src/actor_store/preference.rs
···44//!
55//! Modified for SQLite backend
6677-use crate::models::pds::AccountPref;
77+use crate::models::actor_store::AccountPref;
88use anyhow::{Result, bail};
99use diesel::*;
1010use rsky_lexicon::app::bsky::actor::RefPreferences;
···3636 namespace: Option<String>,
3737 scope: AuthScope,
3838 ) -> Result<Vec<RefPreferences>> {
3939- use crate::schema::pds::account_pref::dsl as AccountPrefSchema;
3939+ use crate::schema::actor_store::account_pref::dsl as AccountPrefSchema;
40404141 let did = self.did.clone();
4242 self.db
···9999 bail!("Do not have authorization to set preferences.");
100100 }
101101 // get all current prefs for user and prep new pref rows
102102- use crate::schema::pds::account_pref::dsl as AccountPrefSchema;
102102+ use crate::schema::actor_store::account_pref::dsl as AccountPrefSchema;
103103 let all_prefs = AccountPrefSchema::account_pref
104104 .filter(AccountPrefSchema::did.eq(&did))
105105 .select(AccountPref::as_select())
+18-18
src/actor_store/record.rs
···44//!
55//! Modified for SQLite backend
6677-use crate::models::pds::{Backlink, Record, RepoBlock};
77+use crate::models::actor_store::{Backlink, Record, RepoBlock};
88use anyhow::{Result, bail};
99use cidv10::Cid;
1010use diesel::result::Error;
···90909191 /// Count the total number of records.
9292 pub(crate) async fn record_count(&mut self) -> Result<i64> {
9393- use crate::schema::pds::record::dsl::*;
9393+ use crate::schema::actor_store::record::dsl::*;
94949595 let other_did = self.did.clone();
9696 self.db
···106106107107 /// List all collections in the repository.
108108 pub(crate) async fn list_collections(&self) -> Result<Vec<String>> {
109109- use crate::schema::pds::record::dsl::*;
109109+ use crate::schema::actor_store::record::dsl::*;
110110111111 let other_did = self.did.clone();
112112 self.db
···137137 rkey_end: Option<String>,
138138 include_soft_deleted: Option<bool>,
139139 ) -> Result<Vec<RecordsForCollection>> {
140140- use crate::schema::pds::record::dsl as RecordSchema;
141141- use crate::schema::pds::repo_block::dsl as RepoBlockSchema;
140140+ use crate::schema::actor_store::record::dsl as RecordSchema;
141141+ use crate::schema::actor_store::repo_block::dsl as RepoBlockSchema;
142142143143 let include_soft_deleted: bool = include_soft_deleted.unwrap_or(false);
144144 let mut builder = RecordSchema::record
···196196 cid: Option<String>,
197197 include_soft_deleted: Option<bool>,
198198 ) -> Result<Option<GetRecord>> {
199199- use crate::schema::pds::record::dsl as RecordSchema;
200200- use crate::schema::pds::repo_block::dsl as RepoBlockSchema;
199199+ use crate::schema::actor_store::record::dsl as RecordSchema;
200200+ use crate::schema::actor_store::repo_block::dsl as RepoBlockSchema;
201201202202 let include_soft_deleted: bool = include_soft_deleted.unwrap_or(false);
203203 let mut builder = RecordSchema::record
···238238 cid: Option<String>,
239239 include_soft_deleted: Option<bool>,
240240 ) -> Result<bool> {
241241- use crate::schema::pds::record::dsl as RecordSchema;
241241+ use crate::schema::actor_store::record::dsl as RecordSchema;
242242243243 let include_soft_deleted: bool = include_soft_deleted.unwrap_or(false);
244244 let mut builder = RecordSchema::record
···266266 &self,
267267 uri: String,
268268 ) -> Result<Option<StatusAttr>> {
269269- use crate::schema::pds::record::dsl as RecordSchema;
269269+ use crate::schema::actor_store::record::dsl as RecordSchema;
270270271271 let res = self
272272 .db
···304304305305 /// Get the current CID for a record URI.
306306 pub(crate) async fn get_current_record_cid(&self, uri: String) -> Result<Option<Cid>> {
307307- use crate::schema::pds::record::dsl as RecordSchema;
307307+ use crate::schema::actor_store::record::dsl as RecordSchema;
308308309309 let res = self
310310 .db
···333333 path: String,
334334 link_to: String,
335335 ) -> Result<Vec<Record>> {
336336- use crate::schema::pds::backlink::dsl as BacklinkSchema;
337337- use crate::schema::pds::record::dsl as RecordSchema;
336336+ use crate::schema::actor_store::backlink::dsl as BacklinkSchema;
337337+ use crate::schema::actor_store::record::dsl as RecordSchema;
338338339339 let res = self
340340 .db
···432432 bail!("Expected indexed URI to contain a record key")
433433 }
434434435435- use crate::schema::pds::record::dsl as RecordSchema;
435435+ use crate::schema::actor_store::record::dsl as RecordSchema;
436436437437 // Track current version of record
438438 let (record, uri) = self
···473473 #[tracing::instrument(skip_all)]
474474 pub(crate) async fn delete_record(&self, uri: &AtUri) -> Result<()> {
475475 tracing::debug!("@LOG DEBUG RecordReader::delete_record, deleting indexed record {uri}");
476476- use crate::schema::pds::backlink::dsl as BacklinkSchema;
477477- use crate::schema::pds::record::dsl as RecordSchema;
476476+ use crate::schema::actor_store::backlink::dsl as BacklinkSchema;
477477+ use crate::schema::actor_store::record::dsl as RecordSchema;
478478 let uri = uri.to_string();
479479 self.db
480480 .get()
···497497498498 /// Remove backlinks for a URI.
499499 pub(crate) async fn remove_backlinks_by_uri(&self, uri: &AtUri) -> Result<()> {
500500- use crate::schema::pds::backlink::dsl as BacklinkSchema;
500500+ use crate::schema::actor_store::backlink::dsl as BacklinkSchema;
501501 let uri = uri.to_string();
502502 self.db
503503 .get()
···517517 if backlinks.is_empty() {
518518 Ok(())
519519 } else {
520520- use crate::schema::pds::backlink::dsl as BacklinkSchema;
520520+ use crate::schema::actor_store::backlink::dsl as BacklinkSchema;
521521 self.db
522522 .get()
523523 .await?
···538538 uri: &AtUri,
539539 takedown: StatusAttr,
540540 ) -> Result<()> {
541541- use crate::schema::pds::record::dsl as RecordSchema;
541541+ use crate::schema::actor_store::record::dsl as RecordSchema;
542542543543 let takedown_ref: Option<String> = match takedown.applied {
544544 true => takedown
+12-12
src/actor_store/sql_repo.rs
···33//!
44//! Modified for SQLite backend
5566-use crate::models::pds as models;
77-use crate::models::pds::RepoBlock;
66+use crate::models::actor_store as models;
77+use crate::models::actor_store::RepoBlock;
88use anyhow::Result;
99use cidv10::Cid;
1010use diesel::dsl::sql;
···5353 let cid = *cid;
54545555 Box::pin(async move {
5656- use crate::schema::pds::repo_block::dsl as RepoBlockSchema;
5656+ use crate::schema::actor_store::repo_block::dsl as RepoBlockSchema;
5757 let cached = {
5858 let cache_guard = self.cache.read().await;
5959 cache_guard.get(cid).cloned()
···104104 let did: String = self.did.clone();
105105106106 Box::pin(async move {
107107- use crate::schema::pds::repo_block::dsl as RepoBlockSchema;
107107+ use crate::schema::actor_store::repo_block::dsl as RepoBlockSchema;
108108 let cached = {
109109 let mut cache_guard = self.cache.write().await;
110110 cache_guard.get_many(cids)?
···202202 let did: String = self.did.clone();
203203 let bytes_cloned = bytes.clone();
204204 Box::pin(async move {
205205- use crate::schema::pds::repo_block::dsl as RepoBlockSchema;
205205+ use crate::schema::actor_store::repo_block::dsl as RepoBlockSchema;
206206207207 _ = self
208208 .db
···235235 let did: String = self.did.clone();
236236237237 Box::pin(async move {
238238- use crate::schema::pds::repo_block::dsl as RepoBlockSchema;
238238+ use crate::schema::actor_store::repo_block::dsl as RepoBlockSchema;
239239240240 let blocks: Vec<RepoBlock> = to_put
241241 .map
···277277 let now: String = self.now.clone();
278278279279 Box::pin(async move {
280280- use crate::schema::pds::repo_root::dsl as RepoRootSchema;
280280+ use crate::schema::actor_store::repo_root::dsl as RepoRootSchema;
281281282282 let is_create = is_create.unwrap_or(false);
283283 if is_create {
···381381 let did: String = self.did.clone();
382382 let since = since.clone();
383383 let cursor = cursor.clone();
384384- use crate::schema::pds::repo_block::dsl as RepoBlockSchema;
384384+ use crate::schema::actor_store::repo_block::dsl as RepoBlockSchema;
385385386386 Ok(self
387387 .db
···418418419419 pub async fn count_blocks(&self) -> Result<i64> {
420420 let did: String = self.did.clone();
421421- use crate::schema::pds::repo_block::dsl as RepoBlockSchema;
421421+ use crate::schema::actor_store::repo_block::dsl as RepoBlockSchema;
422422423423 let res = self
424424 .db
···439439 /// Proactively cache all blocks from a particular commit (to prevent multiple roundtrips)
440440 pub async fn cache_rev(&mut self, rev: String) -> Result<()> {
441441 let did: String = self.did.clone();
442442- use crate::schema::pds::repo_block::dsl as RepoBlockSchema;
442442+ use crate::schema::actor_store::repo_block::dsl as RepoBlockSchema;
443443444444 let result: Vec<(String, Vec<u8>)> = self
445445 .db
···465465 return Ok(());
466466 }
467467 let did: String = self.did.clone();
468468- use crate::schema::pds::repo_block::dsl as RepoBlockSchema;
468468+ use crate::schema::actor_store::repo_block::dsl as RepoBlockSchema;
469469470470 let cid_strings: Vec<String> = cids.into_iter().map(|c| c.to_string()).collect();
471471 _ = self
···483483484484 pub async fn get_root_detailed(&self) -> Result<CidAndRev> {
485485 let did: String = self.did.clone();
486486- use crate::schema::pds::repo_root::dsl as RepoRootSchema;
486486+ use crate::schema::actor_store::repo_root::dsl as RepoRootSchema;
487487488488 let res = self
489489 .db