From c884510173f4af7bf25cd952b601e495e00a9492 Mon Sep 17 00:00:00 2001
From: Dessalines <tyhou13@gmx.com>
Date: Sat, 20 Mar 2021 16:59:07 -0400
Subject: [PATCH] Creating default DB forms. Fixes #1511

---
 crates/api/src/comment.rs                     |   8 +-
 crates/api/src/community.rs                   |  21 +---
 crates/api/src/lib.rs                         |  27 +----
 crates/api/src/local_user.rs                  |  29 +----
 crates/api/src/post.rs                        |  21 +---
 crates/api_structs/src/community.rs           |   4 +-
 crates/apub/src/objects/comment.rs            |   2 +-
 crates/apub/src/objects/community.rs          |   4 +-
 crates/apub/src/objects/post.rs               |   2 +-
 crates/apub/src/objects/private_message.rs    |   2 +-
 .../src/aggregates/comment_aggregates.rs      |  84 ++-------------
 .../src/aggregates/community_aggregates.rs    | 101 ++----------------
 .../src/aggregates/person_aggregates.rs       |  84 ++-------------
 .../src/aggregates/post_aggregates.rs         |  84 ++-------------
 .../src/aggregates/site_aggregates.rs         |  67 +-----------
 crates/db_queries/src/source/activity.rs      |  21 +---
 crates/db_queries/src/source/comment.rs       |  67 +-----------
 crates/db_queries/src/source/community.rs     |  34 +-----
 crates/db_queries/src/source/moderator.rs     |  76 +------------
 .../src/source/password_reset_request.rs      |  27 +----
 crates/db_queries/src/source/person.rs        |  17 +--
 .../db_queries/src/source/person_mention.rs   |  76 +------------
 crates/db_queries/src/source/post.rs          |  50 +--------
 .../db_queries/src/source/private_message.rs  |  41 +------
 crates/db_schema/src/lib.rs                   |  12 ++-
 crates/db_schema/src/source/activity.rs       |   2 +-
 crates/db_schema/src/source/comment.rs        |   4 +-
 crates/db_schema/src/source/community.rs      |   6 +-
 crates/db_schema/src/source/local_user.rs     |   2 +-
 crates/db_schema/src/source/person.rs         |   2 +-
 crates/db_schema/src/source/post.rs           |   4 +-
 .../db_schema/src/source/private_message.rs   |   4 +-
 crates/db_views/src/comment_view.rs           |  59 +---------
 crates/db_views/src/post_view.rs              |  50 +--------
 src/code_migrations.rs                        |  17 +--
 35 files changed, 110 insertions(+), 1001 deletions(-)

diff --git a/crates/api/src/comment.rs b/crates/api/src/comment.rs
index 4fd3f7b2..61f9a704 100644
--- a/crates/api/src/comment.rs
+++ b/crates/api/src/comment.rs
@@ -85,13 +85,7 @@ impl Perform for CreateComment {
       parent_id: data.parent_id.to_owned(),
       post_id: data.post_id,
       creator_id: local_user_view.person.id,
-      removed: None,
-      deleted: None,
-      read: None,
-      published: None,
-      updated: None,
-      ap_id: None,
-      local: true,
+      ..CommentForm::default()
     };
 
     // Create the comment
diff --git a/crates/api/src/community.rs b/crates/api/src/community.rs
index f6ecbf12..cce4dfbc 100644
--- a/crates/api/src/community.rs
+++ b/crates/api/src/community.rs
@@ -168,19 +168,14 @@ impl Perform for CreateCommunity {
       icon,
       banner,
       creator_id: local_user_view.person.id,
-      removed: None,
-      deleted: None,
       nsfw: data.nsfw,
-      updated: None,
       actor_id: Some(community_actor_id.to_owned()),
-      local: true,
       private_key: Some(keypair.private_key),
       public_key: Some(keypair.public_key),
-      last_refreshed_at: None,
-      published: None,
       followers_url: Some(generate_followers_url(&community_actor_id)?),
       inbox_url: Some(generate_inbox_url(&community_actor_id)?),
       shared_inbox_url: Some(Some(generate_shared_inbox_url(&community_actor_id)?)),
+      ..CommunityForm::default()
     };
 
     let inserted_community = match blocking(context.pool(), move |conn| {
@@ -263,23 +258,13 @@ impl Perform for EditCommunity {
     let community_form = CommunityForm {
       name: read_community.name,
       title: data.title.to_owned(),
+      creator_id: read_community.creator_id,
       description: data.description.to_owned(),
       icon,
       banner,
-      creator_id: read_community.creator_id,
-      removed: Some(read_community.removed),
-      deleted: Some(read_community.deleted),
       nsfw: data.nsfw,
       updated: Some(naive_now()),
-      actor_id: Some(read_community.actor_id),
-      local: read_community.local,
-      private_key: read_community.private_key,
-      public_key: read_community.public_key,
-      last_refreshed_at: None,
-      published: None,
-      followers_url: None,
-      inbox_url: None,
-      shared_inbox_url: None,
+      ..CommunityForm::default()
     };
 
     let community_id = data.community_id;
diff --git a/crates/api/src/lib.rs b/crates/api/src/lib.rs
index 8c6fe8a5..fc258d6a 100644
--- a/crates/api/src/lib.rs
+++ b/crates/api/src/lib.rs
@@ -528,38 +528,15 @@ mod tests {
 
     let new_person = PersonForm {
       name: "Gerry9812".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let inserted_person = Person::create(&conn, &new_person).unwrap();
 
     let local_user_form = LocalUserForm {
       person_id: inserted_person.id,
-      email: None,
       password_encrypted: "123456".to_string(),
-      admin: None,
-      show_nsfw: None,
-      theme: None,
-      default_sort_type: None,
-      default_listing_type: None,
-      lang: None,
-      show_avatars: None,
-      send_notifications_to_email: None,
+      ..LocalUserForm::default()
     };
 
     let inserted_local_user = LocalUser::create(&conn, &local_user_form).unwrap();
diff --git a/crates/api/src/local_user.rs b/crates/api/src/local_user.rs
index c43db39c..f7072b6e 100644
--- a/crates/api/src/local_user.rs
+++ b/crates/api/src/local_user.rs
@@ -199,22 +199,12 @@ impl Perform for Register {
     // Register the new person
     let person_form = PersonForm {
       name: data.username.to_owned(),
-      avatar: None,
-      banner: None,
-      preferred_username: None,
-      published: None,
-      updated: None,
-      banned: None,
-      deleted: None,
       actor_id: Some(actor_id.clone()),
-      bio: None,
-      local: Some(true),
       private_key: Some(Some(actor_keypair.private_key)),
       public_key: Some(Some(actor_keypair.public_key)),
-      last_refreshed_at: None,
       inbox_url: Some(generate_inbox_url(&actor_id)?),
       shared_inbox_url: Some(Some(generate_shared_inbox_url(&actor_id)?)),
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     // insert the person
@@ -285,22 +275,14 @@ impl Perform for Register {
           name: default_community_name.to_string(),
           title: "The Default Community".to_string(),
           description: Some("The Default Community".to_string()),
-          nsfw: false,
           creator_id: inserted_person.id,
-          removed: None,
-          deleted: None,
-          updated: None,
           actor_id: Some(actor_id.to_owned()),
-          local: true,
           private_key: Some(main_community_keypair.private_key),
           public_key: Some(main_community_keypair.public_key),
-          last_refreshed_at: None,
-          published: None,
-          icon: None,
-          banner: None,
           followers_url: Some(generate_followers_url(&actor_id)?),
           inbox_url: Some(generate_inbox_url(&actor_id)?),
           shared_inbox_url: Some(Some(generate_shared_inbox_url(&actor_id)?)),
+          ..CommunityForm::default()
         };
         blocking(context.pool(), move |conn| {
           Community::create(conn, &community_form)
@@ -1101,12 +1083,7 @@ impl Perform for CreatePrivateMessage {
       content: content_slurs_removed.to_owned(),
       creator_id: local_user_view.person.id,
       recipient_id: data.recipient_id,
-      deleted: None,
-      read: None,
-      updated: None,
-      ap_id: None,
-      local: true,
-      published: None,
+      ..PrivateMessageForm::default()
     };
 
     let inserted_private_message = match blocking(context.pool(), move |conn| {
diff --git a/crates/api/src/post.rs b/crates/api/src/post.rs
index 9911f672..48153a86 100644
--- a/crates/api/src/post.rs
+++ b/crates/api/src/post.rs
@@ -82,19 +82,12 @@ impl Perform for CreatePost {
       body: data.body.to_owned(),
       community_id: data.community_id,
       creator_id: local_user_view.person.id,
-      removed: None,
-      deleted: None,
       nsfw: data.nsfw,
-      locked: None,
-      stickied: None,
-      updated: None,
       embed_title: iframely_title,
       embed_description: iframely_description,
       embed_html: iframely_html,
       thumbnail_url: pictrs_thumbnail.map(|u| u.into()),
-      ap_id: None,
-      local: true,
-      published: None,
+      ..PostForm::default()
     };
 
     let inserted_post =
@@ -399,24 +392,18 @@ impl Perform for EditPost {
       fetch_iframely_and_pictrs_data(context.client(), data_url).await;
 
     let post_form = PostForm {
+      creator_id: orig_post.creator_id.to_owned(),
+      community_id: orig_post.community_id,
       name: data.name.trim().to_owned(),
       url: data_url.map(|u| u.to_owned().into()),
       body: data.body.to_owned(),
       nsfw: data.nsfw,
-      creator_id: orig_post.creator_id.to_owned(),
-      community_id: orig_post.community_id,
-      removed: Some(orig_post.removed),
-      deleted: Some(orig_post.deleted),
-      locked: Some(orig_post.locked),
-      stickied: Some(orig_post.stickied),
       updated: Some(naive_now()),
       embed_title: iframely_title,
       embed_description: iframely_description,
       embed_html: iframely_html,
       thumbnail_url: pictrs_thumbnail.map(|u| u.into()),
-      ap_id: Some(orig_post.ap_id),
-      local: orig_post.local,
-      published: None,
+      ..PostForm::default()
     };
 
     let post_id = data.post_id;
diff --git a/crates/api_structs/src/community.rs b/crates/api_structs/src/community.rs
index bd0e129d..a0344044 100644
--- a/crates/api_structs/src/community.rs
+++ b/crates/api_structs/src/community.rs
@@ -28,7 +28,7 @@ pub struct CreateCommunity {
   pub description: Option<String>,
   pub icon: Option<String>,
   pub banner: Option<String>,
-  pub nsfw: bool,
+  pub nsfw: Option<bool>,
   pub auth: String,
 }
 
@@ -88,7 +88,7 @@ pub struct EditCommunity {
   pub description: Option<String>,
   pub icon: Option<String>,
   pub banner: Option<String>,
-  pub nsfw: bool,
+  pub nsfw: Option<bool>,
   pub auth: String,
 }
 
diff --git a/crates/apub/src/objects/comment.rs b/crates/apub/src/objects/comment.rs
index cc1d9f03..b09d4f42 100644
--- a/crates/apub/src/objects/comment.rs
+++ b/crates/apub/src/objects/comment.rs
@@ -181,7 +181,7 @@ impl FromApubToForm<NoteExt> for CommentForm {
       updated: note.updated().map(|u| u.to_owned().naive_local()),
       deleted: None,
       ap_id: Some(check_object_domain(note, expected_domain)?),
-      local: false,
+      local: Some(false),
     })
   }
 }
diff --git a/crates/apub/src/objects/community.rs b/crates/apub/src/objects/community.rs
index 93693813..a4c0d6c3 100644
--- a/crates/apub/src/objects/community.rs
+++ b/crates/apub/src/objects/community.rs
@@ -205,9 +205,9 @@ impl FromApubToForm<GroupExt> for CommunityForm {
       published: group.inner.published().map(|u| u.to_owned().naive_local()),
       updated: group.inner.updated().map(|u| u.to_owned().naive_local()),
       deleted: None,
-      nsfw: group.ext_one.sensitive.unwrap_or(false),
+      nsfw: Some(group.ext_one.sensitive.unwrap_or(false)),
       actor_id: Some(check_object_domain(group, expected_domain)?),
-      local: false,
+      local: Some(false),
       private_key: None,
       public_key: Some(group.ext_two.to_owned().public_key.public_key_pem),
       last_refreshed_at: Some(naive_now()),
diff --git a/crates/apub/src/objects/post.rs b/crates/apub/src/objects/post.rs
index 776946cb..8f01218a 100644
--- a/crates/apub/src/objects/post.rs
+++ b/crates/apub/src/objects/post.rs
@@ -217,7 +217,7 @@ impl FromApubToForm<PageExt> for PostForm {
       embed_html: iframely_html,
       thumbnail_url: pictrs_thumbnail.map(|u| u.into()),
       ap_id: Some(check_object_domain(page, expected_domain)?),
-      local: false,
+      local: Some(false),
     })
   }
 }
diff --git a/crates/apub/src/objects/private_message.rs b/crates/apub/src/objects/private_message.rs
index d8c0077c..b332446f 100644
--- a/crates/apub/src/objects/private_message.rs
+++ b/crates/apub/src/objects/private_message.rs
@@ -121,7 +121,7 @@ impl FromApubToForm<NoteExt> for PrivateMessageForm {
       deleted: None,
       read: None,
       ap_id: Some(check_object_domain(note, expected_domain)?),
-      local: false,
+      local: Some(false),
     })
   }
 }
diff --git a/crates/db_queries/src/aggregates/comment_aggregates.rs b/crates/db_queries/src/aggregates/comment_aggregates.rs
index d3e92524..a2bea11e 100644
--- a/crates/db_queries/src/aggregates/comment_aggregates.rs
+++ b/crates/db_queries/src/aggregates/comment_aggregates.rs
@@ -44,44 +44,14 @@ mod tests {
 
     let new_person = PersonForm {
       name: "thommy_comment_agg".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let inserted_person = Person::create(&conn, &new_person).unwrap();
 
     let another_person = PersonForm {
       name: "jerry_comment_agg".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let another_inserted_person = Person::create(&conn, &another_person).unwrap();
@@ -90,45 +60,16 @@ mod tests {
       name: "TIL_comment_agg".into(),
       creator_id: inserted_person.id,
       title: "nada".to_owned(),
-      description: None,
-      nsfw: false,
-      removed: None,
-      deleted: None,
-      updated: None,
-      actor_id: None,
-      local: true,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      published: None,
-      icon: None,
-      banner: None,
-      followers_url: None,
-      inbox_url: None,
-      shared_inbox_url: None,
+      ..CommunityForm::default()
     };
 
     let inserted_community = Community::create(&conn, &new_community).unwrap();
 
     let new_post = PostForm {
       name: "A test post".into(),
-      url: None,
-      body: None,
       creator_id: inserted_person.id,
       community_id: inserted_community.id,
-      removed: None,
-      deleted: None,
-      locked: None,
-      stickied: None,
-      nsfw: false,
-      updated: None,
-      embed_title: None,
-      embed_description: None,
-      embed_html: None,
-      thumbnail_url: None,
-      ap_id: None,
-      local: true,
-      published: None,
+      ..PostForm::default()
     };
 
     let inserted_post = Post::create(&conn, &new_post).unwrap();
@@ -137,14 +78,7 @@ mod tests {
       content: "A test comment".into(),
       creator_id: inserted_person.id,
       post_id: inserted_post.id,
-      removed: None,
-      deleted: None,
-      read: None,
-      parent_id: None,
-      published: None,
-      updated: None,
-      ap_id: None,
-      local: true,
+      ..CommentForm::default()
     };
 
     let inserted_comment = Comment::create(&conn, &comment_form).unwrap();
@@ -153,14 +87,8 @@ mod tests {
       content: "A test comment".into(),
       creator_id: inserted_person.id,
       post_id: inserted_post.id,
-      removed: None,
-      deleted: None,
-      read: None,
       parent_id: Some(inserted_comment.id),
-      published: None,
-      updated: None,
-      ap_id: None,
-      local: true,
+      ..CommentForm::default()
     };
 
     let _inserted_child_comment = Comment::create(&conn, &child_comment_form).unwrap();
diff --git a/crates/db_queries/src/aggregates/community_aggregates.rs b/crates/db_queries/src/aggregates/community_aggregates.rs
index ad90f20f..25c0b394 100644
--- a/crates/db_queries/src/aggregates/community_aggregates.rs
+++ b/crates/db_queries/src/aggregates/community_aggregates.rs
@@ -48,44 +48,14 @@ mod tests {
 
     let new_person = PersonForm {
       name: "thommy_community_agg".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let inserted_person = Person::create(&conn, &new_person).unwrap();
 
     let another_person = PersonForm {
       name: "jerry_community_agg".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let another_inserted_person = Person::create(&conn, &another_person).unwrap();
@@ -94,22 +64,7 @@ mod tests {
       name: "TIL_community_agg".into(),
       creator_id: inserted_person.id,
       title: "nada".to_owned(),
-      description: None,
-      nsfw: false,
-      removed: None,
-      deleted: None,
-      updated: None,
-      actor_id: None,
-      local: true,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      published: None,
-      icon: None,
-      banner: None,
-      followers_url: None,
-      inbox_url: None,
-      shared_inbox_url: None,
+      ..CommunityForm::default()
     };
 
     let inserted_community = Community::create(&conn, &new_community).unwrap();
@@ -118,22 +73,7 @@ mod tests {
       name: "TIL_community_agg_2".into(),
       creator_id: inserted_person.id,
       title: "nada".to_owned(),
-      description: None,
-      nsfw: false,
-      removed: None,
-      deleted: None,
-      updated: None,
-      actor_id: None,
-      local: true,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      published: None,
-      icon: None,
-      banner: None,
-      followers_url: None,
-      inbox_url: None,
-      shared_inbox_url: None,
+      ..CommunityForm::default()
     };
 
     let another_inserted_community = Community::create(&conn, &another_community).unwrap();
@@ -164,23 +104,9 @@ mod tests {
 
     let new_post = PostForm {
       name: "A test post".into(),
-      url: None,
-      body: None,
       creator_id: inserted_person.id,
       community_id: inserted_community.id,
-      removed: None,
-      deleted: None,
-      locked: None,
-      stickied: None,
-      nsfw: false,
-      updated: None,
-      embed_title: None,
-      embed_description: None,
-      embed_html: None,
-      thumbnail_url: None,
-      ap_id: None,
-      local: true,
-      published: None,
+      ..PostForm::default()
     };
 
     let inserted_post = Post::create(&conn, &new_post).unwrap();
@@ -189,14 +115,7 @@ mod tests {
       content: "A test comment".into(),
       creator_id: inserted_person.id,
       post_id: inserted_post.id,
-      removed: None,
-      deleted: None,
-      read: None,
-      parent_id: None,
-      published: None,
-      updated: None,
-      ap_id: None,
-      local: true,
+      ..CommentForm::default()
     };
 
     let inserted_comment = Comment::create(&conn, &comment_form).unwrap();
@@ -205,14 +124,8 @@ mod tests {
       content: "A test comment".into(),
       creator_id: inserted_person.id,
       post_id: inserted_post.id,
-      removed: None,
-      deleted: None,
-      read: None,
       parent_id: Some(inserted_comment.id),
-      published: None,
-      updated: None,
-      ap_id: None,
-      local: true,
+      ..CommentForm::default()
     };
 
     let _inserted_child_comment = Comment::create(&conn, &child_comment_form).unwrap();
diff --git a/crates/db_queries/src/aggregates/person_aggregates.rs b/crates/db_queries/src/aggregates/person_aggregates.rs
index f6a6cd1b..953f74ee 100644
--- a/crates/db_queries/src/aggregates/person_aggregates.rs
+++ b/crates/db_queries/src/aggregates/person_aggregates.rs
@@ -44,44 +44,14 @@ mod tests {
 
     let new_person = PersonForm {
       name: "thommy_user_agg".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let inserted_person = Person::create(&conn, &new_person).unwrap();
 
     let another_person = PersonForm {
       name: "jerry_user_agg".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let another_inserted_person = Person::create(&conn, &another_person).unwrap();
@@ -90,45 +60,16 @@ mod tests {
       name: "TIL_site_agg".into(),
       creator_id: inserted_person.id,
       title: "nada".to_owned(),
-      description: None,
-      nsfw: false,
-      removed: None,
-      deleted: None,
-      updated: None,
-      actor_id: None,
-      local: true,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      published: None,
-      icon: None,
-      banner: None,
-      followers_url: None,
-      inbox_url: None,
-      shared_inbox_url: None,
+      ..CommunityForm::default()
     };
 
     let inserted_community = Community::create(&conn, &new_community).unwrap();
 
     let new_post = PostForm {
       name: "A test post".into(),
-      url: None,
-      body: None,
       creator_id: inserted_person.id,
       community_id: inserted_community.id,
-      removed: None,
-      deleted: None,
-      locked: None,
-      stickied: None,
-      nsfw: false,
-      updated: None,
-      embed_title: None,
-      embed_description: None,
-      embed_html: None,
-      thumbnail_url: None,
-      ap_id: None,
-      local: true,
-      published: None,
+      ..PostForm::default()
     };
 
     let inserted_post = Post::create(&conn, &new_post).unwrap();
@@ -145,14 +86,7 @@ mod tests {
       content: "A test comment".into(),
       creator_id: inserted_person.id,
       post_id: inserted_post.id,
-      removed: None,
-      deleted: None,
-      read: None,
-      parent_id: None,
-      published: None,
-      updated: None,
-      ap_id: None,
-      local: true,
+      ..CommentForm::default()
     };
 
     let inserted_comment = Comment::create(&conn, &comment_form).unwrap();
@@ -170,14 +104,8 @@ mod tests {
       content: "A test comment".into(),
       creator_id: inserted_person.id,
       post_id: inserted_post.id,
-      removed: None,
-      deleted: None,
-      read: None,
       parent_id: Some(inserted_comment.id),
-      published: None,
-      updated: None,
-      ap_id: None,
-      local: true,
+      ..CommentForm::default()
     };
 
     let inserted_child_comment = Comment::create(&conn, &child_comment_form).unwrap();
diff --git a/crates/db_queries/src/aggregates/post_aggregates.rs b/crates/db_queries/src/aggregates/post_aggregates.rs
index a32b9da6..fe738131 100644
--- a/crates/db_queries/src/aggregates/post_aggregates.rs
+++ b/crates/db_queries/src/aggregates/post_aggregates.rs
@@ -48,44 +48,14 @@ mod tests {
 
     let new_person = PersonForm {
       name: "thommy_community_agg".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let inserted_person = Person::create(&conn, &new_person).unwrap();
 
     let another_person = PersonForm {
       name: "jerry_community_agg".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let another_inserted_person = Person::create(&conn, &another_person).unwrap();
@@ -94,45 +64,16 @@ mod tests {
       name: "TIL_community_agg".into(),
       creator_id: inserted_person.id,
       title: "nada".to_owned(),
-      description: None,
-      nsfw: false,
-      removed: None,
-      deleted: None,
-      updated: None,
-      actor_id: None,
-      local: true,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      published: None,
-      icon: None,
-      banner: None,
-      followers_url: None,
-      inbox_url: None,
-      shared_inbox_url: None,
+      ..CommunityForm::default()
     };
 
     let inserted_community = Community::create(&conn, &new_community).unwrap();
 
     let new_post = PostForm {
       name: "A test post".into(),
-      url: None,
-      body: None,
       creator_id: inserted_person.id,
       community_id: inserted_community.id,
-      removed: None,
-      deleted: None,
-      locked: None,
-      stickied: None,
-      nsfw: false,
-      updated: None,
-      embed_title: None,
-      embed_description: None,
-      embed_html: None,
-      thumbnail_url: None,
-      ap_id: None,
-      local: true,
-      published: None,
+      ..PostForm::default()
     };
 
     let inserted_post = Post::create(&conn, &new_post).unwrap();
@@ -141,14 +82,7 @@ mod tests {
       content: "A test comment".into(),
       creator_id: inserted_person.id,
       post_id: inserted_post.id,
-      removed: None,
-      deleted: None,
-      read: None,
-      parent_id: None,
-      published: None,
-      updated: None,
-      ap_id: None,
-      local: true,
+      ..CommentForm::default()
     };
 
     let inserted_comment = Comment::create(&conn, &comment_form).unwrap();
@@ -157,14 +91,8 @@ mod tests {
       content: "A test comment".into(),
       creator_id: inserted_person.id,
       post_id: inserted_post.id,
-      removed: None,
-      deleted: None,
-      read: None,
       parent_id: Some(inserted_comment.id),
-      published: None,
-      updated: None,
-      ap_id: None,
-      local: true,
+      ..CommentForm::default()
     };
 
     let _inserted_child_comment = Comment::create(&conn, &child_comment_form).unwrap();
diff --git a/crates/db_queries/src/aggregates/site_aggregates.rs b/crates/db_queries/src/aggregates/site_aggregates.rs
index 67cb04a7..64fbdf7d 100644
--- a/crates/db_queries/src/aggregates/site_aggregates.rs
+++ b/crates/db_queries/src/aggregates/site_aggregates.rs
@@ -42,22 +42,7 @@ mod tests {
 
     let new_person = PersonForm {
       name: "thommy_site_agg".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let inserted_person = Person::create(&conn, &new_person).unwrap();
@@ -80,45 +65,16 @@ mod tests {
       name: "TIL_site_agg".into(),
       creator_id: inserted_person.id,
       title: "nada".to_owned(),
-      description: None,
-      nsfw: false,
-      removed: None,
-      deleted: None,
-      updated: None,
-      actor_id: None,
-      local: true,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      published: None,
-      icon: None,
-      banner: None,
-      followers_url: None,
-      inbox_url: None,
-      shared_inbox_url: None,
+      ..CommunityForm::default()
     };
 
     let inserted_community = Community::create(&conn, &new_community).unwrap();
 
     let new_post = PostForm {
       name: "A test post".into(),
-      url: None,
-      body: None,
       creator_id: inserted_person.id,
       community_id: inserted_community.id,
-      removed: None,
-      deleted: None,
-      locked: None,
-      stickied: None,
-      nsfw: false,
-      updated: None,
-      embed_title: None,
-      embed_description: None,
-      embed_html: None,
-      thumbnail_url: None,
-      ap_id: None,
-      local: true,
-      published: None,
+      ..PostForm::default()
     };
 
     // Insert two of those posts
@@ -129,14 +85,7 @@ mod tests {
       content: "A test comment".into(),
       creator_id: inserted_person.id,
       post_id: inserted_post.id,
-      removed: None,
-      deleted: None,
-      read: None,
-      parent_id: None,
-      published: None,
-      updated: None,
-      ap_id: None,
-      local: true,
+      ..CommentForm::default()
     };
 
     // Insert two of those comments
@@ -146,14 +95,8 @@ mod tests {
       content: "A test comment".into(),
       creator_id: inserted_person.id,
       post_id: inserted_post.id,
-      removed: None,
-      deleted: None,
-      read: None,
       parent_id: Some(inserted_comment.id),
-      published: None,
-      updated: None,
-      ap_id: None,
-      local: true,
+      ..CommentForm::default()
     };
 
     let _inserted_child_comment = Comment::create(&conn, &child_comment_form).unwrap();
diff --git a/crates/db_queries/src/source/activity.rs b/crates/db_queries/src/source/activity.rs
index 5d345db6..d1fc0622 100644
--- a/crates/db_queries/src/source/activity.rs
+++ b/crates/db_queries/src/source/activity.rs
@@ -74,7 +74,7 @@ impl Activity_ for Activity {
     let activity_form = ActivityForm {
       ap_id,
       data: serde_json::to_value(&data)?,
-      local,
+      local: Some(local),
       sensitive,
       updated: None,
     };
@@ -138,22 +138,7 @@ mod tests {
 
     let creator_form = PersonForm {
       name: "activity_creator_pm".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let inserted_creator = Person::create(&conn, &creator_form).unwrap();
@@ -180,7 +165,7 @@ mod tests {
     let activity_form = ActivityForm {
       ap_id: ap_id.clone(),
       data: test_json.to_owned(),
-      local: true,
+      local: Some(true),
       sensitive: false,
       updated: None,
     };
diff --git a/crates/db_queries/src/source/comment.rs b/crates/db_queries/src/source/comment.rs
index 47965d3b..8d77626a 100644
--- a/crates/db_queries/src/source/comment.rs
+++ b/crates/db_queries/src/source/comment.rs
@@ -246,22 +246,7 @@ mod tests {
 
     let new_person = PersonForm {
       name: "terry".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let inserted_person = Person::create(&conn, &new_person).unwrap();
@@ -269,23 +254,8 @@ mod tests {
     let new_community = CommunityForm {
       name: "test community".to_string(),
       title: "nada".to_owned(),
-      description: None,
       creator_id: inserted_person.id,
-      removed: None,
-      deleted: None,
-      updated: None,
-      nsfw: false,
-      actor_id: None,
-      local: true,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      published: None,
-      banner: None,
-      icon: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      followers_url: None,
+      ..CommunityForm::default()
     };
 
     let inserted_community = Community::create(&conn, &new_community).unwrap();
@@ -293,22 +263,8 @@ mod tests {
     let new_post = PostForm {
       name: "A test post".into(),
       creator_id: inserted_person.id,
-      url: None,
-      body: None,
       community_id: inserted_community.id,
-      removed: None,
-      deleted: None,
-      locked: None,
-      stickied: None,
-      updated: None,
-      nsfw: false,
-      embed_title: None,
-      embed_description: None,
-      embed_html: None,
-      thumbnail_url: None,
-      ap_id: None,
-      local: true,
-      published: None,
+      ..PostForm::default()
     };
 
     let inserted_post = Post::create(&conn, &new_post).unwrap();
@@ -317,14 +273,7 @@ mod tests {
       content: "A test comment".into(),
       creator_id: inserted_person.id,
       post_id: inserted_post.id,
-      removed: None,
-      deleted: None,
-      read: None,
-      parent_id: None,
-      published: None,
-      updated: None,
-      ap_id: None,
-      local: true,
+      ..CommentForm::default()
     };
 
     let inserted_comment = Comment::create(&conn, &comment_form).unwrap();
@@ -349,13 +298,7 @@ mod tests {
       creator_id: inserted_person.id,
       post_id: inserted_post.id,
       parent_id: Some(inserted_comment.id),
-      removed: None,
-      deleted: None,
-      read: None,
-      published: None,
-      updated: None,
-      ap_id: None,
-      local: true,
+      ..CommentForm::default()
     };
 
     let inserted_child_comment = Comment::create(&conn, &child_comment_form).unwrap();
diff --git a/crates/db_queries/src/source/community.rs b/crates/db_queries/src/source/community.rs
index a0038c9d..1970eef8 100644
--- a/crates/db_queries/src/source/community.rs
+++ b/crates/db_queries/src/source/community.rs
@@ -356,22 +356,7 @@ mod tests {
 
     let new_person = PersonForm {
       name: "bobbee".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let inserted_person = Person::create(&conn, &new_person).unwrap();
@@ -380,22 +365,7 @@ mod tests {
       name: "TIL".into(),
       creator_id: inserted_person.id,
       title: "nada".to_owned(),
-      description: None,
-      nsfw: false,
-      removed: None,
-      deleted: None,
-      updated: None,
-      actor_id: None,
-      local: true,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      published: None,
-      icon: None,
-      banner: None,
-      followers_url: None,
-      inbox_url: None,
-      shared_inbox_url: None,
+      ..CommunityForm::default()
     };
 
     let inserted_community = Community::create(&conn, &new_community).unwrap();
diff --git a/crates/db_queries/src/source/moderator.rs b/crates/db_queries/src/source/moderator.rs
index 3b6d2544..c641fffc 100644
--- a/crates/db_queries/src/source/moderator.rs
+++ b/crates/db_queries/src/source/moderator.rs
@@ -209,44 +209,14 @@ mod tests {
 
     let new_mod = PersonForm {
       name: "the mod".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let inserted_mod = Person::create(&conn, &new_mod).unwrap();
 
     let new_person = PersonForm {
       name: "jim2".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let inserted_person = Person::create(&conn, &new_person).unwrap();
@@ -254,46 +224,17 @@ mod tests {
     let new_community = CommunityForm {
       name: "mod_community".to_string(),
       title: "nada".to_owned(),
-      description: None,
       creator_id: inserted_person.id,
-      removed: None,
-      deleted: None,
-      updated: None,
-      nsfw: false,
-      actor_id: None,
-      local: true,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      published: None,
-      icon: None,
-      banner: None,
-      followers_url: None,
-      inbox_url: None,
-      shared_inbox_url: None,
+      ..CommunityForm::default()
     };
 
     let inserted_community = Community::create(&conn, &new_community).unwrap();
 
     let new_post = PostForm {
       name: "A test post thweep".into(),
-      url: None,
-      body: None,
       creator_id: inserted_person.id,
       community_id: inserted_community.id,
-      removed: None,
-      deleted: None,
-      locked: None,
-      stickied: None,
-      updated: None,
-      nsfw: false,
-      embed_title: None,
-      embed_description: None,
-      embed_html: None,
-      thumbnail_url: None,
-      ap_id: None,
-      local: true,
-      published: None,
+      ..PostForm::default()
     };
 
     let inserted_post = Post::create(&conn, &new_post).unwrap();
@@ -302,14 +243,7 @@ mod tests {
       content: "A test comment".into(),
       creator_id: inserted_person.id,
       post_id: inserted_post.id,
-      removed: None,
-      deleted: None,
-      read: None,
-      parent_id: None,
-      published: None,
-      updated: None,
-      ap_id: None,
-      local: true,
+      ..CommentForm::default()
     };
 
     let inserted_comment = Comment::create(&conn, &comment_form).unwrap();
diff --git a/crates/db_queries/src/source/password_reset_request.rs b/crates/db_queries/src/source/password_reset_request.rs
index 654dabf6..6fe4ee3a 100644
--- a/crates/db_queries/src/source/password_reset_request.rs
+++ b/crates/db_queries/src/source/password_reset_request.rs
@@ -95,22 +95,7 @@ mod tests {
 
     let new_person = PersonForm {
       name: "thommy prw".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let inserted_person = Person::create(&conn, &new_person).unwrap();
@@ -118,15 +103,7 @@ mod tests {
     let new_local_user = LocalUserForm {
       person_id: inserted_person.id,
       password_encrypted: "pass".to_string(),
-      email: None,
-      admin: None,
-      show_nsfw: None,
-      theme: None,
-      default_sort_type: None,
-      default_listing_type: None,
-      lang: None,
-      show_avatars: None,
-      send_notifications_to_email: None,
+      ..LocalUserForm::default()
     };
 
     let inserted_local_user = LocalUser::create(&conn, &new_local_user).unwrap();
diff --git a/crates/db_queries/src/source/person.rs b/crates/db_queries/src/source/person.rs
index 40adab3d..6d5ad9b4 100644
--- a/crates/db_queries/src/source/person.rs
+++ b/crates/db_queries/src/source/person.rs
@@ -243,22 +243,7 @@ mod tests {
 
     let new_person = PersonForm {
       name: "holly".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let inserted_person = Person::create(&conn, &new_person).unwrap();
diff --git a/crates/db_queries/src/source/person_mention.rs b/crates/db_queries/src/source/person_mention.rs
index a6a86e78..5a3a7ea6 100644
--- a/crates/db_queries/src/source/person_mention.rs
+++ b/crates/db_queries/src/source/person_mention.rs
@@ -90,44 +90,14 @@ mod tests {
 
     let new_person = PersonForm {
       name: "terrylake".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let inserted_person = Person::create(&conn, &new_person).unwrap();
 
     let recipient_form = PersonForm {
       name: "terrylakes recipient".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let inserted_recipient = Person::create(&conn, &recipient_form).unwrap();
@@ -135,23 +105,8 @@ mod tests {
     let new_community = CommunityForm {
       name: "test community lake".to_string(),
       title: "nada".to_owned(),
-      description: None,
       creator_id: inserted_person.id,
-      removed: None,
-      deleted: None,
-      updated: None,
-      nsfw: false,
-      actor_id: None,
-      local: true,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      published: None,
-      icon: None,
-      banner: None,
-      followers_url: None,
-      inbox_url: None,
-      shared_inbox_url: None,
+      ..CommunityForm::default()
     };
 
     let inserted_community = Community::create(&conn, &new_community).unwrap();
@@ -159,22 +114,8 @@ mod tests {
     let new_post = PostForm {
       name: "A test post".into(),
       creator_id: inserted_person.id,
-      url: None,
-      body: None,
       community_id: inserted_community.id,
-      removed: None,
-      deleted: None,
-      locked: None,
-      stickied: None,
-      updated: None,
-      nsfw: false,
-      embed_title: None,
-      embed_description: None,
-      embed_html: None,
-      thumbnail_url: None,
-      ap_id: None,
-      local: true,
-      published: None,
+      ..PostForm::default()
     };
 
     let inserted_post = Post::create(&conn, &new_post).unwrap();
@@ -183,14 +124,7 @@ mod tests {
       content: "A test comment".into(),
       creator_id: inserted_person.id,
       post_id: inserted_post.id,
-      removed: None,
-      deleted: None,
-      read: None,
-      parent_id: None,
-      published: None,
-      updated: None,
-      ap_id: None,
-      local: true,
+      ..CommentForm::default()
     };
 
     let inserted_comment = Comment::create(&conn, &comment_form).unwrap();
diff --git a/crates/db_queries/src/source/post.rs b/crates/db_queries/src/source/post.rs
index b1f6b7c2..169ca18e 100644
--- a/crates/db_queries/src/source/post.rs
+++ b/crates/db_queries/src/source/post.rs
@@ -273,22 +273,7 @@ mod tests {
 
     let new_person = PersonForm {
       name: "jim".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let inserted_person = Person::create(&conn, &new_person).unwrap();
@@ -296,46 +281,17 @@ mod tests {
     let new_community = CommunityForm {
       name: "test community_3".to_string(),
       title: "nada".to_owned(),
-      description: None,
       creator_id: inserted_person.id,
-      removed: None,
-      deleted: None,
-      updated: None,
-      nsfw: false,
-      actor_id: None,
-      local: true,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      published: None,
-      icon: None,
-      banner: None,
-      followers_url: None,
-      inbox_url: None,
-      shared_inbox_url: None,
+      ..CommunityForm::default()
     };
 
     let inserted_community = Community::create(&conn, &new_community).unwrap();
 
     let new_post = PostForm {
       name: "A test post".into(),
-      url: None,
-      body: None,
       creator_id: inserted_person.id,
       community_id: inserted_community.id,
-      removed: None,
-      deleted: None,
-      locked: None,
-      stickied: None,
-      nsfw: false,
-      updated: None,
-      embed_title: None,
-      embed_description: None,
-      embed_html: None,
-      thumbnail_url: None,
-      ap_id: None,
-      local: true,
-      published: None,
+      ..PostForm::default()
     };
 
     let inserted_post = Post::create(&conn, &new_post).unwrap();
diff --git a/crates/db_queries/src/source/private_message.rs b/crates/db_queries/src/source/private_message.rs
index cd663093..98c8e08c 100644
--- a/crates/db_queries/src/source/private_message.rs
+++ b/crates/db_queries/src/source/private_message.rs
@@ -150,44 +150,14 @@ mod tests {
 
     let creator_form = PersonForm {
       name: "creator_pm".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let inserted_creator = Person::create(&conn, &creator_form).unwrap();
 
     let recipient_form = PersonForm {
       name: "recipient_pm".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let inserted_recipient = Person::create(&conn, &recipient_form).unwrap();
@@ -196,12 +166,7 @@ mod tests {
       content: "A test private message".into(),
       creator_id: inserted_creator.id,
       recipient_id: inserted_recipient.id,
-      deleted: None,
-      read: None,
-      published: None,
-      updated: None,
-      ap_id: None,
-      local: true,
+      ..PrivateMessageForm::default()
     };
 
     let inserted_private_message = PrivateMessage::create(&conn, &private_message_form).unwrap();
diff --git a/crates/db_schema/src/lib.rs b/crates/db_schema/src/lib.rs
index 6b07e5ce..4efa983f 100644
--- a/crates/db_schema/src/lib.rs
+++ b/crates/db_schema/src/lib.rs
@@ -22,7 +22,9 @@ use url::Url;
 pub mod schema;
 pub mod source;
 
-#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, DieselNewType)]
+#[derive(
+  Debug, Copy, Clone, Hash, Eq, PartialEq, Default, Serialize, Deserialize, DieselNewType,
+)]
 pub struct PostId(pub i32);
 
 impl fmt::Display for PostId {
@@ -31,7 +33,9 @@ impl fmt::Display for PostId {
   }
 }
 
-#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, DieselNewType)]
+#[derive(
+  Debug, Copy, Clone, Hash, Eq, PartialEq, Default, Serialize, Deserialize, DieselNewType,
+)]
 pub struct PersonId(pub i32);
 
 #[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, DieselNewType)]
@@ -43,7 +47,9 @@ impl fmt::Display for CommentId {
   }
 }
 
-#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, DieselNewType)]
+#[derive(
+  Debug, Copy, Clone, Hash, Eq, PartialEq, Default, Serialize, Deserialize, DieselNewType,
+)]
 pub struct CommunityId(pub i32);
 
 #[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, DieselNewType)]
diff --git a/crates/db_schema/src/source/activity.rs b/crates/db_schema/src/source/activity.rs
index 7b7f4aba..ced8f3be 100644
--- a/crates/db_schema/src/source/activity.rs
+++ b/crates/db_schema/src/source/activity.rs
@@ -18,7 +18,7 @@ pub struct Activity {
 #[table_name = "activity"]
 pub struct ActivityForm {
   pub data: Value,
-  pub local: bool,
+  pub local: Option<bool>,
   pub updated: Option<chrono::NaiveDateTime>,
   pub ap_id: DbUrl,
   pub sensitive: bool,
diff --git a/crates/db_schema/src/source/comment.rs b/crates/db_schema/src/source/comment.rs
index 8a91f601..fba61f46 100644
--- a/crates/db_schema/src/source/comment.rs
+++ b/crates/db_schema/src/source/comment.rs
@@ -51,7 +51,7 @@ pub struct CommentAlias1 {
   pub local: bool,
 }
 
-#[derive(Insertable, AsChangeset, Clone)]
+#[derive(Insertable, AsChangeset, Clone, Default)]
 #[table_name = "comment"]
 pub struct CommentForm {
   pub creator_id: PersonId,
@@ -64,7 +64,7 @@ pub struct CommentForm {
   pub updated: Option<chrono::NaiveDateTime>,
   pub deleted: Option<bool>,
   pub ap_id: Option<DbUrl>,
-  pub local: bool,
+  pub local: Option<bool>,
 }
 
 #[derive(Identifiable, Queryable, Associations, PartialEq, Debug, Clone)]
diff --git a/crates/db_schema/src/source/community.rs b/crates/db_schema/src/source/community.rs
index 81789ecd..42751027 100644
--- a/crates/db_schema/src/source/community.rs
+++ b/crates/db_schema/src/source/community.rs
@@ -51,7 +51,7 @@ pub struct CommunitySafe {
   pub banner: Option<DbUrl>,
 }
 
-#[derive(Insertable, AsChangeset, Debug)]
+#[derive(Insertable, AsChangeset, Debug, Default)]
 #[table_name = "community"]
 pub struct CommunityForm {
   pub name: String,
@@ -62,9 +62,9 @@ pub struct CommunityForm {
   pub published: Option<chrono::NaiveDateTime>,
   pub updated: Option<chrono::NaiveDateTime>,
   pub deleted: Option<bool>,
-  pub nsfw: bool,
+  pub nsfw: Option<bool>,
   pub actor_id: Option<DbUrl>,
-  pub local: bool,
+  pub local: Option<bool>,
   pub private_key: Option<String>,
   pub public_key: Option<String>,
   pub last_refreshed_at: Option<chrono::NaiveDateTime>,
diff --git a/crates/db_schema/src/source/local_user.rs b/crates/db_schema/src/source/local_user.rs
index d902e6b4..2f4a9fc2 100644
--- a/crates/db_schema/src/source/local_user.rs
+++ b/crates/db_schema/src/source/local_user.rs
@@ -20,7 +20,7 @@ pub struct LocalUser {
 }
 
 // TODO redo these, check table defaults
-#[derive(Insertable, AsChangeset, Clone)]
+#[derive(Insertable, AsChangeset, Clone, Default)]
 #[table_name = "local_user"]
 pub struct LocalUserForm {
   pub person_id: PersonId,
diff --git a/crates/db_schema/src/source/person.rs b/crates/db_schema/src/source/person.rs
index 8c66b1a8..f5f10ac4 100644
--- a/crates/db_schema/src/source/person.rs
+++ b/crates/db_schema/src/source/person.rs
@@ -135,7 +135,7 @@ pub struct PersonSafeAlias2 {
   pub matrix_user_id: Option<String>,
 }
 
-#[derive(Insertable, AsChangeset, Clone)]
+#[derive(Insertable, AsChangeset, Clone, Default)]
 #[table_name = "person"]
 pub struct PersonForm {
   pub name: String,
diff --git a/crates/db_schema/src/source/post.rs b/crates/db_schema/src/source/post.rs
index 34b889d4..87681e01 100644
--- a/crates/db_schema/src/source/post.rs
+++ b/crates/db_schema/src/source/post.rs
@@ -31,7 +31,7 @@ pub struct Post {
   pub local: bool,
 }
 
-#[derive(Insertable, AsChangeset)]
+#[derive(Insertable, AsChangeset, Default)]
 #[table_name = "post"]
 pub struct PostForm {
   pub name: String,
@@ -51,7 +51,7 @@ pub struct PostForm {
   pub embed_html: Option<String>,
   pub thumbnail_url: Option<DbUrl>,
   pub ap_id: Option<DbUrl>,
-  pub local: bool,
+  pub local: Option<bool>,
 }
 
 #[derive(Identifiable, Queryable, Associations, PartialEq, Debug)]
diff --git a/crates/db_schema/src/source/private_message.rs b/crates/db_schema/src/source/private_message.rs
index 6d46c012..6710c2dc 100644
--- a/crates/db_schema/src/source/private_message.rs
+++ b/crates/db_schema/src/source/private_message.rs
@@ -16,7 +16,7 @@ pub struct PrivateMessage {
   pub local: bool,
 }
 
-#[derive(Insertable, AsChangeset)]
+#[derive(Insertable, AsChangeset, Default)]
 #[table_name = "private_message"]
 pub struct PrivateMessageForm {
   pub creator_id: PersonId,
@@ -27,5 +27,5 @@ pub struct PrivateMessageForm {
   pub published: Option<chrono::NaiveDateTime>,
   pub updated: Option<chrono::NaiveDateTime>,
   pub ap_id: Option<DbUrl>,
-  pub local: bool,
+  pub local: Option<bool>,
 }
diff --git a/crates/db_views/src/comment_view.rs b/crates/db_views/src/comment_view.rs
index 478a906f..e44ddfef 100644
--- a/crates/db_views/src/comment_view.rs
+++ b/crates/db_views/src/comment_view.rs
@@ -454,22 +454,7 @@ mod tests {
 
     let new_person = PersonForm {
       name: "timmy".into(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let inserted_person = Person::create(&conn, &new_person).unwrap();
@@ -477,23 +462,8 @@ mod tests {
     let new_community = CommunityForm {
       name: "test community 5".to_string(),
       title: "nada".to_owned(),
-      description: None,
       creator_id: inserted_person.id,
-      removed: None,
-      deleted: None,
-      updated: None,
-      nsfw: false,
-      actor_id: None,
-      local: true,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      published: None,
-      icon: None,
-      banner: None,
-      followers_url: None,
-      inbox_url: None,
-      shared_inbox_url: None,
+      ..CommunityForm::default()
     };
 
     let inserted_community = Community::create(&conn, &new_community).unwrap();
@@ -501,22 +471,8 @@ mod tests {
     let new_post = PostForm {
       name: "A test post 2".into(),
       creator_id: inserted_person.id,
-      url: None,
-      body: None,
       community_id: inserted_community.id,
-      removed: None,
-      deleted: None,
-      locked: None,
-      stickied: None,
-      updated: None,
-      nsfw: false,
-      embed_title: None,
-      embed_description: None,
-      embed_html: None,
-      thumbnail_url: None,
-      ap_id: None,
-      local: true,
-      published: None,
+      ..PostForm::default()
     };
 
     let inserted_post = Post::create(&conn, &new_post).unwrap();
@@ -525,14 +481,7 @@ mod tests {
       content: "A test comment 32".into(),
       creator_id: inserted_person.id,
       post_id: inserted_post.id,
-      parent_id: None,
-      removed: None,
-      deleted: None,
-      read: None,
-      published: None,
-      updated: None,
-      ap_id: None,
-      local: true,
+      ..CommentForm::default()
     };
 
     let inserted_comment = Comment::create(&conn, &comment_form).unwrap();
diff --git a/crates/db_views/src/post_view.rs b/crates/db_views/src/post_view.rs
index 08d889d1..8e305b48 100644
--- a/crates/db_views/src/post_view.rs
+++ b/crates/db_views/src/post_view.rs
@@ -454,22 +454,7 @@ mod tests {
 
     let new_person = PersonForm {
       name: person_name.to_owned(),
-      preferred_username: None,
-      avatar: None,
-      banner: None,
-      banned: None,
-      deleted: None,
-      published: None,
-      updated: None,
-      actor_id: None,
-      bio: None,
-      local: None,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     let inserted_person = Person::create(&conn, &new_person).unwrap();
@@ -477,46 +462,17 @@ mod tests {
     let new_community = CommunityForm {
       name: community_name.to_owned(),
       title: "nada".to_owned(),
-      description: None,
       creator_id: inserted_person.id,
-      removed: None,
-      deleted: None,
-      updated: None,
-      nsfw: false,
-      actor_id: None,
-      local: true,
-      private_key: None,
-      public_key: None,
-      last_refreshed_at: None,
-      published: None,
-      icon: None,
-      banner: None,
-      followers_url: None,
-      inbox_url: None,
-      shared_inbox_url: None,
+      ..CommunityForm::default()
     };
 
     let inserted_community = Community::create(&conn, &new_community).unwrap();
 
     let new_post = PostForm {
       name: post_name.to_owned(),
-      url: None,
-      body: None,
       creator_id: inserted_person.id,
       community_id: inserted_community.id,
-      removed: None,
-      deleted: None,
-      locked: None,
-      stickied: None,
-      updated: None,
-      nsfw: false,
-      embed_title: None,
-      embed_description: None,
-      embed_html: None,
-      thumbnail_url: None,
-      ap_id: None,
-      local: true,
-      published: None,
+      ..PostForm::default()
     };
 
     let inserted_post = Post::create(&conn, &new_post).unwrap();
diff --git a/src/code_migrations.rs b/src/code_migrations.rs
index e9b43356..144c39f8 100644
--- a/src/code_migrations.rs
+++ b/src/code_migrations.rs
@@ -55,22 +55,11 @@ fn user_updates_2020_04_02(conn: &PgConnection) -> Result<(), LemmyError> {
 
     let form = PersonForm {
       name: cperson.name.to_owned(),
-      avatar: None,
-      banner: None,
-      preferred_username: None,
-      published: None,
-      updated: None,
-      banned: None,
-      deleted: None,
       actor_id: Some(generate_apub_endpoint(EndpointType::Person, &cperson.name)?),
-      bio: None,
-      local: None,
       private_key: Some(Some(keypair.private_key)),
       public_key: Some(Some(keypair.public_key)),
       last_refreshed_at: Some(naive_now()),
-      inbox_url: None,
-      shared_inbox_url: None,
-      matrix_user_id: None,
+      ..PersonForm::default()
     };
 
     Person::update(&conn, cperson.id, &form)?;
@@ -103,10 +92,10 @@ fn community_updates_2020_04_02(conn: &PgConnection) -> Result<(), LemmyError> {
       creator_id: ccommunity.creator_id,
       removed: None,
       deleted: None,
-      nsfw: ccommunity.nsfw,
+      nsfw: None,
       updated: None,
       actor_id: Some(community_actor_id.to_owned()),
-      local: ccommunity.local,
+      local: Some(ccommunity.local),
       private_key: Some(keypair.private_key),
       public_key: Some(keypair.public_key),
       last_refreshed_at: Some(naive_now()),
-- 
2.44.1