2 schema::federation_blocklist,
4 federation_blocklist::{FederationBlockList, FederationBlockListForm},
7 utils::{get_conn, DbPool},
9 use diesel::{dsl::insert_into, result::Error};
10 use diesel_async::{AsyncPgConnection, RunQueryDsl};
12 impl FederationBlockList {
13 pub async fn replace(pool: &DbPool, list_opt: Option<Vec<String>>) -> Result<(), Error> {
14 let conn = &mut get_conn(pool).await?;
19 if let Some(list) = list_opt {
20 Self::clear(conn).await?;
23 // Upsert all of these as instances
24 let instance = Instance::read_or_create_with_conn(conn, domain).await?;
26 let form = FederationBlockListForm {
27 instance_id: instance.id,
30 insert_into(federation_blocklist::table)
32 .get_result::<Self>(conn)
44 async fn clear(conn: &mut AsyncPgConnection) -> Result<usize, Error> {
45 diesel::delete(federation_blocklist::table)