mirror of
https://github.com/LemmyNet/lemmy.git
synced 2024-09-27 05:50:03 +00:00
19a1a077c5
* Add a blocklist for URLs. * Fix SQL format * Make clippy happy. * Use regex for URL matching. * Escape regex chars in URLs. * Use post for modification. * Make URL block regex static and remove API routes. * Add date fields to table and use transaction. * Use Cache for blocklist. * Rename check_links + move list to parameters of process_markdown. * SQL format. * Format, again. * Remove println. * Add API test. * Set a shorter lifetime for regex in debug mode. * Add missing macro. * Update lemmy-js-client * Update api_test/pnpm-lock.yaml * Don't break other tests * Use different URL for test --------- Co-authored-by: Dessalines <dessalines@users.noreply.github.com> Co-authored-by: Nutomic <me@nutomic.com>
49 lines
1.3 KiB
Rust
49 lines
1.3 KiB
Rust
use crate::{
|
|
schema::local_site_url_blocklist,
|
|
source::local_site_url_blocklist::{LocalSiteUrlBlocklist, LocalSiteUrlBlocklistForm},
|
|
utils::{get_conn, DbPool},
|
|
};
|
|
use diesel::{dsl::insert_into, result::Error};
|
|
use diesel_async::{AsyncPgConnection, RunQueryDsl};
|
|
|
|
impl LocalSiteUrlBlocklist {
|
|
pub async fn replace(pool: &mut DbPool<'_>, url_blocklist: Vec<String>) -> Result<(), Error> {
|
|
let conn = &mut get_conn(pool).await?;
|
|
|
|
conn
|
|
.build_transaction()
|
|
.run(|conn| {
|
|
Box::pin(async move {
|
|
use crate::schema::local_site_url_blocklist::dsl::local_site_url_blocklist;
|
|
|
|
Self::clear(conn).await?;
|
|
|
|
let forms = url_blocklist
|
|
.into_iter()
|
|
.map(|url| LocalSiteUrlBlocklistForm { url, updated: None })
|
|
.collect::<Vec<_>>();
|
|
|
|
insert_into(local_site_url_blocklist)
|
|
.values(forms)
|
|
.execute(conn)
|
|
.await?;
|
|
|
|
Ok(())
|
|
}) as _
|
|
})
|
|
.await
|
|
}
|
|
|
|
async fn clear(conn: &mut AsyncPgConnection) -> Result<usize, Error> {
|
|
diesel::delete(local_site_url_blocklist::table)
|
|
.execute(conn)
|
|
.await
|
|
}
|
|
|
|
pub async fn get_all(pool: &mut DbPool<'_>) -> Result<Vec<Self>, Error> {
|
|
let conn = &mut get_conn(pool).await?;
|
|
local_site_url_blocklist::table
|
|
.get_results::<Self>(conn)
|
|
.await
|
|
}
|
|
}
|