mirror of
https://github.com/LemmyNet/lemmy.git
synced 2024-10-01 01:36:12 -04:00
Move community to lemmy_db_schema
This commit is contained in:
parent
f842bbff8d
commit
a7e231b35b
24823
cargo-timing-20201219T141435Z.html
Normal file
24823
cargo-timing-20201219T141435Z.html
Normal file
File diff suppressed because it is too large
Load Diff
24104
cargo-timing-20201219T141946Z.html
Normal file
24104
cargo-timing-20201219T141946Z.html
Normal file
File diff suppressed because it is too large
Load Diff
24104
cargo-timing.html
Normal file
24104
cargo-timing.html
Normal file
File diff suppressed because it is too large
Load Diff
@ -11,7 +11,13 @@ use anyhow::Context;
|
||||
use lemmy_apub::ActorType;
|
||||
use lemmy_db::{
|
||||
diesel_option_overwrite,
|
||||
source::{comment::Comment_, community::*, moderator::*, post::Post_, site::*},
|
||||
source::{
|
||||
comment::Comment_,
|
||||
community::{CommunityModerator_, Community_},
|
||||
moderator::*,
|
||||
post::Post_,
|
||||
site::*,
|
||||
},
|
||||
views::{
|
||||
comment_view::CommentQueryBuilder,
|
||||
community::{
|
||||
@ -30,7 +36,7 @@ use lemmy_db::{
|
||||
};
|
||||
use lemmy_db_schema::{
|
||||
naive_now,
|
||||
source::{comment::Comment, post::Post},
|
||||
source::{comment::Comment, community::*, post::Post},
|
||||
};
|
||||
use lemmy_structs::{blocking, community::*};
|
||||
use lemmy_utils::{
|
||||
|
@ -1,12 +1,16 @@
|
||||
use crate::claims::Claims;
|
||||
use actix_web::{web, web::Data};
|
||||
use lemmy_db::{
|
||||
source::community::{Community, CommunityModerator},
|
||||
source::community::{CommunityModerator_, Community_},
|
||||
views::community::community_user_ban_view::CommunityUserBanView,
|
||||
Crud,
|
||||
DbPool,
|
||||
};
|
||||
use lemmy_db_schema::source::{post::Post, user::User_};
|
||||
use lemmy_db_schema::source::{
|
||||
community::{Community, CommunityModerator},
|
||||
post::Post,
|
||||
user::User_,
|
||||
};
|
||||
use lemmy_structs::{blocking, comment::*, community::*, post::*, site::*, user::*};
|
||||
use lemmy_utils::{settings::Settings, APIError, ConnectionId, LemmyError};
|
||||
use lemmy_websocket::{serialize_websocket_message, LemmyContext, UserOperation};
|
||||
|
@ -18,7 +18,7 @@ use lemmy_db::{
|
||||
diesel_option_overwrite,
|
||||
source::{
|
||||
comment::Comment_,
|
||||
community::*,
|
||||
community::Community_,
|
||||
moderator::*,
|
||||
password_reset_request::*,
|
||||
post::Post_,
|
||||
@ -49,7 +49,7 @@ use lemmy_db::{
|
||||
};
|
||||
use lemmy_db_schema::{
|
||||
naive_now,
|
||||
source::{comment::Comment, post::Post, user::*},
|
||||
source::{comment::Comment, community::*, post::Post, user::*},
|
||||
};
|
||||
use lemmy_structs::{blocking, send_email_to_user, user::*};
|
||||
use lemmy_utils::{
|
||||
|
@ -5,10 +5,11 @@ use activitystreams::{
|
||||
};
|
||||
use anyhow::Context;
|
||||
use lemmy_db::{
|
||||
source::community::Community,
|
||||
source::community::Community_,
|
||||
views::community::community_view::CommunityView,
|
||||
ApubObject,
|
||||
};
|
||||
use lemmy_db_schema::source::community::Community;
|
||||
use lemmy_structs::{blocking, community::CommunityResponse};
|
||||
use lemmy_utils::{location_info, LemmyError};
|
||||
use lemmy_websocket::{messages::SendCommunityRoomMessage, LemmyContext, UserOperation};
|
||||
|
@ -26,8 +26,8 @@ use activitystreams::{
|
||||
};
|
||||
use anyhow::anyhow;
|
||||
use itertools::Itertools;
|
||||
use lemmy_db::{source::community::Community, Crud, DbPool};
|
||||
use lemmy_db_schema::source::{comment::Comment, post::Post, user::User_};
|
||||
use lemmy_db::{Crud, DbPool};
|
||||
use lemmy_db_schema::source::{comment::Comment, community::Community, post::Post, user::User_};
|
||||
use lemmy_structs::{blocking, WebFingerResponse};
|
||||
use lemmy_utils::{
|
||||
request::{retry, RecvError},
|
||||
|
@ -23,11 +23,8 @@ use activitystreams::{
|
||||
};
|
||||
use anyhow::Context;
|
||||
use itertools::Itertools;
|
||||
use lemmy_db::{
|
||||
source::community::Community,
|
||||
views::community::community_follower_view::CommunityFollowerView,
|
||||
DbPool,
|
||||
};
|
||||
use lemmy_db::{views::community::community_follower_view::CommunityFollowerView, DbPool};
|
||||
use lemmy_db_schema::source::community::Community;
|
||||
use lemmy_structs::blocking;
|
||||
use lemmy_utils::{location_info, settings::Settings, LemmyError};
|
||||
use lemmy_websocket::LemmyContext;
|
||||
|
@ -21,8 +21,8 @@ use activitystreams::{
|
||||
prelude::*,
|
||||
public,
|
||||
};
|
||||
use lemmy_db::{source::community::Community, Crud};
|
||||
use lemmy_db_schema::source::{post::Post, user::User_};
|
||||
use lemmy_db::Crud;
|
||||
use lemmy_db_schema::source::{community::Community, post::Post, user::User_};
|
||||
use lemmy_structs::blocking;
|
||||
use lemmy_utils::LemmyError;
|
||||
use lemmy_websocket::LemmyContext;
|
||||
|
@ -13,13 +13,11 @@ use activitystreams::{
|
||||
base::{AnyBase, BaseExt, ExtendsExt},
|
||||
object::ObjectExt,
|
||||
};
|
||||
use lemmy_db::{
|
||||
source::community::{Community, CommunityFollower, CommunityFollowerForm},
|
||||
ApubObject,
|
||||
DbPool,
|
||||
Followable,
|
||||
use lemmy_db::{ApubObject, DbPool, Followable};
|
||||
use lemmy_db_schema::source::{
|
||||
community::{Community, CommunityFollower, CommunityFollowerForm},
|
||||
user::User_,
|
||||
};
|
||||
use lemmy_db_schema::source::user::User_;
|
||||
use lemmy_structs::blocking;
|
||||
use lemmy_utils::LemmyError;
|
||||
use lemmy_websocket::LemmyContext;
|
||||
|
@ -19,8 +19,8 @@ use background_jobs::{
|
||||
WorkerConfig,
|
||||
};
|
||||
use itertools::Itertools;
|
||||
use lemmy_db::{source::community::Community, DbPool};
|
||||
use lemmy_db_schema::source::user::User_;
|
||||
use lemmy_db::DbPool;
|
||||
use lemmy_db_schema::source::{community::Community, user::User_};
|
||||
use lemmy_utils::{location_info, settings::Settings, LemmyError};
|
||||
use lemmy_websocket::LemmyContext;
|
||||
use log::{debug, warn};
|
||||
|
@ -13,10 +13,7 @@ use anyhow::{anyhow, Context};
|
||||
use chrono::NaiveDateTime;
|
||||
use diesel::result::Error::NotFound;
|
||||
use lemmy_db::{
|
||||
source::{
|
||||
community::{Community, CommunityModerator, CommunityModeratorForm},
|
||||
user::User,
|
||||
},
|
||||
source::user::User,
|
||||
views::{
|
||||
comment_view::CommentView,
|
||||
community::community_view::CommunityView,
|
||||
@ -30,7 +27,12 @@ use lemmy_db::{
|
||||
};
|
||||
use lemmy_db_schema::{
|
||||
naive_now,
|
||||
source::{comment::Comment, post::Post, user::User_},
|
||||
source::{
|
||||
comment::Comment,
|
||||
community::{Community, CommunityModerator, CommunityModeratorForm},
|
||||
post::Post,
|
||||
user::User_,
|
||||
},
|
||||
};
|
||||
use lemmy_structs::{blocking, site::SearchResponse};
|
||||
use lemmy_utils::{
|
||||
|
@ -10,10 +10,10 @@ use activitystreams::{
|
||||
};
|
||||
use actix_web::{body::Body, web, HttpResponse};
|
||||
use lemmy_db::{
|
||||
source::{community::Community, post::Post_},
|
||||
source::{community::Community_, post::Post_},
|
||||
views::community::community_follower_view::CommunityFollowerView,
|
||||
};
|
||||
use lemmy_db_schema::source::post::Post;
|
||||
use lemmy_db_schema::source::{community::Community, post::Post};
|
||||
use lemmy_structs::blocking;
|
||||
use lemmy_utils::LemmyError;
|
||||
use lemmy_websocket::LemmyContext;
|
||||
|
@ -27,13 +27,16 @@ use activitystreams::{
|
||||
use actix_web::{web, HttpRequest, HttpResponse};
|
||||
use anyhow::{anyhow, Context};
|
||||
use lemmy_db::{
|
||||
source::community::{Community, CommunityFollower, CommunityFollowerForm},
|
||||
source::community::Community_,
|
||||
views::community::community_user_ban_view::CommunityUserBanView,
|
||||
ApubObject,
|
||||
DbPool,
|
||||
Followable,
|
||||
};
|
||||
use lemmy_db_schema::source::user::User_;
|
||||
use lemmy_db_schema::source::{
|
||||
community::{Community, CommunityFollower, CommunityFollowerForm},
|
||||
user::User_,
|
||||
};
|
||||
use lemmy_structs::blocking;
|
||||
use lemmy_utils::{location_info, LemmyError};
|
||||
use lemmy_websocket::LemmyContext;
|
||||
|
@ -12,12 +12,8 @@ use activitystreams::{
|
||||
};
|
||||
use actix_web::HttpRequest;
|
||||
use anyhow::{anyhow, Context};
|
||||
use lemmy_db::{
|
||||
source::{activity::Activity, community::Community},
|
||||
ApubObject,
|
||||
DbPool,
|
||||
};
|
||||
use lemmy_db_schema::source::user::User_;
|
||||
use lemmy_db::{source::activity::Activity, ApubObject, DbPool};
|
||||
use lemmy_db_schema::source::{community::Community, user::User_};
|
||||
use lemmy_structs::blocking;
|
||||
use lemmy_utils::{location_info, settings::Settings, LemmyError};
|
||||
use lemmy_websocket::LemmyContext;
|
||||
|
@ -15,7 +15,8 @@ use crate::{
|
||||
use activitystreams::{activity::ActorAndObject, prelude::*};
|
||||
use actix_web::{web, HttpRequest, HttpResponse};
|
||||
use anyhow::Context;
|
||||
use lemmy_db::{source::community::Community, ApubObject, DbPool};
|
||||
use lemmy_db::{ApubObject, DbPool};
|
||||
use lemmy_db_schema::source::community::Community;
|
||||
use lemmy_structs::blocking;
|
||||
use lemmy_utils::{location_info, LemmyError};
|
||||
use lemmy_websocket::LemmyContext;
|
||||
|
@ -49,15 +49,14 @@ use actix_web::{web, HttpRequest, HttpResponse};
|
||||
use anyhow::{anyhow, Context};
|
||||
use diesel::NotFound;
|
||||
use lemmy_db::{
|
||||
source::{
|
||||
community::{Community, CommunityFollower},
|
||||
private_message::PrivateMessage,
|
||||
user::User,
|
||||
},
|
||||
source::{private_message::PrivateMessage, user::User},
|
||||
ApubObject,
|
||||
Followable,
|
||||
};
|
||||
use lemmy_db_schema::source::user::User_;
|
||||
use lemmy_db_schema::source::{
|
||||
community::{Community, CommunityFollower},
|
||||
user::User_,
|
||||
};
|
||||
use lemmy_structs::blocking;
|
||||
use lemmy_utils::{location_info, LemmyError};
|
||||
use lemmy_websocket::LemmyContext;
|
||||
|
@ -23,9 +23,10 @@ use activitystreams::{
|
||||
prelude::*,
|
||||
};
|
||||
use anyhow::{anyhow, Context};
|
||||
use lemmy_db::{source::community::Community, Crud, DbPool};
|
||||
use lemmy_db::{Crud, DbPool};
|
||||
use lemmy_db_schema::source::{
|
||||
comment::{Comment, CommentForm},
|
||||
community::Community,
|
||||
post::Post,
|
||||
user::User_,
|
||||
};
|
||||
|
@ -22,12 +22,11 @@ use activitystreams::{
|
||||
};
|
||||
use activitystreams_ext::Ext2;
|
||||
use anyhow::Context;
|
||||
use lemmy_db::{
|
||||
use lemmy_db::{views::community::community_moderator_view::CommunityModeratorView, DbPool};
|
||||
use lemmy_db_schema::{
|
||||
naive_now,
|
||||
source::community::{Community, CommunityForm},
|
||||
views::community::community_moderator_view::CommunityModeratorView,
|
||||
DbPool,
|
||||
};
|
||||
use lemmy_db_schema::naive_now;
|
||||
use lemmy_structs::blocking;
|
||||
use lemmy_utils::{
|
||||
location_info,
|
||||
|
@ -20,8 +20,9 @@ use activitystreams::{
|
||||
};
|
||||
use activitystreams_ext::Ext1;
|
||||
use anyhow::Context;
|
||||
use lemmy_db::{source::community::Community, Crud, DbPool};
|
||||
use lemmy_db::{Crud, DbPool};
|
||||
use lemmy_db_schema::source::{
|
||||
community::Community,
|
||||
post::{Post, PostForm},
|
||||
user::User_,
|
||||
};
|
||||
|
@ -24,7 +24,6 @@ impl CommunityAggregates {
|
||||
mod tests {
|
||||
use crate::{
|
||||
aggregates::community_aggregates::CommunityAggregates,
|
||||
source::community::{Community, CommunityFollower, CommunityFollowerForm, CommunityForm},
|
||||
tests::establish_unpooled_connection,
|
||||
Crud,
|
||||
Followable,
|
||||
@ -33,6 +32,7 @@ mod tests {
|
||||
};
|
||||
use lemmy_db_schema::source::{
|
||||
comment::{Comment, CommentForm},
|
||||
community::{Community, CommunityFollower, CommunityFollowerForm, CommunityForm},
|
||||
post::{Post, PostForm},
|
||||
user::{UserForm, User_},
|
||||
};
|
||||
|
@ -26,7 +26,6 @@ impl PostAggregates {
|
||||
mod tests {
|
||||
use crate::{
|
||||
aggregates::post_aggregates::PostAggregates,
|
||||
source::community::{Community, CommunityForm},
|
||||
tests::establish_unpooled_connection,
|
||||
Crud,
|
||||
Likeable,
|
||||
@ -35,6 +34,7 @@ mod tests {
|
||||
};
|
||||
use lemmy_db_schema::source::{
|
||||
comment::{Comment, CommentForm},
|
||||
community::{Community, CommunityForm},
|
||||
post::{Post, PostForm, PostLike, PostLikeForm},
|
||||
user::{UserForm, User_},
|
||||
};
|
||||
|
@ -22,7 +22,6 @@ impl SiteAggregates {
|
||||
mod tests {
|
||||
use crate::{
|
||||
aggregates::site_aggregates::SiteAggregates,
|
||||
source::community::{Community, CommunityForm},
|
||||
tests::establish_unpooled_connection,
|
||||
Crud,
|
||||
ListingType,
|
||||
@ -30,6 +29,7 @@ mod tests {
|
||||
};
|
||||
use lemmy_db_schema::source::{
|
||||
comment::{Comment, CommentForm},
|
||||
community::{Community, CommunityForm},
|
||||
post::{Post, PostForm},
|
||||
user::{UserForm, User_},
|
||||
};
|
||||
|
@ -25,7 +25,6 @@ impl UserAggregates {
|
||||
mod tests {
|
||||
use crate::{
|
||||
aggregates::user_aggregates::UserAggregates,
|
||||
source::community::{Community, CommunityForm},
|
||||
tests::establish_unpooled_connection,
|
||||
Crud,
|
||||
Likeable,
|
||||
@ -34,6 +33,7 @@ mod tests {
|
||||
};
|
||||
use lemmy_db_schema::source::{
|
||||
comment::{Comment, CommentForm, CommentLike, CommentLikeForm},
|
||||
community::{Community, CommunityForm},
|
||||
post::{Post, PostForm, PostLike, PostLikeForm},
|
||||
user::{UserForm, User_},
|
||||
};
|
||||
|
@ -205,7 +205,6 @@ impl Saveable<CommentSavedForm> for CommentSaved {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::{
|
||||
source::community::*,
|
||||
tests::establish_unpooled_connection,
|
||||
Crud,
|
||||
Likeable,
|
||||
@ -215,6 +214,7 @@ mod tests {
|
||||
};
|
||||
use lemmy_db_schema::source::{
|
||||
comment::*,
|
||||
community::{Community, CommunityForm},
|
||||
post::*,
|
||||
user::{UserForm, User_},
|
||||
};
|
||||
|
@ -9,57 +9,22 @@ use crate::{
|
||||
use diesel::{dsl::*, result::Error, *};
|
||||
use lemmy_db_schema::{
|
||||
naive_now,
|
||||
schema::{community, community_follower, community_moderator, community_user_ban},
|
||||
source::community::{
|
||||
Community,
|
||||
CommunityFollower,
|
||||
CommunityFollowerForm,
|
||||
CommunityForm,
|
||||
CommunityModerator,
|
||||
CommunityModeratorForm,
|
||||
CommunityUserBan,
|
||||
CommunityUserBanForm,
|
||||
},
|
||||
};
|
||||
use serde::Serialize;
|
||||
|
||||
#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)]
|
||||
#[table_name = "community"]
|
||||
pub struct Community {
|
||||
pub id: i32,
|
||||
pub name: String,
|
||||
pub title: String,
|
||||
pub description: Option<String>,
|
||||
pub category_id: i32,
|
||||
pub creator_id: i32,
|
||||
pub removed: bool,
|
||||
pub published: chrono::NaiveDateTime,
|
||||
pub updated: Option<chrono::NaiveDateTime>,
|
||||
pub deleted: bool,
|
||||
pub nsfw: bool,
|
||||
pub actor_id: String,
|
||||
pub local: bool,
|
||||
pub private_key: Option<String>,
|
||||
pub public_key: Option<String>,
|
||||
pub last_refreshed_at: chrono::NaiveDateTime,
|
||||
pub icon: Option<String>,
|
||||
pub banner: Option<String>,
|
||||
}
|
||||
|
||||
/// A safe representation of community, without the sensitive info
|
||||
#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)]
|
||||
#[table_name = "community"]
|
||||
pub struct CommunitySafe {
|
||||
pub id: i32,
|
||||
pub name: String,
|
||||
pub title: String,
|
||||
pub description: Option<String>,
|
||||
pub category_id: i32,
|
||||
pub creator_id: i32,
|
||||
pub removed: bool,
|
||||
pub published: chrono::NaiveDateTime,
|
||||
pub updated: Option<chrono::NaiveDateTime>,
|
||||
pub deleted: bool,
|
||||
pub nsfw: bool,
|
||||
pub actor_id: String,
|
||||
pub local: bool,
|
||||
pub icon: Option<String>,
|
||||
pub banner: Option<String>,
|
||||
}
|
||||
|
||||
mod safe_type {
|
||||
use crate::{source::community::Community, ToSafe};
|
||||
use lemmy_db_schema::schema::community::columns::*;
|
||||
use lemmy_db_schema::schema::community::*;
|
||||
|
||||
type Columns = (
|
||||
id,
|
||||
name,
|
||||
@ -102,28 +67,6 @@ mod safe_type {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Insertable, AsChangeset, Debug)]
|
||||
#[table_name = "community"]
|
||||
pub struct CommunityForm {
|
||||
pub name: String,
|
||||
pub title: String,
|
||||
pub description: Option<String>,
|
||||
pub category_id: i32,
|
||||
pub creator_id: i32,
|
||||
pub removed: Option<bool>,
|
||||
pub published: Option<chrono::NaiveDateTime>,
|
||||
pub updated: Option<chrono::NaiveDateTime>,
|
||||
pub deleted: Option<bool>,
|
||||
pub nsfw: bool,
|
||||
pub actor_id: Option<String>,
|
||||
pub local: bool,
|
||||
pub private_key: Option<String>,
|
||||
pub public_key: Option<String>,
|
||||
pub last_refreshed_at: Option<chrono::NaiveDateTime>,
|
||||
pub icon: Option<Option<String>>,
|
||||
pub banner: Option<Option<String>>,
|
||||
}
|
||||
|
||||
impl Crud<CommunityForm> for Community {
|
||||
fn read(conn: &PgConnection, community_id: i32) -> Result<Self, Error> {
|
||||
use lemmy_db_schema::schema::community::dsl::*;
|
||||
@ -173,8 +116,35 @@ impl ApubObject<CommunityForm> for Community {
|
||||
}
|
||||
}
|
||||
|
||||
impl Community {
|
||||
pub fn read_from_name(conn: &PgConnection, community_name: &str) -> Result<Self, Error> {
|
||||
pub trait Community_ {
|
||||
fn read_from_name(conn: &PgConnection, community_name: &str) -> Result<Community, Error>;
|
||||
fn update_deleted(
|
||||
conn: &PgConnection,
|
||||
community_id: i32,
|
||||
new_deleted: bool,
|
||||
) -> Result<Community, Error>;
|
||||
fn update_removed(
|
||||
conn: &PgConnection,
|
||||
community_id: i32,
|
||||
new_removed: bool,
|
||||
) -> Result<Community, Error>;
|
||||
fn update_removed_for_creator(
|
||||
conn: &PgConnection,
|
||||
for_creator_id: i32,
|
||||
new_removed: bool,
|
||||
) -> Result<Vec<Community>, Error>;
|
||||
fn update_creator(
|
||||
conn: &PgConnection,
|
||||
community_id: i32,
|
||||
new_creator_id: i32,
|
||||
) -> Result<Community, Error>;
|
||||
fn community_mods_and_admins(conn: &PgConnection, community_id: i32) -> Result<Vec<i32>, Error>;
|
||||
fn distinct_federated_communities(conn: &PgConnection) -> Result<Vec<String>, Error>;
|
||||
fn is_mod_or_admin(conn: &PgConnection, user_id: i32, community_id: i32) -> bool;
|
||||
}
|
||||
|
||||
impl Community_ for Community {
|
||||
fn read_from_name(conn: &PgConnection, community_name: &str) -> Result<Community, Error> {
|
||||
use lemmy_db_schema::schema::community::dsl::*;
|
||||
community
|
||||
.filter(local.eq(true))
|
||||
@ -182,44 +152,44 @@ impl Community {
|
||||
.first::<Self>(conn)
|
||||
}
|
||||
|
||||
pub fn update_deleted(
|
||||
fn update_deleted(
|
||||
conn: &PgConnection,
|
||||
community_id: i32,
|
||||
new_deleted: bool,
|
||||
) -> Result<Self, Error> {
|
||||
) -> Result<Community, Error> {
|
||||
use lemmy_db_schema::schema::community::dsl::*;
|
||||
diesel::update(community.find(community_id))
|
||||
.set((deleted.eq(new_deleted), updated.eq(naive_now())))
|
||||
.get_result::<Self>(conn)
|
||||
}
|
||||
|
||||
pub fn update_removed(
|
||||
fn update_removed(
|
||||
conn: &PgConnection,
|
||||
community_id: i32,
|
||||
new_removed: bool,
|
||||
) -> Result<Self, Error> {
|
||||
) -> Result<Community, Error> {
|
||||
use lemmy_db_schema::schema::community::dsl::*;
|
||||
diesel::update(community.find(community_id))
|
||||
.set((removed.eq(new_removed), updated.eq(naive_now())))
|
||||
.get_result::<Self>(conn)
|
||||
}
|
||||
|
||||
pub fn update_removed_for_creator(
|
||||
fn update_removed_for_creator(
|
||||
conn: &PgConnection,
|
||||
for_creator_id: i32,
|
||||
new_removed: bool,
|
||||
) -> Result<Vec<Self>, Error> {
|
||||
) -> Result<Vec<Community>, Error> {
|
||||
use lemmy_db_schema::schema::community::dsl::*;
|
||||
diesel::update(community.filter(creator_id.eq(for_creator_id)))
|
||||
.set((removed.eq(new_removed), updated.eq(naive_now())))
|
||||
.get_results::<Self>(conn)
|
||||
}
|
||||
|
||||
pub fn update_creator(
|
||||
fn update_creator(
|
||||
conn: &PgConnection,
|
||||
community_id: i32,
|
||||
new_creator_id: i32,
|
||||
) -> Result<Self, Error> {
|
||||
) -> Result<Community, Error> {
|
||||
use lemmy_db_schema::schema::community::dsl::*;
|
||||
diesel::update(community.find(community_id))
|
||||
.set((creator_id.eq(new_creator_id), updated.eq(naive_now())))
|
||||
@ -237,35 +207,18 @@ impl Community {
|
||||
Ok(mods_and_admins)
|
||||
}
|
||||
|
||||
pub fn distinct_federated_communities(conn: &PgConnection) -> Result<Vec<String>, Error> {
|
||||
fn distinct_federated_communities(conn: &PgConnection) -> Result<Vec<String>, Error> {
|
||||
use lemmy_db_schema::schema::community::dsl::*;
|
||||
community.select(actor_id).distinct().load::<String>(conn)
|
||||
}
|
||||
|
||||
pub fn is_mod_or_admin(conn: &PgConnection, user_id: i32, community_id: i32) -> bool {
|
||||
fn is_mod_or_admin(conn: &PgConnection, user_id: i32, community_id: i32) -> bool {
|
||||
Self::community_mods_and_admins(conn, community_id)
|
||||
.unwrap_or_default()
|
||||
.contains(&user_id)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Identifiable, Queryable, Associations, PartialEq, Debug)]
|
||||
#[belongs_to(Community)]
|
||||
#[table_name = "community_moderator"]
|
||||
pub struct CommunityModerator {
|
||||
pub id: i32,
|
||||
pub community_id: i32,
|
||||
pub user_id: i32,
|
||||
pub published: chrono::NaiveDateTime,
|
||||
}
|
||||
|
||||
#[derive(Insertable, AsChangeset, Clone)]
|
||||
#[table_name = "community_moderator"]
|
||||
pub struct CommunityModeratorForm {
|
||||
pub community_id: i32,
|
||||
pub user_id: i32,
|
||||
}
|
||||
|
||||
impl Joinable<CommunityModeratorForm> for CommunityModerator {
|
||||
fn join(
|
||||
conn: &PgConnection,
|
||||
@ -291,13 +244,21 @@ impl Joinable<CommunityModeratorForm> for CommunityModerator {
|
||||
}
|
||||
}
|
||||
|
||||
impl CommunityModerator {
|
||||
pub fn delete_for_community(conn: &PgConnection, for_community_id: i32) -> Result<usize, Error> {
|
||||
pub trait CommunityModerator_ {
|
||||
fn delete_for_community(conn: &PgConnection, for_community_id: i32) -> Result<usize, Error>;
|
||||
fn get_user_moderated_communities(
|
||||
conn: &PgConnection,
|
||||
for_user_id: i32,
|
||||
) -> Result<Vec<i32>, Error>;
|
||||
}
|
||||
|
||||
impl CommunityModerator_ for CommunityModerator {
|
||||
fn delete_for_community(conn: &PgConnection, for_community_id: i32) -> Result<usize, Error> {
|
||||
use lemmy_db_schema::schema::community_moderator::dsl::*;
|
||||
diesel::delete(community_moderator.filter(community_id.eq(for_community_id))).execute(conn)
|
||||
}
|
||||
|
||||
pub fn get_user_moderated_communities(
|
||||
fn get_user_moderated_communities(
|
||||
conn: &PgConnection,
|
||||
for_user_id: i32,
|
||||
) -> Result<Vec<i32>, Error> {
|
||||
@ -309,23 +270,6 @@ impl CommunityModerator {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Identifiable, Queryable, Associations, PartialEq, Debug)]
|
||||
#[belongs_to(Community)]
|
||||
#[table_name = "community_user_ban"]
|
||||
pub struct CommunityUserBan {
|
||||
pub id: i32,
|
||||
pub community_id: i32,
|
||||
pub user_id: i32,
|
||||
pub published: chrono::NaiveDateTime,
|
||||
}
|
||||
|
||||
#[derive(Insertable, AsChangeset, Clone)]
|
||||
#[table_name = "community_user_ban"]
|
||||
pub struct CommunityUserBanForm {
|
||||
pub community_id: i32,
|
||||
pub user_id: i32,
|
||||
}
|
||||
|
||||
impl Bannable<CommunityUserBanForm> for CommunityUserBan {
|
||||
fn ban(
|
||||
conn: &PgConnection,
|
||||
@ -351,25 +295,6 @@ impl Bannable<CommunityUserBanForm> for CommunityUserBan {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Identifiable, Queryable, Associations, PartialEq, Debug)]
|
||||
#[belongs_to(Community)]
|
||||
#[table_name = "community_follower"]
|
||||
pub struct CommunityFollower {
|
||||
pub id: i32,
|
||||
pub community_id: i32,
|
||||
pub user_id: i32,
|
||||
pub published: chrono::NaiveDateTime,
|
||||
pub pending: Option<bool>,
|
||||
}
|
||||
|
||||
#[derive(Insertable, AsChangeset, Clone)]
|
||||
#[table_name = "community_follower"]
|
||||
pub struct CommunityFollowerForm {
|
||||
pub community_id: i32,
|
||||
pub user_id: i32,
|
||||
pub pending: bool,
|
||||
}
|
||||
|
||||
impl Followable<CommunityFollowerForm> for CommunityFollower {
|
||||
fn follow(
|
||||
conn: &PgConnection,
|
||||
@ -421,8 +346,16 @@ impl Followable<CommunityFollowerForm> for CommunityFollower {
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::{source::community::*, tests::establish_unpooled_connection, ListingType, SortType};
|
||||
use lemmy_db_schema::source::user::*;
|
||||
use crate::{
|
||||
tests::establish_unpooled_connection,
|
||||
Bannable,
|
||||
Crud,
|
||||
Followable,
|
||||
Joinable,
|
||||
ListingType,
|
||||
SortType,
|
||||
};
|
||||
use lemmy_db_schema::source::{community::*, user::*};
|
||||
|
||||
#[test]
|
||||
fn test_crud() {
|
||||
|
@ -391,12 +391,13 @@ impl Crud<ModAddForm> for ModAdd {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::{
|
||||
source::{community::*, moderator::*},
|
||||
source::moderator::*,
|
||||
tests::establish_unpooled_connection,
|
||||
Crud,
|
||||
ListingType,
|
||||
SortType,
|
||||
};
|
||||
use lemmy_db_schema::source::{comment::*, post::*, user::*};
|
||||
use lemmy_db_schema::source::{comment::*, community::*, post::*, user::*};
|
||||
|
||||
// use Crud;
|
||||
#[test]
|
||||
|
@ -231,13 +231,11 @@ impl Readable<PostReadForm> for PostRead {
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::{
|
||||
source::{community::*, post::*},
|
||||
tests::establish_unpooled_connection,
|
||||
ListingType,
|
||||
SortType,
|
||||
use crate::{source::post::*, tests::establish_unpooled_connection, ListingType, SortType};
|
||||
use lemmy_db_schema::source::{
|
||||
community::{Community, CommunityForm},
|
||||
user::*,
|
||||
};
|
||||
use lemmy_db_schema::source::user::*;
|
||||
|
||||
#[test]
|
||||
fn test_crud() {
|
||||
|
@ -79,12 +79,18 @@ impl UserMention {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::{
|
||||
source::{community::*, user_mention::*},
|
||||
source::user_mention::*,
|
||||
tests::establish_unpooled_connection,
|
||||
Crud,
|
||||
ListingType,
|
||||
SortType,
|
||||
};
|
||||
use lemmy_db_schema::source::{comment::*, post::*, user::*};
|
||||
use lemmy_db_schema::source::{
|
||||
comment::*,
|
||||
community::{Community, CommunityForm},
|
||||
post::*,
|
||||
user::*,
|
||||
};
|
||||
|
||||
#[test]
|
||||
fn test_crud() {
|
||||
|
@ -1,9 +1,6 @@
|
||||
use crate::{
|
||||
limit_and_offset,
|
||||
source::{
|
||||
comment_report::CommentReport,
|
||||
community::{Community, CommunitySafe},
|
||||
},
|
||||
source::comment_report::CommentReport,
|
||||
views::ViewToVec,
|
||||
MaybeOptional,
|
||||
ToSafe,
|
||||
@ -13,6 +10,7 @@ use lemmy_db_schema::{
|
||||
schema::{comment, comment_report, community, post, user_, user_alias_1, user_alias_2},
|
||||
source::{
|
||||
comment::Comment,
|
||||
community::{Community, CommunitySafe},
|
||||
post::Post,
|
||||
user::{UserAlias1, UserAlias2, UserSafe, UserSafeAlias1, UserSafeAlias2, User_},
|
||||
},
|
||||
|
@ -3,7 +3,6 @@ use crate::{
|
||||
functions::hot_rank,
|
||||
fuzzy_search,
|
||||
limit_and_offset,
|
||||
source::community::{Community, CommunityFollower, CommunitySafe, CommunityUserBan},
|
||||
views::ViewToVec,
|
||||
ListingType,
|
||||
MaybeOptional,
|
||||
@ -27,6 +26,7 @@ use lemmy_db_schema::{
|
||||
},
|
||||
source::{
|
||||
comment::{Comment, CommentAlias1, CommentSaved},
|
||||
community::{Community, CommunityFollower, CommunitySafe, CommunityUserBan},
|
||||
post::Post,
|
||||
user::{UserAlias1, UserSafe, UserSafeAlias1, User_},
|
||||
},
|
||||
@ -409,15 +409,8 @@ impl ViewToVec for CommentView {
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::{
|
||||
source::community::*,
|
||||
tests::establish_unpooled_connection,
|
||||
views::comment_view::*,
|
||||
Crud,
|
||||
Likeable,
|
||||
*,
|
||||
};
|
||||
use lemmy_db_schema::source::{comment::*, post::*, user::*};
|
||||
use crate::{tests::establish_unpooled_connection, views::comment_view::*, Crud, Likeable, *};
|
||||
use lemmy_db_schema::source::{comment::*, community::*, post::*, user::*};
|
||||
|
||||
#[test]
|
||||
fn test_crud() {
|
||||
|
@ -1,12 +1,11 @@
|
||||
use crate::{
|
||||
source::community::{Community, CommunitySafe},
|
||||
views::ViewToVec,
|
||||
ToSafe,
|
||||
};
|
||||
use crate::{views::ViewToVec, ToSafe};
|
||||
use diesel::{result::Error, *};
|
||||
use lemmy_db_schema::{
|
||||
schema::{community, community_follower, user_},
|
||||
source::user::{UserSafe, User_},
|
||||
source::{
|
||||
community::{Community, CommunitySafe},
|
||||
user::{UserSafe, User_},
|
||||
},
|
||||
};
|
||||
use serde::Serialize;
|
||||
|
||||
|
@ -1,12 +1,11 @@
|
||||
use crate::{
|
||||
source::community::{Community, CommunitySafe},
|
||||
views::ViewToVec,
|
||||
ToSafe,
|
||||
};
|
||||
use crate::{views::ViewToVec, ToSafe};
|
||||
use diesel::{result::Error, *};
|
||||
use lemmy_db_schema::{
|
||||
schema::{community, community_moderator, user_},
|
||||
source::user::{UserSafe, User_},
|
||||
source::{
|
||||
community::{Community, CommunitySafe},
|
||||
user::{UserSafe, User_},
|
||||
},
|
||||
};
|
||||
use serde::Serialize;
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
use crate::{
|
||||
source::community::{Community, CommunitySafe},
|
||||
ToSafe,
|
||||
};
|
||||
use crate::ToSafe;
|
||||
use diesel::{result::Error, *};
|
||||
use lemmy_db_schema::{
|
||||
schema::{community, community_user_ban, user_},
|
||||
source::user::{UserSafe, User_},
|
||||
source::{
|
||||
community::{Community, CommunitySafe},
|
||||
user::{UserSafe, User_},
|
||||
},
|
||||
};
|
||||
use serde::Serialize;
|
||||
|
||||
|
@ -3,10 +3,7 @@ use crate::{
|
||||
functions::hot_rank,
|
||||
fuzzy_search,
|
||||
limit_and_offset,
|
||||
source::{
|
||||
category::Category,
|
||||
community::{Community, CommunityFollower, CommunitySafe},
|
||||
},
|
||||
source::category::Category,
|
||||
views::ViewToVec,
|
||||
MaybeOptional,
|
||||
SortType,
|
||||
@ -15,7 +12,10 @@ use crate::{
|
||||
use diesel::{result::Error, *};
|
||||
use lemmy_db_schema::{
|
||||
schema::{category, community, community_aggregates, community_follower, user_},
|
||||
source::user::{UserSafe, User_},
|
||||
source::{
|
||||
community::{Community, CommunityFollower, CommunitySafe},
|
||||
user::{UserSafe, User_},
|
||||
},
|
||||
};
|
||||
use serde::Serialize;
|
||||
|
||||
|
@ -1,16 +1,11 @@
|
||||
use crate::{
|
||||
limit_and_offset,
|
||||
source::{
|
||||
community::{Community, CommunitySafe},
|
||||
moderator::ModAddCommunity,
|
||||
},
|
||||
views::ViewToVec,
|
||||
ToSafe,
|
||||
};
|
||||
use crate::{limit_and_offset, source::moderator::ModAddCommunity, views::ViewToVec, ToSafe};
|
||||
use diesel::{result::Error, *};
|
||||
use lemmy_db_schema::{
|
||||
schema::{community, mod_add_community, user_, user_alias_1},
|
||||
source::user::{UserAlias1, UserSafe, UserSafeAlias1, User_},
|
||||
source::{
|
||||
community::{Community, CommunitySafe},
|
||||
user::{UserAlias1, UserSafe, UserSafeAlias1, User_},
|
||||
},
|
||||
};
|
||||
use serde::Serialize;
|
||||
|
||||
|
@ -1,16 +1,11 @@
|
||||
use crate::{
|
||||
limit_and_offset,
|
||||
source::{
|
||||
community::{Community, CommunitySafe},
|
||||
moderator::ModBanFromCommunity,
|
||||
},
|
||||
views::ViewToVec,
|
||||
ToSafe,
|
||||
};
|
||||
use crate::{limit_and_offset, source::moderator::ModBanFromCommunity, views::ViewToVec, ToSafe};
|
||||
use diesel::{result::Error, *};
|
||||
use lemmy_db_schema::{
|
||||
schema::{community, mod_ban_from_community, user_, user_alias_1},
|
||||
source::user::{UserAlias1, UserSafe, UserSafeAlias1, User_},
|
||||
source::{
|
||||
community::{Community, CommunitySafe},
|
||||
user::{UserAlias1, UserSafe, UserSafeAlias1, User_},
|
||||
},
|
||||
};
|
||||
use serde::Serialize;
|
||||
|
||||
|
@ -1,16 +1,9 @@
|
||||
use crate::{
|
||||
limit_and_offset,
|
||||
source::{
|
||||
community::{Community, CommunitySafe},
|
||||
moderator::ModLockPost,
|
||||
},
|
||||
views::ViewToVec,
|
||||
ToSafe,
|
||||
};
|
||||
use crate::{limit_and_offset, source::moderator::ModLockPost, views::ViewToVec, ToSafe};
|
||||
use diesel::{result::Error, *};
|
||||
use lemmy_db_schema::{
|
||||
schema::{community, mod_lock_post, post, user_},
|
||||
source::{
|
||||
community::{Community, CommunitySafe},
|
||||
post::Post,
|
||||
user::{UserSafe, User_},
|
||||
},
|
||||
|
@ -1,17 +1,10 @@
|
||||
use crate::{
|
||||
limit_and_offset,
|
||||
source::{
|
||||
community::{Community, CommunitySafe},
|
||||
moderator::ModRemoveComment,
|
||||
},
|
||||
views::ViewToVec,
|
||||
ToSafe,
|
||||
};
|
||||
use crate::{limit_and_offset, source::moderator::ModRemoveComment, views::ViewToVec, ToSafe};
|
||||
use diesel::{result::Error, *};
|
||||
use lemmy_db_schema::{
|
||||
schema::{comment, community, mod_remove_comment, post, user_, user_alias_1},
|
||||
source::{
|
||||
comment::Comment,
|
||||
community::{Community, CommunitySafe},
|
||||
post::Post,
|
||||
user::{UserAlias1, UserSafe, UserSafeAlias1, User_},
|
||||
},
|
||||
|
@ -1,16 +1,11 @@
|
||||
use crate::{
|
||||
limit_and_offset,
|
||||
source::{
|
||||
community::{Community, CommunitySafe},
|
||||
moderator::ModRemoveCommunity,
|
||||
},
|
||||
views::ViewToVec,
|
||||
ToSafe,
|
||||
};
|
||||
use crate::{limit_and_offset, source::moderator::ModRemoveCommunity, views::ViewToVec, ToSafe};
|
||||
use diesel::{result::Error, *};
|
||||
use lemmy_db_schema::{
|
||||
schema::{community, mod_remove_community, user_},
|
||||
source::user::{UserSafe, User_},
|
||||
source::{
|
||||
community::{Community, CommunitySafe},
|
||||
user::{UserSafe, User_},
|
||||
},
|
||||
};
|
||||
use serde::Serialize;
|
||||
|
||||
|
@ -1,16 +1,9 @@
|
||||
use crate::{
|
||||
limit_and_offset,
|
||||
source::{
|
||||
community::{Community, CommunitySafe},
|
||||
moderator::ModRemovePost,
|
||||
},
|
||||
views::ViewToVec,
|
||||
ToSafe,
|
||||
};
|
||||
use crate::{limit_and_offset, source::moderator::ModRemovePost, views::ViewToVec, ToSafe};
|
||||
use diesel::{result::Error, *};
|
||||
use lemmy_db_schema::{
|
||||
schema::{community, mod_remove_post, post, user_},
|
||||
source::{
|
||||
community::{Community, CommunitySafe},
|
||||
post::Post,
|
||||
user::{UserSafe, User_},
|
||||
},
|
||||
|
@ -1,16 +1,9 @@
|
||||
use crate::{
|
||||
limit_and_offset,
|
||||
source::{
|
||||
community::{Community, CommunitySafe},
|
||||
moderator::ModStickyPost,
|
||||
},
|
||||
views::ViewToVec,
|
||||
ToSafe,
|
||||
};
|
||||
use crate::{limit_and_offset, source::moderator::ModStickyPost, views::ViewToVec, ToSafe};
|
||||
use diesel::{result::Error, *};
|
||||
use lemmy_db_schema::{
|
||||
schema::{community, mod_sticky_post, post, user_},
|
||||
source::{
|
||||
community::{Community, CommunitySafe},
|
||||
post::Post,
|
||||
user::{UserSafe, User_},
|
||||
},
|
||||
|
@ -1,9 +1,6 @@
|
||||
use crate::{
|
||||
limit_and_offset,
|
||||
source::{
|
||||
community::{Community, CommunitySafe},
|
||||
post_report::PostReport,
|
||||
},
|
||||
source::post_report::PostReport,
|
||||
views::ViewToVec,
|
||||
MaybeOptional,
|
||||
ToSafe,
|
||||
@ -12,6 +9,7 @@ use diesel::{result::Error, *};
|
||||
use lemmy_db_schema::{
|
||||
schema::{community, post, post_report, user_, user_alias_1, user_alias_2},
|
||||
source::{
|
||||
community::{Community, CommunitySafe},
|
||||
post::Post,
|
||||
user::{UserAlias1, UserAlias2, UserSafe, UserSafeAlias1, UserSafeAlias2, User_},
|
||||
},
|
||||
|
@ -3,7 +3,6 @@ use crate::{
|
||||
functions::hot_rank,
|
||||
fuzzy_search,
|
||||
limit_and_offset,
|
||||
source::community::{Community, CommunityFollower, CommunitySafe, CommunityUserBan},
|
||||
views::ViewToVec,
|
||||
ListingType,
|
||||
MaybeOptional,
|
||||
@ -24,6 +23,7 @@ use lemmy_db_schema::{
|
||||
user_,
|
||||
},
|
||||
source::{
|
||||
community::{Community, CommunityFollower, CommunitySafe, CommunityUserBan},
|
||||
post::{Post, PostRead, PostSaved},
|
||||
user::{UserSafe, User_},
|
||||
},
|
||||
@ -408,14 +408,13 @@ impl ViewToVec for PostView {
|
||||
mod tests {
|
||||
use crate::{
|
||||
aggregates::post_aggregates::PostAggregates,
|
||||
source::community::*,
|
||||
tests::establish_unpooled_connection,
|
||||
views::post_view::{PostQueryBuilder, PostView},
|
||||
Crud,
|
||||
Likeable,
|
||||
*,
|
||||
};
|
||||
use lemmy_db_schema::source::{post::*, user::*};
|
||||
use lemmy_db_schema::source::{community::*, post::*, user::*};
|
||||
|
||||
#[test]
|
||||
fn test_crud() {
|
||||
|
@ -2,10 +2,7 @@ use crate::{
|
||||
aggregates::comment_aggregates::CommentAggregates,
|
||||
functions::hot_rank,
|
||||
limit_and_offset,
|
||||
source::{
|
||||
community::{Community, CommunityFollower, CommunitySafe, CommunityUserBan},
|
||||
user_mention::UserMention,
|
||||
},
|
||||
source::user_mention::UserMention,
|
||||
views::ViewToVec,
|
||||
MaybeOptional,
|
||||
SortType,
|
||||
@ -28,6 +25,7 @@ use lemmy_db_schema::{
|
||||
},
|
||||
source::{
|
||||
comment::{Comment, CommentSaved},
|
||||
community::{Community, CommunityFollower, CommunitySafe, CommunityUserBan},
|
||||
post::Post,
|
||||
user::{UserAlias1, UserSafe, UserSafeAlias1, User_},
|
||||
},
|
||||
|
121
lemmy_db_schema/src/source/community.rs
Normal file
121
lemmy_db_schema/src/source/community.rs
Normal file
@ -0,0 +1,121 @@
|
||||
use crate::schema::{community, community_follower, community_moderator, community_user_ban};
|
||||
use serde::Serialize;
|
||||
|
||||
#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)]
|
||||
#[table_name = "community"]
|
||||
pub struct Community {
|
||||
pub id: i32,
|
||||
pub name: String,
|
||||
pub title: String,
|
||||
pub description: Option<String>,
|
||||
pub category_id: i32,
|
||||
pub creator_id: i32,
|
||||
pub removed: bool,
|
||||
pub published: chrono::NaiveDateTime,
|
||||
pub updated: Option<chrono::NaiveDateTime>,
|
||||
pub deleted: bool,
|
||||
pub nsfw: bool,
|
||||
pub actor_id: String,
|
||||
pub local: bool,
|
||||
pub private_key: Option<String>,
|
||||
pub public_key: Option<String>,
|
||||
pub last_refreshed_at: chrono::NaiveDateTime,
|
||||
pub icon: Option<String>,
|
||||
pub banner: Option<String>,
|
||||
}
|
||||
|
||||
/// A safe representation of community, without the sensitive info
|
||||
#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize)]
|
||||
#[table_name = "community"]
|
||||
pub struct CommunitySafe {
|
||||
pub id: i32,
|
||||
pub name: String,
|
||||
pub title: String,
|
||||
pub description: Option<String>,
|
||||
pub category_id: i32,
|
||||
pub creator_id: i32,
|
||||
pub removed: bool,
|
||||
pub published: chrono::NaiveDateTime,
|
||||
pub updated: Option<chrono::NaiveDateTime>,
|
||||
pub deleted: bool,
|
||||
pub nsfw: bool,
|
||||
pub actor_id: String,
|
||||
pub local: bool,
|
||||
pub icon: Option<String>,
|
||||
pub banner: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Insertable, AsChangeset, Debug)]
|
||||
#[table_name = "community"]
|
||||
pub struct CommunityForm {
|
||||
pub name: String,
|
||||
pub title: String,
|
||||
pub description: Option<String>,
|
||||
pub category_id: i32,
|
||||
pub creator_id: i32,
|
||||
pub removed: Option<bool>,
|
||||
pub published: Option<chrono::NaiveDateTime>,
|
||||
pub updated: Option<chrono::NaiveDateTime>,
|
||||
pub deleted: Option<bool>,
|
||||
pub nsfw: bool,
|
||||
pub actor_id: Option<String>,
|
||||
pub local: bool,
|
||||
pub private_key: Option<String>,
|
||||
pub public_key: Option<String>,
|
||||
pub last_refreshed_at: Option<chrono::NaiveDateTime>,
|
||||
pub icon: Option<Option<String>>,
|
||||
pub banner: Option<Option<String>>,
|
||||
}
|
||||
|
||||
#[derive(Identifiable, Queryable, Associations, PartialEq, Debug)]
|
||||
#[belongs_to(Community)]
|
||||
#[table_name = "community_moderator"]
|
||||
pub struct CommunityModerator {
|
||||
pub id: i32,
|
||||
pub community_id: i32,
|
||||
pub user_id: i32,
|
||||
pub published: chrono::NaiveDateTime,
|
||||
}
|
||||
|
||||
#[derive(Insertable, AsChangeset, Clone)]
|
||||
#[table_name = "community_moderator"]
|
||||
pub struct CommunityModeratorForm {
|
||||
pub community_id: i32,
|
||||
pub user_id: i32,
|
||||
}
|
||||
|
||||
#[derive(Identifiable, Queryable, Associations, PartialEq, Debug)]
|
||||
#[belongs_to(Community)]
|
||||
#[table_name = "community_user_ban"]
|
||||
pub struct CommunityUserBan {
|
||||
pub id: i32,
|
||||
pub community_id: i32,
|
||||
pub user_id: i32,
|
||||
pub published: chrono::NaiveDateTime,
|
||||
}
|
||||
|
||||
#[derive(Insertable, AsChangeset, Clone)]
|
||||
#[table_name = "community_user_ban"]
|
||||
pub struct CommunityUserBanForm {
|
||||
pub community_id: i32,
|
||||
pub user_id: i32,
|
||||
}
|
||||
|
||||
#[derive(Identifiable, Queryable, Associations, PartialEq, Debug)]
|
||||
#[belongs_to(Community)]
|
||||
#[table_name = "community_follower"]
|
||||
pub struct CommunityFollower {
|
||||
pub id: i32,
|
||||
pub community_id: i32,
|
||||
pub user_id: i32,
|
||||
pub published: chrono::NaiveDateTime,
|
||||
pub pending: Option<bool>,
|
||||
}
|
||||
|
||||
#[derive(Insertable, AsChangeset, Clone)]
|
||||
#[table_name = "community_follower"]
|
||||
pub struct CommunityFollowerForm {
|
||||
pub community_id: i32,
|
||||
pub user_id: i32,
|
||||
pub pending: bool,
|
||||
}
|
@ -1,3 +1,4 @@
|
||||
pub mod comment;
|
||||
pub mod community;
|
||||
pub mod post;
|
||||
pub mod user;
|
||||
|
@ -4,18 +4,14 @@ use diesel::{
|
||||
*,
|
||||
};
|
||||
use lemmy_db::{
|
||||
source::{
|
||||
comment::Comment_,
|
||||
community::{Community, CommunityForm},
|
||||
post::Post_,
|
||||
private_message::PrivateMessage,
|
||||
},
|
||||
source::{comment::Comment_, post::Post_, private_message::PrivateMessage},
|
||||
Crud,
|
||||
};
|
||||
use lemmy_db_schema::{
|
||||
naive_now,
|
||||
source::{
|
||||
comment::Comment,
|
||||
community::{Community, CommunityForm},
|
||||
post::Post,
|
||||
user::{UserForm, User_},
|
||||
},
|
||||
|
@ -4,7 +4,7 @@ use chrono::{DateTime, NaiveDateTime, Utc};
|
||||
use diesel::PgConnection;
|
||||
use lemmy_api::claims::Claims;
|
||||
use lemmy_db::{
|
||||
source::{community::Community, user::User},
|
||||
source::{community::Community_, user::User},
|
||||
views::{
|
||||
comment_view::{CommentQueryBuilder, CommentView},
|
||||
post_view::{PostQueryBuilder, PostView},
|
||||
@ -14,7 +14,7 @@ use lemmy_db::{
|
||||
ListingType,
|
||||
SortType,
|
||||
};
|
||||
use lemmy_db_schema::source::user::User_;
|
||||
use lemmy_db_schema::source::{community::Community, user::User_};
|
||||
use lemmy_structs::blocking;
|
||||
use lemmy_utils::{settings::Settings, utils::markdown_to_html, LemmyError};
|
||||
use lemmy_websocket::LemmyContext;
|
||||
|
@ -1,7 +1,7 @@
|
||||
use actix_web::{error::ErrorBadRequest, web::Query, *};
|
||||
use anyhow::anyhow;
|
||||
use lemmy_db::source::{community::Community, user::User};
|
||||
use lemmy_db_schema::source::user::User_;
|
||||
use lemmy_db::source::{community::Community_, user::User};
|
||||
use lemmy_db_schema::source::{community::Community, user::User_};
|
||||
use lemmy_structs::{blocking, WebFingerLink, WebFingerResponse};
|
||||
use lemmy_utils::{
|
||||
settings::Settings,
|
||||
|
@ -28,13 +28,11 @@ use lemmy_apub::{
|
||||
user_inbox::user_inbox,
|
||||
},
|
||||
};
|
||||
use lemmy_db::{
|
||||
source::community::{Community, CommunityForm},
|
||||
Crud,
|
||||
ListingType,
|
||||
SortType,
|
||||
use lemmy_db::{Crud, ListingType, SortType};
|
||||
use lemmy_db_schema::source::{
|
||||
community::{Community, CommunityForm},
|
||||
user::{UserForm, User_},
|
||||
};
|
||||
use lemmy_db_schema::source::user::{UserForm, User_};
|
||||
use lemmy_rate_limit::{rate_limiter::RateLimiter, RateLimit};
|
||||
use lemmy_utils::{apub::generate_actor_keypair, settings::Settings};
|
||||
use lemmy_websocket::{chat_server::ChatServer, LemmyContext};
|
||||
|
Loading…
Reference in New Issue
Block a user