Remove categories (fixes #1429)

This commit is contained in:
Felix Ableitner 2021-02-25 13:16:58 +01:00
parent 40ceec9737
commit 3141ad31de
32 changed files with 45 additions and 205 deletions

View File

@ -170,7 +170,6 @@ impl Perform for CreateCommunity {
description: data.description.to_owned(), description: data.description.to_owned(),
icon, icon,
banner, banner,
category_id: data.category_id,
creator_id: user.id, creator_id: user.id,
removed: None, removed: None,
deleted: None, deleted: None,
@ -273,7 +272,6 @@ impl Perform for EditCommunity {
description: data.description.to_owned(), description: data.description.to_owned(),
icon, icon,
banner, banner,
category_id: data.category_id.to_owned(),
creator_id: read_community.creator_id, creator_id: read_community.creator_id,
removed: Some(read_community.removed), removed: Some(read_community.removed),
deleted: Some(read_community.deleted), deleted: Some(read_community.deleted),

View File

@ -298,9 +298,6 @@ pub async fn match_websocket_operation(
UserOperation::TransferSite => { UserOperation::TransferSite => {
do_websocket_operation::<TransferSite>(context, id, op, data).await do_websocket_operation::<TransferSite>(context, id, op, data).await
} }
UserOperation::ListCategories => {
do_websocket_operation::<ListCategories>(context, id, op, data).await
}
// Community ops // Community ops
UserOperation::GetCommunity => { UserOperation::GetCommunity => {

View File

@ -22,11 +22,6 @@ pub fn config(cfg: &mut web::ServiceConfig, rate_limit: &RateLimit) {
.route("/config", web::get().to(route_get::<GetSiteConfig>)) .route("/config", web::get().to(route_get::<GetSiteConfig>))
.route("/config", web::put().to(route_post::<SaveSiteConfig>)), .route("/config", web::put().to(route_post::<SaveSiteConfig>)),
) )
.service(
web::resource("/categories")
.wrap(rate_limit.message())
.route(web::get().to(route_get::<ListCategories>)),
)
.service( .service(
web::resource("/modlog") web::resource("/modlog")
.wrap(rate_limit.message()) .wrap(rate_limit.message())

View File

@ -10,17 +10,10 @@ use crate::{
use actix_web::web::Data; use actix_web::web::Data;
use anyhow::Context; use anyhow::Context;
use lemmy_apub::fetcher::search::search_by_apub_id; use lemmy_apub::fetcher::search::search_by_apub_id;
use lemmy_db_queries::{ use lemmy_db_queries::{diesel_option_overwrite, source::site::Site_, Crud, SearchType, SortType};
diesel_option_overwrite,
source::{category::Category_, site::Site_},
Crud,
SearchType,
SortType,
};
use lemmy_db_schema::{ use lemmy_db_schema::{
naive_now, naive_now,
source::{ source::{
category::Category,
moderator::*, moderator::*,
site::{Site, *}, site::{Site, *},
}, },
@ -63,24 +56,6 @@ use lemmy_websocket::{
use log::{debug, info}; use log::{debug, info};
use std::str::FromStr; use std::str::FromStr;
#[async_trait::async_trait(?Send)]
impl Perform for ListCategories {
type Response = ListCategoriesResponse;
async fn perform(
&self,
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<ListCategoriesResponse, LemmyError> {
let _data: &ListCategories = &self;
let categories = blocking(context.pool(), move |conn| Category::list_all(conn)).await??;
// Return the jwt
Ok(ListCategoriesResponse { categories })
}
}
#[async_trait::async_trait(?Send)] #[async_trait::async_trait(?Send)]
impl Perform for GetModlog { impl Perform for GetModlog {
type Response = GetModlogResponse; type Response = GetModlogResponse;

View File

@ -251,7 +251,6 @@ impl Perform for Register {
name: default_community_name.to_string(), name: default_community_name.to_string(),
title: "The Default Community".to_string(), title: "The Default Community".to_string(),
description: Some("The Default Community".to_string()), description: Some("The Default Community".to_string()),
category_id: 1,
nsfw: false, nsfw: false,
creator_id: inserted_user.id, creator_id: inserted_user.id,
removed: None, removed: None,

View File

@ -1,41 +1,19 @@
use activitystreams::unparsed::UnparsedMutExt; use activitystreams::unparsed::UnparsedMutExt;
use activitystreams_ext::UnparsedExtension; use activitystreams_ext::UnparsedExtension;
use diesel::PgConnection;
use lemmy_db_queries::Crud;
use lemmy_db_schema::source::category::Category;
use lemmy_utils::LemmyError; use lemmy_utils::LemmyError;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
/// Activitystreams extension to allow (de)serializing additional Community fields `category` and /// Activitystreams extension to allow (de)serializing additional Community field
/// `sensitive` (called 'nsfw' in Lemmy). /// `sensitive` (called 'nsfw' in Lemmy).
#[derive(Clone, Debug, Default, Deserialize, Serialize)] #[derive(Clone, Debug, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct GroupExtension { pub struct GroupExtension {
pub category: Option<GroupCategory>,
pub sensitive: Option<bool>, pub sensitive: Option<bool>,
} }
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct GroupCategory {
// Using a string because that's how Peertube does it.
pub identifier: String,
pub name: String,
}
impl GroupExtension { impl GroupExtension {
pub fn new( pub fn new(sensitive: bool) -> Result<GroupExtension, LemmyError> {
conn: &PgConnection,
category_id: i32,
sensitive: bool,
) -> Result<GroupExtension, LemmyError> {
let category = Category::read(conn, category_id)?;
let group_category = GroupCategory {
identifier: category_id.to_string(),
name: category.name,
};
Ok(GroupExtension { Ok(GroupExtension {
category: Some(group_category),
sensitive: Some(sensitive), sensitive: Some(sensitive),
}) })
} }
@ -49,13 +27,11 @@ where
fn try_from_unparsed(unparsed_mut: &mut U) -> Result<Self, Self::Error> { fn try_from_unparsed(unparsed_mut: &mut U) -> Result<Self, Self::Error> {
Ok(GroupExtension { Ok(GroupExtension {
category: unparsed_mut.remove("category")?,
sensitive: unparsed_mut.remove("sensitive")?, sensitive: unparsed_mut.remove("sensitive")?,
}) })
} }
fn try_into_unparsed(self, unparsed_mut: &mut U) -> Result<(), Self::Error> { fn try_into_unparsed(self, unparsed_mut: &mut U) -> Result<(), Self::Error> {
unparsed_mut.insert("category", self.category)?;
unparsed_mut.insert("sensitive", self.sensitive)?; unparsed_mut.insert("sensitive", self.sensitive)?;
Ok(()) Ok(())
} }

View File

@ -93,16 +93,9 @@ impl ToApub for Community {
..Default::default() ..Default::default()
}); });
let nsfw = self.nsfw;
let category_id = self.category_id;
let group_extension = blocking(pool, move |conn| {
GroupExtension::new(conn, category_id, nsfw)
})
.await??;
Ok(Ext2::new( Ok(Ext2::new(
ap_actor, ap_actor,
group_extension, GroupExtension::new(self.nsfw)?,
self.get_public_key_ext()?, self.get_public_key_ext()?,
)) ))
} }
@ -207,13 +200,6 @@ impl FromApubToForm<GroupExt> for CommunityForm {
name, name,
title, title,
description, description,
category_id: group
.ext_one
.category
.clone()
.map(|c| c.identifier.parse::<i32>().ok())
.flatten()
.unwrap_or(1),
creator_id: creator.id, creator_id: creator.id,
removed: None, removed: None,
published: group.inner.published().map(|u| u.to_owned().naive_local()), published: group.inner.published().map(|u| u.to_owned().naive_local()),

View File

@ -109,7 +109,6 @@ mod tests {
creator_id: inserted_user.id, creator_id: inserted_user.id,
title: "nada".to_owned(), title: "nada".to_owned(),
description: None, description: None,
category_id: 1,
nsfw: false, nsfw: false,
removed: None, removed: None,
deleted: None, deleted: None,

View File

@ -113,7 +113,6 @@ mod tests {
creator_id: inserted_user.id, creator_id: inserted_user.id,
title: "nada".to_owned(), title: "nada".to_owned(),
description: None, description: None,
category_id: 1,
nsfw: false, nsfw: false,
removed: None, removed: None,
deleted: None, deleted: None,
@ -138,7 +137,6 @@ mod tests {
creator_id: inserted_user.id, creator_id: inserted_user.id,
title: "nada".to_owned(), title: "nada".to_owned(),
description: None, description: None,
category_id: 1,
nsfw: false, nsfw: false,
removed: None, removed: None,
deleted: None, deleted: None,

View File

@ -113,7 +113,6 @@ mod tests {
creator_id: inserted_user.id, creator_id: inserted_user.id,
title: "nada".to_owned(), title: "nada".to_owned(),
description: None, description: None,
category_id: 1,
nsfw: false, nsfw: false,
removed: None, removed: None,
deleted: None, deleted: None,

View File

@ -94,7 +94,6 @@ mod tests {
creator_id: inserted_user.id, creator_id: inserted_user.id,
title: "nada".to_owned(), title: "nada".to_owned(),
description: None, description: None,
category_id: 1,
nsfw: false, nsfw: false,
removed: None, removed: None,
deleted: None, deleted: None,

View File

@ -109,7 +109,6 @@ mod tests {
creator_id: inserted_user.id, creator_id: inserted_user.id,
title: "nada".to_owned(), title: "nada".to_owned(),
description: None, description: None,
category_id: 1,
nsfw: false, nsfw: false,
removed: None, removed: None,
deleted: None, deleted: None,

View File

@ -1,54 +0,0 @@
use crate::Crud;
use diesel::{dsl::*, result::Error, *};
use lemmy_db_schema::{schema::category::dsl::*, source::category::*};
impl Crud<CategoryForm> for Category {
fn read(conn: &PgConnection, category_id: i32) -> Result<Self, Error> {
category.find(category_id).first::<Self>(conn)
}
fn create(conn: &PgConnection, new_category: &CategoryForm) -> Result<Self, Error> {
insert_into(category)
.values(new_category)
.get_result::<Self>(conn)
}
fn update(
conn: &PgConnection,
category_id: i32,
new_category: &CategoryForm,
) -> Result<Self, Error> {
diesel::update(category.find(category_id))
.set(new_category)
.get_result::<Self>(conn)
}
}
pub trait Category_ {
fn list_all(conn: &PgConnection) -> Result<Vec<Category>, Error>;
}
impl Category_ for Category {
fn list_all(conn: &PgConnection) -> Result<Vec<Category>, Error> {
category.load::<Self>(conn)
}
}
#[cfg(test)]
mod tests {
use crate::{establish_unpooled_connection, source::category::Category_};
use lemmy_db_schema::source::category::Category;
#[test]
fn test_crud() {
let conn = establish_unpooled_connection();
let categories = Category::list_all(&conn).unwrap();
let expected_first_category = Category {
id: 1,
name: "Discussion".into(),
};
assert_eq!(expected_first_category, categories[0]);
}
}

View File

@ -252,7 +252,6 @@ mod tests {
name: "test community".to_string(), name: "test community".to_string(),
title: "nada".to_owned(), title: "nada".to_owned(),
description: None, description: None,
category_id: 1,
creator_id: inserted_user.id, creator_id: inserted_user.id,
removed: None, removed: None,
deleted: None, deleted: None,

View File

@ -24,7 +24,6 @@ mod safe_type {
name, name,
title, title,
description, description,
category_id,
creator_id, creator_id,
removed, removed,
published, published,
@ -45,7 +44,6 @@ mod safe_type {
name, name,
title, title,
description, description,
category_id,
creator_id, creator_id,
removed, removed,
published, published,
@ -383,7 +381,6 @@ mod tests {
creator_id: inserted_user.id, creator_id: inserted_user.id,
title: "nada".to_owned(), title: "nada".to_owned(),
description: None, description: None,
category_id: 1,
nsfw: false, nsfw: false,
removed: None, removed: None,
deleted: None, deleted: None,
@ -409,7 +406,6 @@ mod tests {
name: "TIL".into(), name: "TIL".into(),
title: "nada".to_owned(), title: "nada".to_owned(),
description: None, description: None,
category_id: 1,
nsfw: false, nsfw: false,
removed: false, removed: false,
deleted: false, deleted: false,

View File

@ -1,5 +1,4 @@
pub mod activity; pub mod activity;
pub mod category;
pub mod comment; pub mod comment;
pub mod comment_report; pub mod comment_report;
pub mod community; pub mod community;

View File

@ -271,7 +271,6 @@ mod tests {
name: "mod_community".to_string(), name: "mod_community".to_string(),
title: "nada".to_owned(), title: "nada".to_owned(),
description: None, description: None,
category_id: 1,
creator_id: inserted_user.id, creator_id: inserted_user.id,
removed: None, removed: None,
deleted: None, deleted: None,

View File

@ -271,7 +271,6 @@ mod tests {
name: "test community_3".to_string(), name: "test community_3".to_string(),
title: "nada".to_owned(), title: "nada".to_owned(),
description: None, description: None,
category_id: 1,
creator_id: inserted_user.id, creator_id: inserted_user.id,
removed: None, removed: None,
deleted: None, deleted: None,

View File

@ -152,7 +152,6 @@ mod tests {
name: "test community lake".to_string(), name: "test community lake".to_string(),
title: "nada".to_owned(), title: "nada".to_owned(),
description: None, description: None,
category_id: 1,
creator_id: inserted_user.id, creator_id: inserted_user.id,
removed: None, removed: None,
deleted: None, deleted: None,

View File

@ -10,13 +10,6 @@ table! {
} }
} }
table! {
category (id) {
id -> Int4,
name -> Varchar,
}
}
table! { table! {
comment (id) { comment (id) {
id -> Int4, id -> Int4,
@ -85,7 +78,6 @@ table! {
name -> Varchar, name -> Varchar,
title -> Varchar, title -> Varchar,
description -> Nullable<Text>, description -> Nullable<Text>,
category_id -> Int4,
creator_id -> Int4, creator_id -> Int4,
removed -> Bool, removed -> Bool,
published -> Timestamp, published -> Timestamp,
@ -546,7 +538,6 @@ joinable!(comment_like -> user_ (user_id));
joinable!(comment_report -> comment (comment_id)); joinable!(comment_report -> comment (comment_id));
joinable!(comment_saved -> comment (comment_id)); joinable!(comment_saved -> comment (comment_id));
joinable!(comment_saved -> user_ (user_id)); joinable!(comment_saved -> user_ (user_id));
joinable!(community -> category (category_id));
joinable!(community -> user_ (creator_id)); joinable!(community -> user_ (creator_id));
joinable!(community_aggregates -> community (community_id)); joinable!(community_aggregates -> community (community_id));
joinable!(community_follower -> community (community_id)); joinable!(community_follower -> community (community_id));
@ -587,7 +578,6 @@ joinable!(user_mention -> user_ (recipient_id));
allow_tables_to_appear_in_same_query!( allow_tables_to_appear_in_same_query!(
activity, activity,
category,
comment, comment,
comment_aggregates, comment_aggregates,
comment_like, comment_like,

View File

@ -1,15 +0,0 @@
use crate::schema::category;
use serde::Serialize;
#[derive(Queryable, Identifiable, PartialEq, Debug, Serialize, Clone)]
#[table_name = "category"]
pub struct Category {
pub id: i32,
pub name: String,
}
#[derive(Insertable, AsChangeset)]
#[table_name = "category"]
pub struct CategoryForm {
pub name: String,
}

View File

@ -11,7 +11,6 @@ pub struct Community {
pub name: String, pub name: String,
pub title: String, pub title: String,
pub description: Option<String>, pub description: Option<String>,
pub category_id: i32,
pub creator_id: i32, pub creator_id: i32,
pub removed: bool, pub removed: bool,
pub published: chrono::NaiveDateTime, pub published: chrono::NaiveDateTime,
@ -38,7 +37,6 @@ pub struct CommunitySafe {
pub name: String, pub name: String,
pub title: String, pub title: String,
pub description: Option<String>, pub description: Option<String>,
pub category_id: i32,
pub creator_id: i32, pub creator_id: i32,
pub removed: bool, pub removed: bool,
pub published: chrono::NaiveDateTime, pub published: chrono::NaiveDateTime,
@ -57,7 +55,6 @@ pub struct CommunityForm {
pub name: String, pub name: String,
pub title: String, pub title: String,
pub description: Option<String>, pub description: Option<String>,
pub category_id: i32,
pub creator_id: i32, pub creator_id: i32,
pub removed: Option<bool>, pub removed: Option<bool>,
pub published: Option<chrono::NaiveDateTime>, pub published: Option<chrono::NaiveDateTime>,

View File

@ -1,5 +1,4 @@
pub mod activity; pub mod activity;
pub mod category;
pub mod comment; pub mod comment;
pub mod comment_report; pub mod comment_report;
pub mod community; pub mod community;

View File

@ -483,7 +483,6 @@ mod tests {
name: "test community 5".to_string(), name: "test community 5".to_string(),
title: "nada".to_owned(), title: "nada".to_owned(),
description: None, description: None,
category_id: 1,
creator_id: inserted_user.id, creator_id: inserted_user.id,
removed: None, removed: None,
deleted: None, deleted: None,
@ -625,7 +624,6 @@ mod tests {
title: "nada".to_owned(), title: "nada".to_owned(),
description: None, description: None,
creator_id: inserted_user.id, creator_id: inserted_user.id,
category_id: 1,
updated: None, updated: None,
banner: None, banner: None,
published: inserted_community.published, published: inserted_community.published,

View File

@ -479,7 +479,6 @@ mod tests {
title: "nada".to_owned(), title: "nada".to_owned(),
description: None, description: None,
creator_id: inserted_user.id, creator_id: inserted_user.id,
category_id: 1,
removed: None, removed: None,
deleted: None, deleted: None,
updated: None, updated: None,
@ -614,7 +613,6 @@ mod tests {
title: "nada".to_owned(), title: "nada".to_owned(),
description: None, description: None,
creator_id: inserted_user.id, creator_id: inserted_user.id,
category_id: 1,
updated: None, updated: None,
banner: None, banner: None,
published: inserted_community.published, published: inserted_community.published,

View File

@ -12,9 +12,8 @@ use lemmy_db_queries::{
ViewToVec, ViewToVec,
}; };
use lemmy_db_schema::{ use lemmy_db_schema::{
schema::{category, community, community_aggregates, community_follower, user_}, schema::{community, community_aggregates, community_follower, user_},
source::{ source::{
category::Category,
community::{Community, CommunityFollower, CommunitySafe}, community::{Community, CommunityFollower, CommunitySafe},
user::{UserSafe, User_}, user::{UserSafe, User_},
}, },
@ -25,7 +24,6 @@ use serde::Serialize;
pub struct CommunityView { pub struct CommunityView {
pub community: CommunitySafe, pub community: CommunitySafe,
pub creator: UserSafe, pub creator: UserSafe,
pub category: Category,
pub subscribed: bool, pub subscribed: bool,
pub counts: CommunityAggregates, pub counts: CommunityAggregates,
} }
@ -33,7 +31,6 @@ pub struct CommunityView {
type CommunityViewTuple = ( type CommunityViewTuple = (
CommunitySafe, CommunitySafe,
UserSafe, UserSafe,
Category,
CommunityAggregates, CommunityAggregates,
Option<CommunityFollower>, Option<CommunityFollower>,
); );
@ -47,10 +44,9 @@ impl CommunityView {
// The left join below will return None in this case // The left join below will return None in this case
let user_id_join = my_user_id.unwrap_or(-1); let user_id_join = my_user_id.unwrap_or(-1);
let (community, creator, category, counts, follower) = community::table let (community, creator, counts, follower) = community::table
.find(community_id) .find(community_id)
.inner_join(user_::table) .inner_join(user_::table)
.inner_join(category::table)
.inner_join(community_aggregates::table) .inner_join(community_aggregates::table)
.left_join( .left_join(
community_follower::table.on( community_follower::table.on(
@ -62,7 +58,6 @@ impl CommunityView {
.select(( .select((
Community::safe_columns_tuple(), Community::safe_columns_tuple(),
User_::safe_columns_tuple(), User_::safe_columns_tuple(),
category::all_columns,
community_aggregates::all_columns, community_aggregates::all_columns,
community_follower::all_columns.nullable(), community_follower::all_columns.nullable(),
)) ))
@ -71,7 +66,6 @@ impl CommunityView {
Ok(CommunityView { Ok(CommunityView {
community, community,
creator, creator,
category,
subscribed: follower.is_some(), subscribed: follower.is_some(),
counts, counts,
}) })
@ -162,7 +156,6 @@ impl<'a> CommunityQueryBuilder<'a> {
let mut query = community::table let mut query = community::table
.inner_join(user_::table) .inner_join(user_::table)
.inner_join(category::table)
.inner_join(community_aggregates::table) .inner_join(community_aggregates::table)
.left_join( .left_join(
community_follower::table.on( community_follower::table.on(
@ -174,7 +167,6 @@ impl<'a> CommunityQueryBuilder<'a> {
.select(( .select((
Community::safe_columns_tuple(), Community::safe_columns_tuple(),
User_::safe_columns_tuple(), User_::safe_columns_tuple(),
category::all_columns,
community_aggregates::all_columns, community_aggregates::all_columns,
community_follower::all_columns.nullable(), community_follower::all_columns.nullable(),
)) ))
@ -235,9 +227,8 @@ impl ViewToVec for CommunityView {
.map(|a| Self { .map(|a| Self {
community: a.0.to_owned(), community: a.0.to_owned(),
creator: a.1.to_owned(), creator: a.1.to_owned(),
category: a.2.to_owned(), counts: a.2.to_owned(),
counts: a.3.to_owned(), subscribed: a.3.is_some(),
subscribed: a.4.is_some(),
}) })
.collect::<Vec<Self>>() .collect::<Vec<Self>>()
} }

View File

@ -1,4 +1,4 @@
use lemmy_db_schema::source::{category::*, user::UserSafeSettings}; use lemmy_db_schema::source::user::UserSafeSettings;
use lemmy_db_views::{comment_view::CommentView, post_view::PostView, site_view::SiteView}; use lemmy_db_views::{comment_view::CommentView, post_view::PostView, site_view::SiteView};
use lemmy_db_views_actor::{community_view::CommunityView, user_view::UserViewSafe}; use lemmy_db_views_actor::{community_view::CommunityView, user_view::UserViewSafe};
use lemmy_db_views_moderator::{ use lemmy_db_views_moderator::{
@ -14,14 +14,6 @@ use lemmy_db_views_moderator::{
}; };
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[derive(Deserialize)]
pub struct ListCategories {}
#[derive(Serialize)]
pub struct ListCategoriesResponse {
pub categories: Vec<Category>,
}
#[derive(Deserialize, Debug)] #[derive(Deserialize, Debug)]
pub struct Search { pub struct Search {
pub q: String, pub q: String,

View File

@ -88,7 +88,6 @@ pub enum UserOperation {
CreateCommunity, CreateCommunity,
CreatePost, CreatePost,
ListCommunities, ListCommunities,
ListCategories,
GetPost, GetPost,
GetCommunity, GetCommunity,
CreateComment, CreateComment,

View File

@ -0,0 +1,34 @@
create table category (
id serial primary key,
name varchar(100) not null unique
);
insert into category (name) values
('Discussion'),
('Humor/Memes'),
('Gaming'),
('Movies'),
('TV'),
('Music'),
('Literature'),
('Comics'),
('Photography'),
('Art'),
('Learning'),
('DIY'),
('Lifestyle'),
('News'),
('Politics'),
('Society'),
('Gender/Identity/Sexuality'),
('Race/Colonisation'),
('Religion'),
('Science/Technology'),
('Programming/Software'),
('Health/Sports/Fitness'),
('Porn'),
('Places'),
('Meta'),
('Other');
ALTER TABLE community ADD category_id int references category on update cascade on delete cascade not null;

View File

@ -0,0 +1,2 @@
ALTER TABLE community DROP COLUMN category_id;
DROP TABLE category;

View File

@ -109,7 +109,6 @@ fn community_updates_2020_04_02(conn: &PgConnection) -> Result<(), LemmyError> {
name: ccommunity.name.to_owned(), name: ccommunity.name.to_owned(),
title: ccommunity.title.to_owned(), title: ccommunity.title.to_owned(),
description: ccommunity.description.to_owned(), description: ccommunity.description.to_owned(),
category_id: ccommunity.category_id,
creator_id: ccommunity.creator_id, creator_id: ccommunity.creator_id,
removed: None, removed: None,
deleted: None, deleted: None,

View File

@ -127,7 +127,6 @@ fn create_community(conn: &PgConnection, creator_id: i32) -> Community {
creator_id, creator_id,
title: "test_community".to_owned(), title: "test_community".to_owned(),
description: None, description: None,
category_id: 1,
nsfw: false, nsfw: false,
removed: None, removed: None,
deleted: None, deleted: None,