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: &mut DbPool<'_>) -> Result<Self, Error> {
15 let conn = &mut get_conn(pool).await?;
16 local_site_rate_limit::table.first::<Self>(conn).await
20 pool: &mut DbPool<'_>,
21 form: &LocalSiteRateLimitInsertForm,
22 ) -> Result<Self, Error> {
23 let conn = &mut get_conn(pool).await?;
24 insert_into(local_site_rate_limit::table)
26 .get_result::<Self>(conn)
30 pool: &mut DbPool<'_>,
31 form: &LocalSiteRateLimitUpdateForm,
32 ) -> Result<(), Error> {
33 // avoid error "There are no changes to save. This query cannot be built"
37 let conn = &mut get_conn(pool).await?;
38 diesel::update(local_site_rate_limit::table)
40 .get_result::<Self>(conn)
46 impl LocalSiteRateLimitUpdateForm {
47 fn is_empty(&self) -> bool {
48 self.message.is_none()
49 && self.message_per_second.is_none()
50 && self.post.is_none()
51 && self.post_per_second.is_none()
52 && self.register.is_none()
53 && self.register_per_second.is_none()
54 && self.image.is_none()
55 && self.image_per_second.is_none()
56 && self.comment.is_none()
57 && self.comment_per_second.is_none()
58 && self.search.is_none()
59 && self.search_per_second.is_none()
60 && self.updated.is_none()