summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDessalines <tyhou13@gmx.com>2019-04-19 21:06:25 -0700
committerDessalines <tyhou13@gmx.com>2019-04-19 21:06:25 -0700
commit9afadfb9c4c5db1796848ec4af9756fe03d51ee3 (patch)
tree22a2ea818d6bfcdb390e398c4c9bd5e05595587c
parent6f801bb819169060abcf1d8e901759f133dc6987 (diff)
Saving replies, the actual fixes will be in the merge to dev.
-rw-r--r--server/migrations/2019-02-27-170003_create_community/up.sql2
-rw-r--r--server/migrations/2019-03-03-163336_create_post/down.sql2
-rw-r--r--server/migrations/2019-03-03-163336_create_post/up.sql19
-rw-r--r--server/migrations/2019-03-05-233828_create_comment/down.sql1
-rw-r--r--server/migrations/2019-03-05-233828_create_comment/up.sql11
-rw-r--r--server/migrations/2019-03-30-212058_create_post_view/up.sql6
-rw-r--r--server/migrations/2019-04-03-155205_create_community_view/up.sql7
-rw-r--r--server/migrations/2019-04-03-155309_create_comment_view/up.sql7
-rw-r--r--server/migrations/2019-04-11-144915_create_mod_views/up.sql4
-rw-r--r--server/src/actions/comment.rs110
-rw-r--r--server/src/actions/comment_view.rs47
-rw-r--r--server/src/actions/community.rs8
-rw-r--r--server/src/actions/community_view.rs6
-rw-r--r--server/src/actions/moderator.rs6
-rw-r--r--server/src/actions/post.rs163
-rw-r--r--server/src/actions/post_view.rs49
-rw-r--r--server/src/lib.rs10
-rw-r--r--server/src/schema.rs45
-rw-r--r--server/src/websocket_server/server.rs293
-rw-r--r--ui/src/components/comment-node.tsx229
-rw-r--r--ui/src/components/comment-nodes.tsx7
-rw-r--r--ui/src/components/communities.tsx4
-rw-r--r--ui/src/components/community.tsx6
-rw-r--r--ui/src/components/create-community.tsx2
-rw-r--r--ui/src/components/create-post.tsx2
-rw-r--r--ui/src/components/login.tsx4
-rw-r--r--ui/src/components/main.tsx12
-rw-r--r--ui/src/components/modlog.tsx40
-rw-r--r--ui/src/components/navbar.tsx26
-rw-r--r--ui/src/components/post-listing.tsx35
-rw-r--r--ui/src/components/post-listings.tsx2
-rw-r--r--ui/src/components/post.tsx50
-rw-r--r--ui/src/components/setup.tsx2
-rw-r--r--ui/src/components/sidebar.tsx4
-rw-r--r--ui/src/components/site-form.tsx2
-rw-r--r--ui/src/components/user.tsx14
-rw-r--r--ui/src/index.html2
-rw-r--r--ui/src/index.tsx3
-rw-r--r--ui/src/interfaces.ts72
-rw-r--r--ui/src/main.css87
-rw-r--r--ui/src/services/WebSocketService.ts23
-rw-r--r--ui/src/utils.ts21
42 files changed, 1015 insertions, 430 deletions
diff --git a/server/migrations/2019-02-27-170003_create_community/up.sql b/server/migrations/2019-02-27-170003_create_community/up.sql
index 2d6856b3..363f99f2 100644
--- a/server/migrations/2019-02-27-170003_create_community/up.sql
+++ b/server/migrations/2019-02-27-170003_create_community/up.sql
@@ -38,7 +38,7 @@ create table community (
description text,
category_id int references category on update cascade on delete cascade not null,
creator_id int references user_ on update cascade on delete cascade not null,
- removed boolean default false,
+ removed boolean default false not null,
published timestamp not null default now(),
updated timestamp
);
diff --git a/server/migrations/2019-03-03-163336_create_post/down.sql b/server/migrations/2019-03-03-163336_create_post/down.sql
index acc0b5d1..a671c2e7 100644
--- a/server/migrations/2019-03-03-163336_create_post/down.sql
+++ b/server/migrations/2019-03-03-163336_create_post/down.sql
@@ -1,2 +1,4 @@
+drop table post_read;
+drop table post_saved;
drop table post_like;
drop table post;
diff --git a/server/migrations/2019-03-03-163336_create_post/up.sql b/server/migrations/2019-03-03-163336_create_post/up.sql
index c3b7c0b8..90737812 100644
--- a/server/migrations/2019-03-03-163336_create_post/up.sql
+++ b/server/migrations/2019-03-03-163336_create_post/up.sql
@@ -5,8 +5,8 @@ create table post (
body text,
creator_id int references user_ on update cascade on delete cascade not null,
community_id int references community on update cascade on delete cascade not null,
- removed boolean default false,
- locked boolean default false,
+ removed boolean default false not null,
+ locked boolean default false not null,
published timestamp not null default now(),
updated timestamp
);
@@ -20,3 +20,18 @@ create table post_like (
unique(post_id, user_id)
);
+create table post_saved (
+ id serial primary key,
+ post_id int references post on update cascade on delete cascade not null,
+ user_id int references user_ on update cascade on delete cascade not null,
+ published timestamp not null default now(),
+ unique(post_id, user_id)
+);
+
+create table post_read (
+ id serial primary key,
+ post_id int references post on update cascade on delete cascade not null,
+ user_id int references user_ on update cascade on delete cascade not null,
+ published timestamp not null default now(),
+ unique(post_id, user_id)
+);
diff --git a/server/migrations/2019-03-05-233828_create_comment/down.sql b/server/migrations/2019-03-05-233828_create_comment/down.sql
index 5b92a44c..80fe0b1f 100644
--- a/server/migrations/2019-03-05-233828_create_comment/down.sql
+++ b/server/migrations/2019-03-05-233828_create_comment/down.sql
@@ -1,2 +1,3 @@
+drop table comment_saved;
drop table comment_like;
drop table comment;
diff --git a/server/migrations/2019-03-05-233828_create_comment/up.sql b/server/migrations/2019-03-05-233828_create_comment/up.sql
index 214d50a6..4b754ece 100644
--- a/server/migrations/2019-03-05-233828_create_comment/up.sql
+++ b/server/migrations/2019-03-05-233828_create_comment/up.sql
@@ -4,7 +4,8 @@ create table comment (
post_id int references post on update cascade on delete cascade not null,
parent_id int references comment on update cascade on delete cascade,
content text not null,
- removed boolean default false,
+ removed boolean default false not null,
+ read boolean default false not null,
published timestamp not null default now(),
updated timestamp
);
@@ -18,3 +19,11 @@ create table comment_like (
published timestamp not null default now(),
unique(comment_id, user_id)
);
+
+create table comment_saved (
+ id serial primary key,
+ comment_id int references comment on update cascade on delete cascade not null,
+ user_id int references user_ on update cascade on delete cascade not null,
+ published timestamp not null default now(),
+ unique(comment_id, user_id)
+);
diff --git a/server/migrations/2019-03-30-212058_create_post_view/up.sql b/server/migrations/2019-03-30-212058_create_post_view/up.sql
index ecf3280a..2f71b6fb 100644
--- a/server/migrations/2019-03-30-212058_create_post_view/up.sql
+++ b/server/migrations/2019-03-30-212058_create_post_view/up.sql
@@ -31,7 +31,8 @@ ap.*,
u.id as user_id,
coalesce(pl.score, 0) as my_vote,
(select cf.id::bool from community_follower cf where u.id = cf.user_id and cf.community_id = ap.community_id) as subscribed,
-u.admin or (select cm.id::bool from community_moderator cm where u.id = cm.user_id and cm.community_id = ap.community_id) as am_mod
+(select pr.id::bool from post_read pr where u.id = pr.user_id and pr.post_id = ap.id) as read,
+(select ps.id::bool from post_saved ps where u.id = ps.user_id and ps.post_id = ap.id) as saved
from user_ u
cross join all_post ap
left join post_like pl on u.id = pl.user_id and ap.id = pl.post_id
@@ -43,6 +44,7 @@ ap.*,
null as user_id,
null as my_vote,
null as subscribed,
-null as am_mod
+null as read,
+null as saved
from all_post ap
;
diff --git a/server/migrations/2019-04-03-155205_create_community_view/up.sql b/server/migrations/2019-04-03-155205_create_community_view/up.sql
index 1b73af51..7d38dbfa 100644
--- a/server/migrations/2019-04-03-155205_create_community_view/up.sql
+++ b/server/migrations/2019-04-03-155205_create_community_view/up.sql
@@ -13,19 +13,16 @@ with all_community as
select
ac.*,
u.id as user_id,
-cf.id::boolean as subscribed,
-u.admin or (select cm.id::bool from community_moderator cm where u.id = cm.user_id and cm.community_id = ac.id) as am_mod
+(select cf.id::boolean from community_follower cf where u.id = cf.user_id and ac.id = cf.community_id) as subscribed
from user_ u
cross join all_community ac
-left join community_follower cf on u.id = cf.user_id and ac.id = cf.community_id
union all
select
ac.*,
null as user_id,
-null as subscribed,
-null as am_mod
+null as subscribed
from all_community ac
;
diff --git a/server/migrations/2019-04-03-155309_create_comment_view/up.sql b/server/migrations/2019-04-03-155309_create_comment_view/up.sql
index a73b6182..a78e3ac3 100644
--- a/server/migrations/2019-04-03-155309_create_comment_view/up.sql
+++ b/server/migrations/2019-04-03-155309_create_comment_view/up.sql
@@ -4,7 +4,8 @@ with all_comment as
select
c.*,
(select community_id from post p where p.id = c.post_id),
- (select cb.id::bool from community_user_ban cb where c.creator_id = cb.user_id) as banned,
+ (select u.banned from user_ u where c.creator_id = u.id) as banned,
+ (select cb.id::bool from community_user_ban cb, post p where c.creator_id = cb.user_id and p.id = c.post_id and p.community_id = cb.community_id) as banned_from_community,
(select name from user_ where c.creator_id = user_.id) as creator_name,
coalesce(sum(cl.score), 0) as score,
count (case when cl.score = 1 then 1 else null end) as upvotes,
@@ -18,7 +19,7 @@ select
ac.*,
u.id as user_id,
coalesce(cl.score, 0) as my_vote,
-u.admin or (select cm.id::bool from community_moderator cm, post p where u.id = cm.user_id and ac.post_id = p.id and p.community_id = cm.community_id) as am_mod
+(select cs.id::bool from comment_saved cs where u.id = cs.user_id and cs.comment_id = ac.id) as saved
from user_ u
cross join all_comment ac
left join comment_like cl on u.id = cl.user_id and ac.id = cl.comment_id
@@ -29,6 +30,6 @@ select
ac.*,
null as user_id,
null as my_vote,
- null as am_mod
+ null as saved
from all_comment ac
;
diff --git a/server/migrations/2019-04-11-144915_create_mod_views/up.sql b/server/migrations/2019-04-11-144915_create_mod_views/up.sql
index 908028d0..70a33e46 100644
--- a/server/migrations/2019-04-11-144915_create_mod_views/up.sql
+++ b/server/migrations/2019-04-11-144915_create_mod_views/up.sql
@@ -43,8 +43,7 @@ create view mod_ban_view as
select mb.*,
(select name from user_ u where mb.mod_user_id = u.id) as mod_user_name,
(select name from user_ u where mb.other_user_id = u.id) as other_user_name
-from mod_ban_from_community mb;
-
+from mod_ban mb;
create view mod_add_community_view as
select ma.*,
@@ -53,7 +52,6 @@ select ma.*,
(select name from community c where ma.community_id = c.id) as community_name
from mod_add_community ma;
-
create view mod_add_view as
select ma.*,
(select name from user_ u where ma.mod_user_id = u.id) as mod_user_name,
diff --git a/server/src/actions/comment.rs b/server/src/actions/comment.rs
index f6eee5f1..c3aa0107 100644
--- a/server/src/actions/comment.rs
+++ b/server/src/actions/comment.rs
@@ -1,9 +1,9 @@
extern crate diesel;
-use schema::{comment, comment_like};
+use schema::{comment, comment_like, comment_saved};
use diesel::*;
use diesel::result::Error;
use serde::{Deserialize, Serialize};
-use {Crud, Likeable};
+use {Crud, Likeable, Saveable};
use actions::post::Post;
// WITH RECURSIVE MyTree AS (
@@ -22,7 +22,8 @@ pub struct Comment {
pub post_id: i32,
pub parent_id: Option<i32>,
pub content: String,
- pub removed: Option<bool>,
+ pub removed: bool,
+ pub read: bool,
pub published: chrono::NaiveDateTime,
pub updated: Option<chrono::NaiveDateTime>
}
@@ -38,27 +39,6 @@ pub struct CommentForm {
pub updated: Option<chrono::NaiveDateTime>
}
-#[derive(Identifiable, Queryable, Associations, PartialEq, Debug, Clone)]
-#[belongs_to(Comment)]
-#[table_name = "comment_like"]
-pub struct CommentLike {
- pub id: i32,
- pub user_id: i32,
- pub comment_id: i32,
- pub post_id: i32,
- pub score: i16,
- pub published: chrono::NaiveDateTime,
-}
-
-#[derive(Insertable, AsChangeset, Clone)]
-#[table_name="comment_like"]
-pub struct CommentLikeForm {
- pub user_id: i32,
- pub comment_id: i32,
- pub post_id: i32,
- pub score: i16
-}
-
impl Crud<CommentForm> for Comment {
fn read(conn: &PgConnection, comment_id: i32) -> Result<Self, Error> {
use schema::comment::dsl::*;
@@ -87,6 +67,27 @@ impl Crud<CommentForm> for Comment {
}
}
+#[derive(Identifiable, Queryable, Associations, PartialEq, Debug, Clone)]
+#[belongs_to(Comment)]
+#[table_name = "comment_like"]
+pub struct CommentLike {
+ pub id: i32,
+ pub user_id: i32,
+ pub comment_id: i32,
+ pub post_id: i32,
+ pub score: i16,
+ pub published: chrono::NaiveDateTime,
+}
+
+#[derive(Insertable, AsChangeset, Clone)]
+#[table_name="comment_like"]
+pub struct CommentLikeForm {
+ pub user_id: i32,
+ pub comment_id: i32,
+ pub post_id: i32,
+ pub score: i16
+}
+
impl Likeable <CommentLikeForm> for CommentLike {
fn read(conn: &PgConnection, comment_id_from: i32) -> Result<Vec<Self>, Error> {
use schema::comment_like::dsl::*;
@@ -119,6 +120,39 @@ impl CommentLike {
}
}
+#[derive(Identifiable, Queryable, Associations, PartialEq, Debug)]
+#[belongs_to(Comment)]
+#[table_name = "comment_saved"]
+pub struct CommentSaved {
+ pub id: i32,
+ pub comment_id: i32,
+ pub user_id: i32,
+ pub published: chrono::NaiveDateTime,
+}
+
+#[derive(Insertable, AsChangeset, Clone)]
+#[table_name="comment_saved"]
+pub struct CommentSavedForm {
+ pub comment_id: i32,
+ pub user_id: i32,
+}
+
+impl Saveable <CommentSavedForm> for CommentSaved {
+ fn save(conn: &PgConnection, comment_saved_form: &CommentSavedForm) -> Result<Self, Error> {
+ use schema::comment_saved::dsl::*;
+ insert_into(comment_saved)
+ .values(comment_saved_form)
+ .get_result::<Self>(conn)
+ }
+ fn unsave(conn: &PgConnection, comment_saved_form: &CommentSavedForm) -> Result<usize, Error> {
+ use schema::comment_saved::dsl::*;
+ diesel::delete(comment_saved
+ .filter(comment_id.eq(comment_saved_form.comment_id))
+ .filter(user_id.eq(comment_saved_form.user_id)))
+ .execute(conn)
+ }
+}
+
#[cfg(test)]
mod tests {
use establish_connection;
@@ -150,7 +184,7 @@ mod tests {
description: None,
category_id: 1,
creator_id: inserted_user.id,
- removed: None,
+ removed: false,
updated: None
};
@@ -162,8 +196,8 @@ mod tests {
url: None,
body: None,
community_id: inserted_community.id,
- removed: None,
- locked: None,
+ removed: false,
+ locked: false,
updated: None
};
@@ -185,7 +219,8 @@ mod tests {
content: "A test comment".into(),
creator_id: inserted_user.id,
post_id: inserted_post.id,
- removed: Some(false),
+ removed: false,
+ read: false,
parent_id: None,
published: inserted_comment.published,
updated: None
@@ -202,6 +237,7 @@ mod tests {
let inserted_child_comment = Comment::create(&conn, &child_comment_form).unwrap();
+ // Comment Like
let comment_like_form = CommentLikeForm {
comment_id: inserted_comment.id,
post_id: inserted_post.id,
@@ -220,9 +256,25 @@ mod tests {
score: 1
};
+ // Comment Saved
+ let comment_saved_form = CommentSavedForm {
+ comment_id: inserted_comment.id,
+ user_id: inserted_user.id,
+ };
+
+ let inserted_comment_saved = CommentSaved::save(&conn, &comment_saved_form).unwrap();
+
+ let expected_comment_saved = CommentSaved {
+ id: inserted_comment_saved.id,
+ comment_id: inserted_comment.id,
+ user_id: inserted_user.id,
+ published: inserted_comment_saved.published,
+ };
+
let read_comment = Comment::read(&conn, inserted_comment.id).unwrap();
let updated_comment = Comment::update(&conn, inserted_comment.id, &comment_form).unwrap();
let like_removed = CommentLike::remove(&conn, &comment_like_form).unwrap();
+ let saved_removed = CommentSaved::unsave(&conn, &comment_saved_form).unwrap();
let num_deleted = Comment::delete(&conn, inserted_comment.id).unwrap();
Comment::delete(&conn, inserted_child_comment.id).unwrap();
Post::delete(&conn, inserted_post.id).unwrap();
@@ -233,8 +285,10 @@ mod tests {
assert_eq!(expected_comment, inserted_comment);
assert_eq!(expected_comment, updated_comment);
assert_eq!(expected_comment_like, inserted_comment_like);
+ assert_eq!(expected_comment_saved, inserted_comment_saved);
assert_eq!(expected_comment.id, inserted_child_comment.parent_id.unwrap());
assert_eq!(1, like_removed);
+ assert_eq!(1, saved_removed);
assert_eq!(1, num_deleted);
}
diff --git a/server/src/actions/comment_view.rs b/server/src/actions/comment_view.rs
index 0848ee1c..36043716 100644
--- a/server/src/actions/comment_view.rs
+++ b/server/src/actions/comment_view.rs
@@ -13,18 +13,20 @@ table! {
post_id -> Int4,
parent_id -> Nullable<Int4>,
content -> Text,
- removed -> Nullable<Bool>,
+ removed -> Bool,
+ read -> Bool,
published -> Timestamp,
updated -> Nullable<Timestamp>,
community_id -> Int4,
- banned -> Nullable<Bool>,
+ banned -> Bool,
+ banned_from_community -> Bool,
creator_name -> Varchar,
score -> BigInt,
upvotes -> BigInt,
downvotes -> BigInt,
user_id -> Nullable<Int4>,
my_vote -> Nullable<Int4>,
- am_mod -> Nullable<Bool>,
+ saved -> Nullable<Bool>,
}
}
@@ -36,18 +38,20 @@ pub struct CommentView {
pub post_id: i32,
pub parent_id: Option<i32>,
pub content: String,
- pub removed: Option<bool>,
+ pub removed: bool,
+ pub read: bool,
pub published: chrono::NaiveDateTime,
pub updated: Option<chrono::NaiveDateTime>,
pub community_id: i32,
- pub banned: Option<bool>,
+ pub banned: bool,
+ pub banned_from_community: bool,
pub creator_name: String,
pub score: i64,
pub upvotes: i64,
pub downvotes: i64,
pub user_id: Option<i32>,
pub my_vote: Option<i32>,
- pub am_mod: Option<bool>,
+ pub saved: Option<bool>,
}
impl CommentView {
@@ -57,6 +61,7 @@ impl CommentView {
for_post_id: Option<i32>,
for_creator_id: Option<i32>,
my_user_id: Option<i32>,
+ saved_only: bool,
page: Option<i64>,
limit: Option<i64>,
) -> Result<Vec<Self>, Error> {
@@ -81,6 +86,10 @@ impl CommentView {
if let Some(for_post_id) = for_post_id {
query = query.filter(post_id.eq(for_post_id));
};
+
+ if saved_only {
+ query = query.filter(saved.eq(true));
+ }
query = match sort {
// SortType::Hot => query.order_by(hot_rank.desc()),
@@ -159,7 +168,7 @@ mod tests {
description: None,
category_id: 1,
creator_id: inserted_user.id,
- removed: None,
+ removed: false,
updated: None
};
@@ -171,8 +180,8 @@ mod tests {
url: None,
body: None,
community_id: inserted_community.id,
- removed: None,
- locked: None,
+ removed: false,
+ locked: false,
updated: None
};
@@ -205,8 +214,10 @@ mod tests {
post_id: inserted_post.id,
community_id: inserted_community.id,
parent_id: None,
- removed: Some(false),
- banned: None,
+ removed: false,
+ read: false,
+ banned: false,
+ banned_from_community: false,
published: inserted_comment.published,
updated: None,
creator_name: inserted_user.name.to_owned(),
@@ -215,7 +226,7 @@ mod tests {
upvotes: 1,
user_id: None,
my_vote: None,
- am_mod: None,
+ saved: None,
};
let expected_comment_view_with_user = CommentView {
@@ -225,8 +236,10 @@ mod tests {
post_id: inserted_post.id,
community_id: inserted_community.id,
parent_id: None,
- removed: Some(false),
- banned: None,
+ removed: false,
+ read: false,
+ banned: false,
+ banned_from_community: false,
published: inserted_comment.published,
updated: None,
creator_name: inserted_user.name.to_owned(),
@@ -235,11 +248,11 @@ mod tests {
upvotes: 1,
user_id: Some(inserted_user.id),
my_vote: Some(1),
- am_mod: None,
+ saved: None,
};
- let read_comment_views_no_user = CommentView::list(&conn, &SortType::New, Some(inserted_post.id), None, None, None, None).unwrap();
- let read_comment_views_with_user = CommentView::list(&conn, &SortType::New, Some(inserted_post.id), None, Some(inserted_user.id), None, None).unwrap();
+ let read_comment_views_no_user = CommentView::list(&conn, &SortType::New, Some(inserted_post.id), None, None, false, None, None).unwrap();
+ let read_comment_views_with_user = CommentView::list(&conn, &SortType::New, Some(inserted_post.id), None, Some(inserted_user.id), false, None, None).unwrap();
let like_removed = CommentLike::remove(&conn, &comment_like_form).unwrap();
let num_deleted = Comment::delete(&conn, inserted_comment.id).unwrap();
Post::delete(&conn, inserted_post.id).unwrap();
diff --git a/server/src/actions/community.rs b/server/src/actions/community.rs
index ac331934..594518ba 100644
--- a/server/src/actions/community.rs
+++ b/server/src/actions/community.rs
@@ -14,7 +14,7 @@ pub struct Community {
pub description: Option<String>,
pub category_id: i32,
pub creator_id: i32,
- pub removed: Option<bool>,
+ pub removed: bool,
pub published: chrono::NaiveDateTime,
pub updated: Option<chrono::NaiveDateTime>
}
@@ -27,7 +27,7 @@ pub struct CommunityForm {
pub description: Option<String>,
pub category_id: i32,
pub creator_id: i32,
- pub removed: Option<bool>,
+ pub removed: bool,
pub updated: Option<chrono::NaiveDateTime>
}
@@ -236,7 +236,7 @@ mod tests {
title: "nada".to_owned(),
description: None,
category_id: 1,
- removed: None,
+ removed: false,
updated: None,
};
@@ -249,7 +249,7 @@ mod tests {
title: "nada".to_owned(),
description: None,
category_id: 1,
- removed: Some(false),
+ removed: false,
published: inserted_community.published,
updated: None
};
diff --git a/server/src/actions/community_view.rs b/server/src/actions/community_view.rs
index 4db97491..8966ee15 100644
--- a/server/src/actions/community_view.rs
+++ b/server/src/actions/community_view.rs
@@ -12,7 +12,7 @@ table! {
description -> Nullable<Text>,
category_id -> Int4,
creator_id -> Int4,
- removed -> Nullable<Bool>,
+ removed -> Bool,
published -> Timestamp,
updated -> Nullable<Timestamp>,
creator_name -> Varchar,
@@ -22,7 +22,6 @@ table! {
number_of_comments -> BigInt,
user_id -> Nullable<Int4>,
subscribed -> Nullable<Bool>,
- am_mod -> Nullable<Bool>,
}
}
@@ -83,7 +82,7 @@ pub struct CommunityView {
pub description: Option<String>,
pub category_id: i32,
pub creator_id: i32,
- pub removed: Option<bool>,
+ pub removed: bool,
pub published: chrono::NaiveDateTime,
pub updated: Option<chrono::NaiveDateTime>,
pub creator_name: String,
@@ -93,7 +92,6 @@ pub struct CommunityView {
pub number_of_comments: i64,
pub user_id: Option<i32>,
pub subscribed: Option<bool>,
- pub am_mod: Option<bool>,
}
impl CommunityView {
diff --git a/server/src/actions/moderator.rs b/server/src/actions/moderator.rs
index a97b2120..e0d885ce 100644
--- a/server/src/actions/moderator.rs
+++ b/server/src/actions/moderator.rs
@@ -441,7 +441,7 @@ mod tests {
description: None,
category_id: 1,
creator_id: inserted_user.id,
- removed: None,
+ removed: false,
updated: None
};
@@ -453,8 +453,8 @@ mod tests {
body: None,
creator_id: inserted_user.id,
community_id: inserted_community.id,
- removed: None,
- locked: None,
+ removed: false,
+ locked: false,
updated: None
};
diff --git a/server/src/actions/post.rs b/server/src/actions/post.rs
index 468b3a9b..0fd0e5c5 100644
--- a/server/src/actions/post.rs
+++ b/server/src/actions/post.rs
@@ -1,9 +1,9 @@
extern crate diesel;
-use schema::{post, post_like};
+use schema::{post, post_like, post_saved, post_read};
use diesel::*;
use diesel::result::Error;
use serde::{Deserialize, Serialize};
-use {Crud, Likeable};
+use {Crud, Likeable, Saveable, Readable};
#[derive(Queryable, Identifiable, PartialEq, Debug, Serialize, Deserialize)]
#[table_name="post"]
@@ -14,8 +14,8 @@ pub struct Post {
pub body: Option<String>,
pub creator_id: i32,
pub community_id: i32,
- pub removed: Option<bool>,
- pub locked: Option<bool>,
+ pub removed: bool,
+ pub locked: bool,
pub published: chrono::NaiveDateTime,
pub updated: Option<chrono::NaiveDateTime>
}
@@ -28,30 +28,11 @@ pub struct PostForm {
pub body: Option<String>,
pub creator_id: i32,
pub community_id: i32,
- pub removed: Option<bool>,
- pub locked: Option<bool>,
+ pub removed: bool,
+ pub locked: bool,
pub updated: Option<chrono::NaiveDateTime>
}
-#[derive(Identifiable, Queryable, Associations, PartialEq, Debug)]
-#[belongs_to(Post)]
-#[table_name = "post_like"]
-pub struct PostLike {
- pub id: i32,
- pub post_id: i32,
- pub user_id: i32,
- pub score: i16,
- pub published: chrono::NaiveDateTime,
-}
-
-#[derive(Insertable, AsChangeset, Clone)]
-#[table_name="post_like"]
-pub struct PostLikeForm {
- pub post_id: i32,
- pub user_id: i32,
- pub score: i16
-}
-
impl Crud<PostForm> for Post {
fn read(conn: &PgConnection, post_id: i32) -> Result<Self, Error> {
use schema::post::dsl::*;
@@ -80,6 +61,25 @@ impl Crud<PostForm> for Post {
}
}