2 schema::local_site_rate_limit,
3 source::local_site_rate_limit::{
5 LocalSiteRateLimitInsertForm,
6 LocalSiteRateLimitUpdateForm,
8 utils::{get_conn, DbPool},
10 use diesel::{dsl::insert_into, result::Error};
11 use diesel_async::RunQueryDsl;
13 impl LocalSiteRateLimit {
14 pub async fn read(pool: &DbPool) -> Result<Self, Error> {
15 let conn = &mut get_conn(pool).await?;
16 local_site_rate_limit::table.first::<Self>(conn).await
19 pub async fn create(pool: &DbPool, form: &LocalSiteRateLimitInsertForm) -> Result<Self, Error> {
20 let conn = &mut get_conn(pool).await?;
21 insert_into(local_site_rate_limit::table)
23 .get_result::<Self>(conn)
26 pub async fn update(pool: &DbPool, form: &LocalSiteRateLimitUpdateForm) -> Result<(), Error> {
27 // avoid error "There are no changes to save. This query cannot be built"
31 let conn = &mut get_conn(pool).await?;
32 diesel::update(local_site_rate_limit::table)
34 .get_result::<Self>(conn)
40 impl LocalSiteRateLimitUpdateForm {
41 fn is_empty(&self) -> bool {
42 self.message.is_none()
43 && self.message_per_second.is_none()
44 && self.post.is_none()
45 && self.post_per_second.is_none()
46 && self.register.is_none()
47 && self.register_per_second.is_none()
48 && self.image.is_none()
49 && self.image_per_second.is_none()
50 && self.comment.is_none()
51 && self.comment_per_second.is_none()
52 && self.search.is_none()
53 && self.search_per_second.is_none()
54 && self.updated.is_none()