1 use crate::{source::moderator::*, traits::Crud};
2 use diesel::{dsl::*, result::Error, *};
4 // TODO grep for ..xxxDefault()
6 impl Crud for ModRemovePost {
7 type InsertForm = ModRemovePostForm;
8 type UpdateForm = ModRemovePostForm;
10 fn read(conn: &mut PgConnection, from_id: i32) -> Result<Self, Error> {
11 use crate::schema::mod_remove_post::dsl::*;
12 mod_remove_post.find(from_id).first::<Self>(conn)
15 fn create(conn: &mut PgConnection, form: &ModRemovePostForm) -> Result<Self, Error> {
16 use crate::schema::mod_remove_post::dsl::*;
17 insert_into(mod_remove_post)
19 .get_result::<Self>(conn)
23 conn: &mut PgConnection,
25 form: &ModRemovePostForm,
26 ) -> Result<Self, Error> {
27 use crate::schema::mod_remove_post::dsl::*;
28 diesel::update(mod_remove_post.find(from_id))
30 .get_result::<Self>(conn)
34 impl Crud for ModLockPost {
35 type InsertForm = ModLockPostForm;
36 type UpdateForm = ModLockPostForm;
38 fn read(conn: &mut PgConnection, from_id: i32) -> Result<Self, Error> {
39 use crate::schema::mod_lock_post::dsl::*;
40 mod_lock_post.find(from_id).first::<Self>(conn)
43 fn create(conn: &mut PgConnection, form: &ModLockPostForm) -> Result<Self, Error> {
44 use crate::schema::mod_lock_post::dsl::*;
45 insert_into(mod_lock_post)
47 .get_result::<Self>(conn)
50 fn update(conn: &mut PgConnection, from_id: i32, form: &ModLockPostForm) -> Result<Self, Error> {
51 use crate::schema::mod_lock_post::dsl::*;
52 diesel::update(mod_lock_post.find(from_id))
54 .get_result::<Self>(conn)
58 impl Crud for ModStickyPost {
59 type InsertForm = ModStickyPostForm;
60 type UpdateForm = ModStickyPostForm;
62 fn read(conn: &mut PgConnection, from_id: i32) -> Result<Self, Error> {
63 use crate::schema::mod_sticky_post::dsl::*;
64 mod_sticky_post.find(from_id).first::<Self>(conn)
67 fn create(conn: &mut PgConnection, form: &ModStickyPostForm) -> Result<Self, Error> {
68 use crate::schema::mod_sticky_post::dsl::*;
69 insert_into(mod_sticky_post)
71 .get_result::<Self>(conn)
75 conn: &mut PgConnection,
77 form: &ModStickyPostForm,
78 ) -> Result<Self, Error> {
79 use crate::schema::mod_sticky_post::dsl::*;
80 diesel::update(mod_sticky_post.find(from_id))
82 .get_result::<Self>(conn)
86 impl Crud for ModRemoveComment {
87 type InsertForm = ModRemoveCommentForm;
88 type UpdateForm = ModRemoveCommentForm;
90 fn read(conn: &mut PgConnection, from_id: i32) -> Result<Self, Error> {
91 use crate::schema::mod_remove_comment::dsl::*;
92 mod_remove_comment.find(from_id).first::<Self>(conn)
95 fn create(conn: &mut PgConnection, form: &ModRemoveCommentForm) -> Result<Self, Error> {
96 use crate::schema::mod_remove_comment::dsl::*;
97 insert_into(mod_remove_comment)
99 .get_result::<Self>(conn)
103 conn: &mut PgConnection,
105 form: &ModRemoveCommentForm,
106 ) -> Result<Self, Error> {
107 use crate::schema::mod_remove_comment::dsl::*;
108 diesel::update(mod_remove_comment.find(from_id))
110 .get_result::<Self>(conn)
114 impl Crud for ModRemoveCommunity {
115 type InsertForm = ModRemoveCommunityForm;
116 type UpdateForm = ModRemoveCommunityForm;
118 fn read(conn: &mut PgConnection, from_id: i32) -> Result<Self, Error> {
119 use crate::schema::mod_remove_community::dsl::*;
120 mod_remove_community.find(from_id).first::<Self>(conn)
123 fn create(conn: &mut PgConnection, form: &ModRemoveCommunityForm) -> Result<Self, Error> {
124 use crate::schema::mod_remove_community::dsl::*;
125 insert_into(mod_remove_community)
127 .get_result::<Self>(conn)
131 conn: &mut PgConnection,
133 form: &ModRemoveCommunityForm,
134 ) -> Result<Self, Error> {
135 use crate::schema::mod_remove_community::dsl::*;
136 diesel::update(mod_remove_community.find(from_id))
138 .get_result::<Self>(conn)
142 impl Crud for ModBanFromCommunity {
143 type InsertForm = ModBanFromCommunityForm;
144 type UpdateForm = ModBanFromCommunityForm;
146 fn read(conn: &mut PgConnection, from_id: i32) -> Result<Self, Error> {
147 use crate::schema::mod_ban_from_community::dsl::*;
148 mod_ban_from_community.find(from_id).first::<Self>(conn)
151 fn create(conn: &mut PgConnection, form: &ModBanFromCommunityForm) -> Result<Self, Error> {
152 use crate::schema::mod_ban_from_community::dsl::*;
153 insert_into(mod_ban_from_community)
155 .get_result::<Self>(conn)
159 conn: &mut PgConnection,
161 form: &ModBanFromCommunityForm,
162 ) -> Result<Self, Error> {
163 use crate::schema::mod_ban_from_community::dsl::*;
164 diesel::update(mod_ban_from_community.find(from_id))
166 .get_result::<Self>(conn)
170 impl Crud for ModBan {
171 type InsertForm = ModBanForm;
172 type UpdateForm = ModBanForm;
174 fn read(conn: &mut PgConnection, from_id: i32) -> Result<Self, Error> {
175 use crate::schema::mod_ban::dsl::*;
176 mod_ban.find(from_id).first::<Self>(conn)
179 fn create(conn: &mut PgConnection, form: &ModBanForm) -> Result<Self, Error> {
180 use crate::schema::mod_ban::dsl::*;
181 insert_into(mod_ban).values(form).get_result::<Self>(conn)
184 fn update(conn: &mut PgConnection, from_id: i32, form: &ModBanForm) -> Result<Self, Error> {
185 use crate::schema::mod_ban::dsl::*;
186 diesel::update(mod_ban.find(from_id))
188 .get_result::<Self>(conn)
192 impl Crud for ModHideCommunity {
193 type InsertForm = ModHideCommunityForm;
194 type UpdateForm = ModHideCommunityForm;
197 fn read(conn: &mut PgConnection, from_id: i32) -> Result<Self, Error> {
198 use crate::schema::mod_hide_community::dsl::*;
199 mod_hide_community.find(from_id).first::<Self>(conn)
202 fn create(conn: &mut PgConnection, form: &ModHideCommunityForm) -> Result<Self, Error> {
203 use crate::schema::mod_hide_community::dsl::*;
204 insert_into(mod_hide_community)
206 .get_result::<Self>(conn)
210 conn: &mut PgConnection,
212 form: &ModHideCommunityForm,
213 ) -> Result<Self, Error> {
214 use crate::schema::mod_hide_community::dsl::*;
215 diesel::update(mod_hide_community.find(from_id))
217 .get_result::<Self>(conn)
221 impl Crud for ModAddCommunity {
222 type InsertForm = ModAddCommunityForm;
223 type UpdateForm = ModAddCommunityForm;
225 fn read(conn: &mut PgConnection, from_id: i32) -> Result<Self, Error> {
226 use crate::schema::mod_add_community::dsl::*;
227 mod_add_community.find(from_id).first::<Self>(conn)
230 fn create(conn: &mut PgConnection, form: &ModAddCommunityForm) -> Result<Self, Error> {
231 use crate::schema::mod_add_community::dsl::*;
232 insert_into(mod_add_community)
234 .get_result::<Self>(conn)
238 conn: &mut PgConnection,
240 form: &ModAddCommunityForm,
241 ) -> Result<Self, Error> {
242 use crate::schema::mod_add_community::dsl::*;
243 diesel::update(mod_add_community.find(from_id))
245 .get_result::<Self>(conn)
249 impl Crud for ModTransferCommunity {
250 type InsertForm = ModTransferCommunityForm;
251 type UpdateForm = ModTransferCommunityForm;
253 fn read(conn: &mut PgConnection, from_id: i32) -> Result<Self, Error> {
254 use crate::schema::mod_transfer_community::dsl::*;
255 mod_transfer_community.find(from_id).first::<Self>(conn)
258 fn create(conn: &mut PgConnection, form: &ModTransferCommunityForm) -> Result<Self, Error> {
259 use crate::schema::mod_transfer_community::dsl::*;
260 insert_into(mod_transfer_community)
262 .get_result::<Self>(conn)
266 conn: &mut PgConnection,
268 form: &ModTransferCommunityForm,
269 ) -> Result<Self, Error> {
270 use crate::schema::mod_transfer_community::dsl::*;
271 diesel::update(mod_transfer_community.find(from_id))
273 .get_result::<Self>(conn)
277 impl Crud for ModAdd {
278 type InsertForm = ModAddForm;
279 type UpdateForm = ModAddForm;
281 fn read(conn: &mut PgConnection, from_id: i32) -> Result<Self, Error> {
282 use crate::schema::mod_add::dsl::*;
283 mod_add.find(from_id).first::<Self>(conn)
286 fn create(conn: &mut PgConnection, form: &ModAddForm) -> Result<Self, Error> {
287 use crate::schema::mod_add::dsl::*;
288 insert_into(mod_add).values(form).get_result::<Self>(conn)
291 fn update(conn: &mut PgConnection, from_id: i32, form: &ModAddForm) -> Result<Self, Error> {
292 use crate::schema::mod_add::dsl::*;
293 diesel::update(mod_add.find(from_id))
295 .get_result::<Self>(conn)
299 impl Crud for AdminPurgePerson {
300 type InsertForm = AdminPurgePersonForm;
301 type UpdateForm = AdminPurgePersonForm;
303 fn read(conn: &mut PgConnection, from_id: i32) -> Result<Self, Error> {
304 use crate::schema::admin_purge_person::dsl::*;
305 admin_purge_person.find(from_id).first::<Self>(conn)
308 fn create(conn: &mut PgConnection, form: &Self::InsertForm) -> Result<Self, Error> {
309 use crate::schema::admin_purge_person::dsl::*;
310 insert_into(admin_purge_person)
312 .get_result::<Self>(conn)
315 fn update(conn: &mut PgConnection, from_id: i32, form: &Self::InsertForm) -> Result<Self, Error> {
316 use crate::schema::admin_purge_person::dsl::*;
317 diesel::update(admin_purge_person.find(from_id))
319 .get_result::<Self>(conn)
323 impl Crud for AdminPurgeCommunity {
324 type InsertForm = AdminPurgeCommunityForm;
325 type UpdateForm = AdminPurgeCommunityForm;
327 fn read(conn: &mut PgConnection, from_id: i32) -> Result<Self, Error> {
328 use crate::schema::admin_purge_community::dsl::*;
329 admin_purge_community.find(from_id).first::<Self>(conn)
332 fn create(conn: &mut PgConnection, form: &Self::InsertForm) -> Result<Self, Error> {
333 use crate::schema::admin_purge_community::dsl::*;
334 insert_into(admin_purge_community)
336 .get_result::<Self>(conn)
339 fn update(conn: &mut PgConnection, from_id: i32, form: &Self::InsertForm) -> Result<Self, Error> {
340 use crate::schema::admin_purge_community::dsl::*;
341 diesel::update(admin_purge_community.find(from_id))
343 .get_result::<Self>(conn)
347 impl Crud for AdminPurgePost {
348 type InsertForm = AdminPurgePostForm;
349 type UpdateForm = AdminPurgePostForm;
351 fn read(conn: &mut PgConnection, from_id: i32) -> Result<Self, Error> {
352 use crate::schema::admin_purge_post::dsl::*;
353 admin_purge_post.find(from_id).first::<Self>(conn)
356 fn create(conn: &mut PgConnection, form: &Self::InsertForm) -> Result<Self, Error> {
357 use crate::schema::admin_purge_post::dsl::*;
358 insert_into(admin_purge_post)
360 .get_result::<Self>(conn)
363 fn update(conn: &mut PgConnection, from_id: i32, form: &Self::InsertForm) -> Result<Self, Error> {
364 use crate::schema::admin_purge_post::dsl::*;
365 diesel::update(admin_purge_post.find(from_id))
367 .get_result::<Self>(conn)
371 impl Crud for AdminPurgeComment {
372 type InsertForm = AdminPurgeCommentForm;
373 type UpdateForm = AdminPurgeCommentForm;
375 fn read(conn: &mut PgConnection, from_id: i32) -> Result<Self, Error> {
376 use crate::schema::admin_purge_comment::dsl::*;
377 admin_purge_comment.find(from_id).first::<Self>(conn)
380 fn create(conn: &mut PgConnection, form: &Self::InsertForm) -> Result<Self, Error> {
381 use crate::schema::admin_purge_comment::dsl::*;
382 insert_into(admin_purge_comment)
384 .get_result::<Self>(conn)
387 fn update(conn: &mut PgConnection, from_id: i32, form: &Self::InsertForm) -> Result<Self, Error> {
388 use crate::schema::admin_purge_comment::dsl::*;
389 diesel::update(admin_purge_comment.find(from_id))
391 .get_result::<Self>(conn)
398 source::{comment::*, community::*, instance::Instance, moderator::*, person::*, post::*},
400 utils::establish_unpooled_connection,
402 use serial_test::serial;
408 let conn = &mut establish_unpooled_connection();
410 let inserted_instance = Instance::create(conn, "my_domain.tld").unwrap();
412 let new_mod = PersonInsertForm::builder()
413 .name("the mod".into())
414 .public_key("pubkey".to_string())
415 .instance_id(inserted_instance.id)
418 let inserted_mod = Person::create(conn, &new_mod).unwrap();
420 let new_person = PersonInsertForm::builder()
422 .public_key("pubkey".to_string())
423 .instance_id(inserted_instance.id)
426 let inserted_person = Person::create(conn, &new_person).unwrap();
428 let new_community = CommunityInsertForm::builder()
429 .name("mod_community".to_string())
430 .title("nada".to_owned())
431 .public_key("pubkey".to_string())
432 .instance_id(inserted_instance.id)
435 let inserted_community = Community::create(conn, &new_community).unwrap();
437 let new_post = PostInsertForm::builder()
438 .name("A test post thweep".into())
439 .creator_id(inserted_person.id)
440 .community_id(inserted_community.id)
443 let inserted_post = Post::create(conn, &new_post).unwrap();
445 let comment_form = CommentInsertForm::builder()
446 .content("A test comment".into())
447 .creator_id(inserted_person.id)
448 .post_id(inserted_post.id)
451 let inserted_comment = Comment::create(conn, &comment_form, None).unwrap();
453 // Now the actual tests
456 let mod_remove_post_form = ModRemovePostForm {
457 mod_person_id: inserted_mod.id,
458 post_id: inserted_post.id,
462 let inserted_mod_remove_post = ModRemovePost::create(conn, &mod_remove_post_form).unwrap();
463 let read_mod_remove_post = ModRemovePost::read(conn, inserted_mod_remove_post.id).unwrap();
464 let expected_mod_remove_post = ModRemovePost {
465 id: inserted_mod_remove_post.id,
466 post_id: inserted_post.id,
467 mod_person_id: inserted_mod.id,
470 when_: inserted_mod_remove_post.when_,
475 let mod_lock_post_form = ModLockPostForm {
476 mod_person_id: inserted_mod.id,
477 post_id: inserted_post.id,
480 let inserted_mod_lock_post = ModLockPost::create(conn, &mod_lock_post_form).unwrap();
481 let read_mod_lock_post = ModLockPost::read(conn, inserted_mod_lock_post.id).unwrap();
482 let expected_mod_lock_post = ModLockPost {
483 id: inserted_mod_lock_post.id,
484 post_id: inserted_post.id,
485 mod_person_id: inserted_mod.id,
487 when_: inserted_mod_lock_post.when_,
492 let mod_sticky_post_form = ModStickyPostForm {
493 mod_person_id: inserted_mod.id,
494 post_id: inserted_post.id,
497 let inserted_mod_sticky_post = ModStickyPost::create(conn, &mod_sticky_post_form).unwrap();
498 let read_mod_sticky_post = ModStickyPost::read(conn, inserted_mod_sticky_post.id).unwrap();
499 let expected_mod_sticky_post = ModStickyPost {
500 id: inserted_mod_sticky_post.id,
501 post_id: inserted_post.id,
502 mod_person_id: inserted_mod.id,
503 stickied: Some(true),
504 when_: inserted_mod_sticky_post.when_,
509 let mod_remove_comment_form = ModRemoveCommentForm {
510 mod_person_id: inserted_mod.id,
511 comment_id: inserted_comment.id,
515 let inserted_mod_remove_comment =
516 ModRemoveComment::create(conn, &mod_remove_comment_form).unwrap();
517 let read_mod_remove_comment =
518 ModRemoveComment::read(conn, inserted_mod_remove_comment.id).unwrap();
519 let expected_mod_remove_comment = ModRemoveComment {
520 id: inserted_mod_remove_comment.id,
521 comment_id: inserted_comment.id,
522 mod_person_id: inserted_mod.id,
525 when_: inserted_mod_remove_comment.when_,
530 let mod_remove_community_form = ModRemoveCommunityForm {
531 mod_person_id: inserted_mod.id,
532 community_id: inserted_community.id,
537 let inserted_mod_remove_community =
538 ModRemoveCommunity::create(conn, &mod_remove_community_form).unwrap();
539 let read_mod_remove_community =
540 ModRemoveCommunity::read(conn, inserted_mod_remove_community.id).unwrap();
541 let expected_mod_remove_community = ModRemoveCommunity {
542 id: inserted_mod_remove_community.id,
543 community_id: inserted_community.id,
544 mod_person_id: inserted_mod.id,
548 when_: inserted_mod_remove_community.when_,
551 // ban from community
553 let mod_ban_from_community_form = ModBanFromCommunityForm {
554 mod_person_id: inserted_mod.id,
555 other_person_id: inserted_person.id,
556 community_id: inserted_community.id,
561 let inserted_mod_ban_from_community =
562 ModBanFromCommunity::create(conn, &mod_ban_from_community_form).unwrap();
563 let read_mod_ban_from_community =
564 ModBanFromCommunity::read(conn, inserted_mod_ban_from_community.id).unwrap();
565 let expected_mod_ban_from_community = ModBanFromCommunity {
566 id: inserted_mod_ban_from_community.id,
567 community_id: inserted_community.id,
568 mod_person_id: inserted_mod.id,
569 other_person_id: inserted_person.id,
573 when_: inserted_mod_ban_from_community.when_,
578 let mod_ban_form = ModBanForm {
579 mod_person_id: inserted_mod.id,
580 other_person_id: inserted_person.id,
585 let inserted_mod_ban = ModBan::create(conn, &mod_ban_form).unwrap();
586 let read_mod_ban = ModBan::read(conn, inserted_mod_ban.id).unwrap();
587 let expected_mod_ban = ModBan {
588 id: inserted_mod_ban.id,
589 mod_person_id: inserted_mod.id,
590 other_person_id: inserted_person.id,
594 when_: inserted_mod_ban.when_,
599 let mod_add_community_form = ModAddCommunityForm {
600 mod_person_id: inserted_mod.id,
601 other_person_id: inserted_person.id,
602 community_id: inserted_community.id,
605 let inserted_mod_add_community =
606 ModAddCommunity::create(conn, &mod_add_community_form).unwrap();
607 let read_mod_add_community =
608 ModAddCommunity::read(conn, inserted_mod_add_community.id).unwrap();
609 let expected_mod_add_community = ModAddCommunity {
610 id: inserted_mod_add_community.id,
611 community_id: inserted_community.id,
612 mod_person_id: inserted_mod.id,
613 other_person_id: inserted_person.id,
614 removed: Some(false),
615 when_: inserted_mod_add_community.when_,
620 let mod_add_form = ModAddForm {
621 mod_person_id: inserted_mod.id,
622 other_person_id: inserted_person.id,
625 let inserted_mod_add = ModAdd::create(conn, &mod_add_form).unwrap();
626 let read_mod_add = ModAdd::read(conn, inserted_mod_add.id).unwrap();
627 let expected_mod_add = ModAdd {
628 id: inserted_mod_add.id,
629 mod_person_id: inserted_mod.id,
630 other_person_id: inserted_person.id,
631 removed: Some(false),
632 when_: inserted_mod_add.when_,
635 Comment::delete(conn, inserted_comment.id).unwrap();
636 Post::delete(conn, inserted_post.id).unwrap();
637 Community::delete(conn, inserted_community.id).unwrap();
638 Person::delete(conn, inserted_person.id).unwrap();
639 Person::delete(conn, inserted_mod.id).unwrap();
640 Instance::delete(conn, inserted_instance.id).unwrap();
642 assert_eq!(expected_mod_remove_post, read_mod_remove_post);
643 assert_eq!(expected_mod_lock_post, read_mod_lock_post);
644 assert_eq!(expected_mod_sticky_post, read_mod_sticky_post);
645 assert_eq!(expected_mod_remove_comment, read_mod_remove_comment);
646 assert_eq!(expected_mod_remove_community, read_mod_remove_community);
647 assert_eq!(expected_mod_ban_from_community, read_mod_ban_from_community);
648 assert_eq!(expected_mod_ban, read_mod_ban);
649 assert_eq!(expected_mod_add_community, read_mod_add_community);
650 assert_eq!(expected_mod_add, read_mod_add);