lemmy/crates/db_schema/src/source/community.rs

125 lines
3.5 KiB
Rust
Raw Normal View History

use crate::{
2021-10-16 13:33:38 +00:00
newtypes::{CommunityId, DbUrl, PersonId},
2021-02-26 13:49:58 +00:00
schema::{community, community_follower, community_moderator, community_person_ban},
};
use serde::{Deserialize, Serialize};
2020-12-21 12:28:12 +00:00
#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize, Deserialize)]
2020-12-21 12:28:12 +00:00
#[table_name = "community"]
pub struct Community {
pub id: CommunityId,
2020-12-21 12:28:12 +00:00
pub name: String,
pub title: String,
pub description: Option<String>,
pub removed: bool,
pub published: chrono::NaiveDateTime,
pub updated: Option<chrono::NaiveDateTime>,
pub deleted: bool,
pub nsfw: bool,
pub actor_id: DbUrl,
2020-12-21 12:28:12 +00:00
pub local: bool,
pub private_key: Option<String>,
pub public_key: Option<String>,
pub last_refreshed_at: chrono::NaiveDateTime,
pub icon: Option<DbUrl>,
pub banner: Option<DbUrl>,
pub followers_url: DbUrl,
pub inbox_url: DbUrl,
pub shared_inbox_url: Option<DbUrl>,
2020-12-21 12:28:12 +00:00
}
/// A safe representation of community, without the sensitive info
#[derive(Clone, Queryable, Identifiable, PartialEq, Debug, Serialize, Deserialize)]
2020-12-21 12:28:12 +00:00
#[table_name = "community"]
pub struct CommunitySafe {
pub id: CommunityId,
2020-12-21 12:28:12 +00:00
pub name: String,
pub title: String,
pub description: Option<String>,
pub removed: bool,
pub published: chrono::NaiveDateTime,
pub updated: Option<chrono::NaiveDateTime>,
pub deleted: bool,
pub nsfw: bool,
pub actor_id: DbUrl,
2020-12-21 12:28:12 +00:00
pub local: bool,
pub icon: Option<DbUrl>,
pub banner: Option<DbUrl>,
2020-12-21 12:28:12 +00:00
}
2021-03-20 20:59:07 +00:00
#[derive(Insertable, AsChangeset, Debug, Default)]
2020-12-21 12:28:12 +00:00
#[table_name = "community"]
pub struct CommunityForm {
pub name: String,
pub title: String,
pub description: Option<String>,
pub removed: Option<bool>,
pub published: Option<chrono::NaiveDateTime>,
pub updated: Option<chrono::NaiveDateTime>,
pub deleted: Option<bool>,
2021-03-20 20:59:07 +00:00
pub nsfw: Option<bool>,
pub actor_id: Option<DbUrl>,
2021-03-20 20:59:07 +00:00
pub local: Option<bool>,
2020-12-21 12:28:12 +00:00
pub private_key: Option<String>,
pub public_key: Option<String>,
pub last_refreshed_at: Option<chrono::NaiveDateTime>,
pub icon: Option<Option<DbUrl>>,
pub banner: Option<Option<DbUrl>>,
pub followers_url: Option<DbUrl>,
pub inbox_url: Option<DbUrl>,
pub shared_inbox_url: Option<Option<DbUrl>>,
2020-12-21 12:28:12 +00:00
}
#[derive(Identifiable, Queryable, Associations, PartialEq, Debug)]
#[belongs_to(Community)]
#[table_name = "community_moderator"]
pub struct CommunityModerator {
pub id: i32,
pub community_id: CommunityId,
pub person_id: PersonId,
2020-12-21 12:28:12 +00:00
pub published: chrono::NaiveDateTime,
}
#[derive(Insertable, AsChangeset, Clone)]
#[table_name = "community_moderator"]
pub struct CommunityModeratorForm {
pub community_id: CommunityId,
pub person_id: PersonId,
2020-12-21 12:28:12 +00:00
}
#[derive(Identifiable, Queryable, Associations, PartialEq, Debug)]
#[belongs_to(Community)]
2021-02-26 13:49:58 +00:00
#[table_name = "community_person_ban"]
pub struct CommunityPersonBan {
2020-12-21 12:28:12 +00:00
pub id: i32,
pub community_id: CommunityId,
pub person_id: PersonId,
2020-12-21 12:28:12 +00:00
pub published: chrono::NaiveDateTime,
}
#[derive(Insertable, AsChangeset, Clone)]
2021-02-26 13:49:58 +00:00
#[table_name = "community_person_ban"]
pub struct CommunityPersonBanForm {
pub community_id: CommunityId,
pub person_id: PersonId,
2020-12-21 12:28:12 +00:00
}
#[derive(Identifiable, Queryable, Associations, PartialEq, Debug)]
#[belongs_to(Community)]
#[table_name = "community_follower"]
pub struct CommunityFollower {
pub id: i32,
pub community_id: CommunityId,
pub person_id: PersonId,
2020-12-21 12:28:12 +00:00
pub published: chrono::NaiveDateTime,
pub pending: Option<bool>,
}
#[derive(Insertable, AsChangeset, Clone)]
#[table_name = "community_follower"]
pub struct CommunityFollowerForm {
pub community_id: CommunityId,
pub person_id: PersonId,
2020-12-21 12:28:12 +00:00
pub pending: bool,
}