Delete posts from the database when they are deleted from bluesky
This commit is contained in:
		
							parent
							
								
									dd33333649
								
							
						
					
					
						commit
						658996d5d5
					
				| 
						 | 
				
			
			@ -13,7 +13,7 @@ Heavily WIP. Doesn't work yet at all, but does read the stream of posts as they
 | 
			
		|||
- [x] Keep subscription state to not lose messages
 | 
			
		||||
- [x] Serve the feed
 | 
			
		||||
- [ ] Publish the feed
 | 
			
		||||
- [ ] Handle deleting of posts
 | 
			
		||||
- [x] Handle deleting of posts
 | 
			
		||||
 | 
			
		||||
## Configuration
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -82,8 +82,7 @@ impl CommitProcessor for PostIndexer {
 | 
			
		|||
                Operation::DeletePost { uri } => {
 | 
			
		||||
                    info!("Received a post to delete: {uri}");
 | 
			
		||||
 | 
			
		||||
                    // TODO: Delete posts from db
 | 
			
		||||
                    // self.database.delete_post(&self.db_connection_pool, &uri).await?;
 | 
			
		||||
                    self.database.delete_post(&uri).await?;
 | 
			
		||||
                }
 | 
			
		||||
                _ => continue,
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,8 @@
 | 
			
		|||
use anyhow::Result;
 | 
			
		||||
use chrono::{DateTime, Utc};
 | 
			
		||||
use scooby::postgres::{insert_into, select, update, Aliasable, Joinable, Orderable, Parameters};
 | 
			
		||||
use scooby::postgres::{
 | 
			
		||||
    delete_from, insert_into, select, update, Aliasable, Joinable, Orderable, Parameters,
 | 
			
		||||
};
 | 
			
		||||
use sqlx::postgres::{PgPool, PgPoolOptions, PgRow};
 | 
			
		||||
use sqlx::query;
 | 
			
		||||
use sqlx::Row;
 | 
			
		||||
| 
						 | 
				
			
			@ -83,6 +85,20 @@ impl Database {
 | 
			
		|||
            .await?)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pub async fn delete_post(&self, uri: &str) -> Result<bool> {
 | 
			
		||||
        let mut params = Parameters::new();
 | 
			
		||||
 | 
			
		||||
        Ok(query(
 | 
			
		||||
            &delete_from("Post")
 | 
			
		||||
                .where_(format!("uri = {}", params.next()))
 | 
			
		||||
                .to_string(),
 | 
			
		||||
        )
 | 
			
		||||
        .bind(uri)
 | 
			
		||||
        .execute(&self.connection_pool)
 | 
			
		||||
        .await
 | 
			
		||||
        .map(|result| result.rows_affected() > 0)?)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pub async fn insert_profile_if_it_doesnt_exist(&self, did: &str) -> Result<bool> {
 | 
			
		||||
        let mut params = Parameters::new();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue