summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorDessalines <happydooby@gmail.com>2019-03-04 08:39:07 -0800
committerDessalines <happydooby@gmail.com>2019-03-04 08:39:07 -0800
commitb1cdbf715488588337dbcd8b316b4e74dbaa5923 (patch)
treed8c7d207b311e7a8df6ff54700636e49526739a3 /server
parentbb572f59a5974277ece00efa845f7a1546054d1b (diff)
Adding User and Community types.
Diffstat (limited to 'server')
-rw-r--r--server/migrations/2019-02-26-002946_create_user/up.sql10
-rw-r--r--server/migrations/2019-02-27-170003_create_community/down.sql4
-rw-r--r--server/migrations/2019-02-27-170003_create_community/up.sql18
-rw-r--r--server/migrations/2019-02-27-170402_create_community_user/down.sql2
-rw-r--r--server/migrations/2019-02-27-170402_create_community_user/up.sql10
-rw-r--r--server/migrations/2019-03-03-163336_create_post/down.sql3
-rw-r--r--server/migrations/2019-03-03-163336_create_post/up.sql22
-rw-r--r--server/src/actions/community.rs197
-rw-r--r--server/src/actions/mod.rs4
-rw-r--r--server/src/actions/post.rs95
-rw-r--r--server/src/actions/src/schema.rs80
-rw-r--r--server/src/actions/user.rs67
-rw-r--r--server/src/activitypub.rs7
-rw-r--r--server/src/lib.rs41
-rw-r--r--server/src/models.rs30
-rw-r--r--server/src/schema.rs60
16 files changed, 558 insertions, 92 deletions
diff --git a/server/migrations/2019-02-26-002946_create_user/up.sql b/server/migrations/2019-02-26-002946_create_user/up.sql
index 4f9984b7..a4ba1e88 100644
--- a/server/migrations/2019-02-26-002946_create_user/up.sql
+++ b/server/migrations/2019-02-26-002946_create_user/up.sql
@@ -1,8 +1,10 @@
create table user_ (
id serial primary key,
name varchar(20) not null,
- password_encrypted varchar(200) not null,
- email varchar(200),
+ preferred_username varchar(20),
+ password_encrypted text not null,
+ email text,
icon bytea,
- startTime timestamp not null default now()
-)
+ start_time timestamp not null default now()
+);
+
diff --git a/server/migrations/2019-02-27-170003_create_community/down.sql b/server/migrations/2019-02-27-170003_create_community/down.sql
index 5e751d43..5e6065f8 100644
--- a/server/migrations/2019-02-27-170003_create_community/down.sql
+++ b/server/migrations/2019-02-27-170003_create_community/down.sql
@@ -1 +1,3 @@
-drop table community
+drop table community_user;
+drop table community_follower;
+drop table community;
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 c5eafc7b..692a5f06 100644
--- a/server/migrations/2019-02-27-170003_create_community/up.sql
+++ b/server/migrations/2019-02-27-170003_create_community/up.sql
@@ -1,5 +1,19 @@
create table community (
id serial primary key,
name varchar(20) not null,
- starttime timestamp not null default now()
-)
+ start_time timestamp not null default now()
+);
+
+create table community_user (
+ id serial primary key,
+ community_id int references community on update cascade on delete cascade not null,
+ fedi_user_id text not null,
+ start_time timestamp not null default now()
+);
+
+create table community_follower (
+ id serial primary key,
+ community_id int references community on update cascade on delete cascade not null,
+ fedi_user_id text not null,
+ start_time timestamp not null default now()
+);
diff --git a/server/migrations/2019-02-27-170402_create_community_user/down.sql b/server/migrations/2019-02-27-170402_create_community_user/down.sql
deleted file mode 100644
index a1571c72..00000000
--- a/server/migrations/2019-02-27-170402_create_community_user/down.sql
+++ /dev/null
@@ -1,2 +0,0 @@
-drop table community_user;
--- drop type community_user_type;
diff --git a/server/migrations/2019-02-27-170402_create_community_user/up.sql b/server/migrations/2019-02-27-170402_create_community_user/up.sql
deleted file mode 100644
index f60eea46..00000000
--- a/server/migrations/2019-02-27-170402_create_community_user/up.sql
+++ /dev/null
@@ -1,10 +0,0 @@
--- No support for types yet, so just do 0,1,2
--- create type community_user_type as enum ('creator', 'moderator', 'user');
-
-create table community_user (
- id serial primary key,
- fedi_user_id varchar(100) not null,
- community_id int references community on update cascade on delete cascade,
- community_user_type smallint not null default 2,
- starttime timestamp not null default now()
-)
diff --git a/server/migrations/2019-03-03-163336_create_post/down.sql b/server/migrations/2019-03-03-163336_create_post/down.sql
new file mode 100644
index 00000000..a5783965
--- /dev/null
+++ b/server/migrations/2019-03-03-163336_create_post/down.sql
@@ -0,0 +1,3 @@
+drop table post_like;
+drop table post_dislike;
+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
new file mode 100644
index 00000000..4a811fa2
--- /dev/null
+++ b/server/migrations/2019-03-03-163336_create_post/up.sql
@@ -0,0 +1,22 @@
+create table post (
+ id serial primary key,
+ name varchar(100) not null,
+ url text not null,
+ attributed_to text not null,
+ start_time timestamp not null default now()
+);
+
+create table post_like (
+ id serial primary key,
+ fedi_user_id text not null,
+ post_id int references post on update cascade on delete cascade,
+ start_time timestamp not null default now()
+);
+
+create table post_dislike (
+ id serial primary key,
+ fedi_user_id text not null,
+ post_id int references post on update cascade on delete cascade,
+ start_time timestamp not null default now()
+);
+
diff --git a/server/src/actions/community.rs b/server/src/actions/community.rs
new file mode 100644
index 00000000..6b0bea8d
--- /dev/null
+++ b/server/src/actions/community.rs
@@ -0,0 +1,197 @@
+extern crate diesel;
+use schema::{community, community_user, community_follower};
+use diesel::*;
+use diesel::result::Error;
+use {Crud, Followable, Joinable};
+
+#[derive(Queryable, Identifiable, PartialEq, Debug)]
+#[table_name="community"]
+pub struct Community {
+ pub id: i32,
+ pub name: String,
+ pub start_time: chrono::NaiveDateTime
+}
+
+#[derive(Insertable, AsChangeset, Clone, Copy)]
+#[table_name="community"]
+pub struct CommunityForm<'a> {
+ pub name: &'a str,
+}
+
+#[derive(Identifiable, Queryable, Associations, PartialEq, Debug)]
+#[belongs_to(Community)]
+#[table_name = "community_user"]
+pub struct CommunityUser {
+ pub id: i32,
+ pub community_id: i32,
+ pub fedi_user_id: String,
+ pub start_time: chrono::NaiveDateTime
+}
+
+#[derive(Insertable, AsChangeset, Clone, Copy)]
+#[table_name="community_user"]
+pub struct CommunityUserForm<'a> {
+ pub community_id: &'a i32,
+ pub fedi_user_id: &'a str,
+}
+
+#[derive(Identifiable, Queryable, Associations, PartialEq, Debug)]
+#[belongs_to(Community)]
+#[table_name = "community_follower"]
+pub struct CommunityFollower {
+ pub id: i32,
+ pub community_id: i32,
+ pub fedi_user_id: String,
+ pub start_time: chrono::NaiveDateTime
+}
+
+#[derive(Insertable, AsChangeset, Clone, Copy)]
+#[table_name="community_follower"]
+pub struct CommunityFollowerForm<'a> {
+ pub community_id: &'a i32,
+ pub fedi_user_id: &'a str,
+}
+
+
+impl<'a> Crud<CommunityForm<'a>> for Community {
+ fn read(conn: &PgConnection, community_id: i32) -> Community {
+ use schema::community::dsl::*;
+ community.find(community_id)
+ .first::<Community>(conn)
+ .expect("Error in query")
+ }
+
+ fn delete(conn: &PgConnection, community_id: i32) -> usize {
+ use schema::community::dsl::*;
+ diesel::delete(community.find(community_id))
+ .execute(conn)
+ .expect("Error deleting.")
+ }
+
+ fn create(conn: &PgConnection, new_community: CommunityForm) -> Result<Community, Error> {
+ use schema::community::dsl::*;
+ insert_into(community)
+ .values(new_community)
+ .get_result::<Community>(conn)
+ }
+
+ fn update(conn: &PgConnection, community_id: i32, new_community: CommunityForm) -> Community {
+ use schema::community::dsl::*;
+ diesel::update(community.find(community_id))
+ .set(new_community)
+ .get_result::<Community>(conn)
+ .expect(&format!("Unable to find {}", community_id))
+ }
+}
+
+impl<'a> Followable<CommunityFollowerForm<'a>> for CommunityFollower {
+ fn follow(conn: &PgConnection, community_follower_form: CommunityFollowerForm) -> Result<CommunityFollower, Error> {
+ use schema::community_follower::dsl::*;
+ insert_into(community_follower)
+ .values(community_follower_form)
+ .get_result::<CommunityFollower>(conn)
+ }
+ fn ignore(conn: &PgConnection, community_follower_form: CommunityFollowerForm) -> usize {
+ use schema::community_follower::dsl::*;
+ diesel::delete(community_follower
+ .filter(community_id.eq(community_follower_form.community_id))
+ .filter(fedi_user_id.eq(community_follower_form.fedi_user_id)))
+ .execute(conn)
+ .expect("Error deleting.")
+ }
+}
+
+impl<'a> Joinable<CommunityUserForm<'a>> for CommunityUser {
+ fn join(conn: &PgConnection, community_user_form: CommunityUserForm) -> Result<CommunityUser, Error> {
+ use schema::community_user::dsl::*;
+ insert_into(community_user)
+ .values(community_user_form)
+ .get_result::<CommunityUser>(conn)
+ }
+ fn leave(conn: &PgConnection, community_user_form: CommunityUserForm) -> usize {
+ use schema::community_user::dsl::*;
+ diesel::delete(community_user
+ .filter(community_id.eq(community_user_form.community_id))
+ .filter(fedi_user_id.eq(community_user_form.fedi_user_id)))
+ .execute(conn)
+ .expect("Error deleting.")
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use establish_connection;
+ use super::*;
+ use actions::user::*;
+ use Crud;
+ #[test]
+ fn test_crud() {
+ let conn = establish_connection();
+
+ let new_community = CommunityForm {
+ name: "TIL".into(),
+ };
+
+ let inserted_community = Community::create(&conn, new_community).unwrap();
+
+ let expected_community = Community {
+ id: inserted_community.id,
+ name: "TIL".into(),
+ start_time: inserted_community.start_time
+ };
+
+ let new_user = UserForm {
+ name: "thom".into(),
+ preferred_username: None,
+ password_encrypted: "nope".into(),
+ email: None
+ };
+
+ let inserted_user = User_::create(&conn, new_user).unwrap();
+
+ let community_follower_form = CommunityFollowerForm {
+ community_id: &inserted_community.id,
+ fedi_user_id: "test".into()
+ };
+
+ let inserted_community_follower = CommunityFollower::follow(&conn, community_follower_form).unwrap();
+
+ let expected_community_follower = CommunityFollower {
+ id: inserted_community_follower.id,
+ community_id: inserted_community.id,
+ fedi_user_id: "test".into(),
+ start_time: inserted_community_follower.start_time
+ };
+
+ let community_user_form = CommunityUserForm {
+ community_id: &inserted_community.id,
+ fedi_user_id: "test".into()
+ };
+
+ let inserted_community_user = CommunityUser::join(&conn, community_user_form).unwrap();
+
+ let expected_community_user = CommunityUser {
+ id: inserted_community_user.id,
+ community_id: inserted_community.id,
+ fedi_user_id: "test".into(),
+ start_time: inserted_community_user.start_time
+ };
+
+ let read_community = Community::read(&conn, inserted_community.id);
+ let updated_community = Community::update(&conn, inserted_community.id, new_community);
+ let ignored_community = CommunityFollower::ignore(&conn, community_follower_form);
+ let left_community = CommunityUser::leave(&conn, community_user_form);
+ let num_deleted = Community::delete(&conn, inserted_community.id);
+ User_::delete(&conn, inserted_user.id);
+
+ assert_eq!(expected_community, read_community);
+ assert_eq!(expected_community, inserted_community);
+ assert_eq!(expected_community, updated_community);
+ assert_eq!(expected_community_follower, inserted_community_follower);
+ assert_eq!(expected_community_user, inserted_community_user);
+ assert_eq!(1, ignored_community);
+ assert_eq!(1, left_community);
+ assert_eq!(1, num_deleted);
+
+ }
+}
diff --git a/server/src/actions/mod.rs b/server/src/actions/mod.rs
index bc675369..df10dbbc 100644
--- a/server/src/actions/mod.rs
+++ b/server/src/actions/mod.rs
@@ -1,3 +1,3 @@
-use diesel::*;
pub mod user;
-
+pub mod community;
+pub mod post;
diff --git a/server/src/actions/post.rs b/server/src/actions/post.rs
new file mode 100644
index 00000000..f939fc7c
--- /dev/null
+++ b/server/src/actions/post.rs
@@ -0,0 +1,95 @@
+extern crate diesel;
+use schema::user_;
+use diesel::*;
+use diesel::result::Error;
+use schema::user_::dsl::*;
+
+#[derive(Queryable, PartialEq, Debug)]
+pub struct User_ {
+ pub id: i32,
+ pub name: String,
+ pub preferred_username: Option<String>,
+ pub password_encrypted: String,
+ pub email: Option<String>,
+ pub icon: Option<Vec<u8>>,
+ pub start_time: chrono::NaiveDateTime
+}
+
+#[derive(Insertable, AsChangeset, Clone, Copy)]
+#[table_name="user_"]
+pub struct NewUser<'a> {
+ pub name: &'a str,
+ pub preferred_username: Option<&'a str>,
+ pub password_encrypted: &'a str,
+ pub email: Option<&'a str>,
+}
+
+pub fn read(conn: &PgConnection, user_id: i32) -> User_ {
+ user_.find(user_id)
+ .first::<User_>(conn)
+ .expect("Error in query")
+}
+
+pub fn delete(conn: &PgConnection, user_id: i32) -> usize {
+ diesel::delete(user_.find(user_id))
+ .execute(conn)
+ .expect("Error deleting.")
+}
+
+pub fn create(conn: &PgConnection, new_user: &NewUser) -> Result<User_, Error> {
+ let mut edited_user = new_user.clone();
+ // Add the rust crypt
+ edited_user.password_encrypted = "here";
+ // edited_user.password_encrypted;
+ insert_into(user_)
+ .values(edited_user)
+ .get_result::<User_>(conn)
+}
+
+pub fn update(conn: &PgConnection, user_id: i32, new_user: &NewUser) -> User_ {
+ let mut edited_user = new_user.clone();
+ edited_user.password_encrypted = "here";
+ diesel::update(user_.find(user_id))
+ .set(edited_user)
+ .get_result::<User_>(conn)
+ .expect(&format!("Unable to find user {}", user_id))
+}
+
+#[cfg(test)]
+mod tests {
+ use establish_connection;
+ use super::*;
+ #[test]
+ fn test_crud() {
+ let conn = establish_connection();
+
+ let new_user = NewUser {
+ name: "thom".into(),
+ preferred_username: None,
+ password_encrypted: "nope".into(),
+ email: None
+ };
+
+ let inserted_user = create(&conn, &new_user).unwrap();
+
+ let expected_user = User_ {
+ id: inserted_user.id,
+ name: "thom".into(),
+ preferred_username: None,
+ password_encrypted: "here".into(),
+ email: None,
+ icon: None,
+ start_time: inserted_user.start_time
+ };
+
+ let read_user = read(&conn, inserted_user.id);
+ let updated_user = update(&conn, inserted_user.id, &new_user);
+ let num_deleted = delete(&conn, inserted_user.id);
+
+ assert_eq!(expected_user, read_user);
+ assert_eq!(expected_user, inserted_user);
+ assert_eq!(expected_user, updated_user);
+ assert_eq!(1, num_deleted);
+
+ }
+}
diff --git a/server/src/actions/src/schema.rs b/server/src/actions/src/schema.rs
new file mode 100644
index 00000000..580b82e7
--- /dev/null
+++ b/server/src/actions/src/schema.rs
@@ -0,0 +1,80 @@
+table! {
+ community (id) {
+ id -> Int4,
+ name -> Varchar,
+ start_time -> Timestamp,
+ }
+}
+
+table! {
+ community_follower (id) {
+ id -> Int4,
+ fedi_user_id -> Text,
+ community_id -> Nullable<Int4>,
+ start_time -> Timestamp,
+ }
+}
+
+table! {
+ community_user (id) {
+ id -> Int4,
+ fedi_user_id -> Text,
+ community_id -> Nullable<Int4>,
+ start_time -> Timestamp,
+ }
+}
+
+table! {
+ post (id) {
+ id -> Int4,
+ name -> Varchar,
+ url -> Text,
+ attributed_to -> Text,
+ start_time -> Timestamp,
+ }
+}
+
+table! {
+ post_dislike (id) {
+ id -> Int4,
+ fedi_user_id -> Text,
+ post_id -> Nullable<Int4>,
+ start_time -> Timestamp,
+ }
+}
+
+table! {
+ post_like (id) {
+ id -> Int4,
+ fedi_user_id -> Text,
+ post_id -> Nullable<Int4>,
+ start_time -> Timestamp,
+ }
+}
+
+table! {
+ user_ (id) {
+ id -> Int4,
+ name -> Varchar,
+ preferred_username -> Nullable<Varchar>,
+ password_encrypted -> Text,
+ email -> Nullable<Text>,
+ icon -> Nullable<Bytea>,
+ start_time -> Timestamp,
+ }
+}
+
+joinable!(community_follower -> community (community_id));
+joinable!(community_user -> community (community_id));
+joinable!(post_dislike -> post (post_id));
+joinable!(post_like -> post (post_id));
+
+allow_tables_to_appear_in_same_query!(
+ community,
+ community_follower,
+ community_user,
+ post,
+ post_dislike,
+ post_like,
+ user_,
+);
diff --git a/server/src/actions/user.rs b/server/src/actions/user.rs
index 2a017fd2..36222f83 100644
--- a/server/src/actions/user.rs
+++ b/server/src/actions/user.rs
@@ -1,83 +1,108 @@
extern crate diesel;
+extern crate activitypub;
use schema::user_;
use diesel::*;
use diesel::result::Error;
use schema::user_::dsl::*;
+// use self::activitypub::{context, actor::Person};
use Crud;
-#[derive(Queryable, PartialEq, Debug)]
+#[derive(Queryable, Identifiable, PartialEq, Debug)]
+#[table_name="user_"]
pub struct User_ {
pub id: i32,
pub name: String,
+ pub preferred_username: Option<String>,
pub password_encrypted: String,
pub email: Option<String>,
pub icon: Option<Vec<u8>>,
pub start_time: chrono::NaiveDateTime
}
-#[derive(Insertable)]
+#[derive(Insertable, AsChangeset, Clone, Copy)]
#[table_name="user_"]
-pub struct NewUser<'a> {
+pub struct UserForm<'a> {
pub name: &'a str,
+ pub preferred_username: Option<&'a str>,
pub password_encrypted: &'a str,
pub email: Option<&'a str>,
}
-impl Crud for User_ {
+impl<'a> Crud<UserForm<'a>> for User_ {
fn read(conn: &PgConnection, user_id: i32) -> User_ {
user_.find(user_id)
.first::<User_>(conn)
.expect("Error in query")
}
-
- fn delete(conn: &PgConnection, user_id: i32) -> usize {
+ fn delete(conn: &PgConnection, user_id: i32) -> usize {
diesel::delete(user_.find(user_id))
.execute(conn)
.expect("Error deleting.")
}
-
-// fn create<NewUser>(conn: &PgConnection, mut new_user: NewUser) -> Result<User_, Error> {
+ fn create(conn: &PgConnection, form: UserForm) -> Result<User_, Error> {
+ let mut edited_user = form.clone();
+ // Add the rust crypt
+ edited_user.password_encrypted = "here";
+ // edited_user.password_encrypted;
+ insert_into(user_)
+ .values(edited_user)
+ .get_result::<User_>(conn)
+ }
+ fn update(conn: &PgConnection, user_id: i32, form: UserForm) -> User_ {
+ let mut edited_user = form.clone();
+ edited_user.password_encrypted = "here";
+ diesel::update(user_.find(user_id))
+ .set(edited_user)
+ .get_result::<User_>(conn)
+ .expect(&format!("Unable to find user {}", user_id))
+ }
}
-pub fn create(conn: &PgConnection, mut new_user: NewUser) -> Result<User_, Error> {
- new_user.password_encrypted = "here";
- // new_user.password_encrypted;
- insert_into(user_)
- .values(new_user)
- .get_result(conn)
-}
+
+// TODO
+// pub fn person(user: &User_) -> Person {
+// let mut person = Person::default();
+// person.object_props.set_context_object(context());
+// person.ap_actor_props.set_preferred_username_string("set".into());
+
+// person
+// }
#[cfg(test)]
mod tests {
use establish_connection;
- use super::*;
+ use super::{User_, UserForm};
+ use Crud;
#[test]
fn test_crud() {
let conn = establish_connection();
- let new_user = NewUser {
+ let new_user = UserForm {
name: "thom".into(),
+ preferred_username: None,
password_encrypted: "nope".into(),
email: None
};
- let inserted_user = create(&conn, new_user).unwrap();
+ let inserted_user = User_::create(&conn, new_user).unwrap();
let expected_user = User_ {
id: inserted_user.id,
name: "thom".into(),
+ preferred_username: None,
password_encrypted: "here".into(),
email: None,
icon: None,
start_time: inserted_user.start_time
};
-
+
let read_user = User_::read(&conn, inserted_user.id);
+ let updated_user = User_::update(&conn, inserted_user.id, new_user);
let num_deleted = User_::delete(&conn, inserted_user.id);
-
+
assert_eq!(expected_user, read_user);
assert_eq!(expected_user, inserted_user);
+ assert_eq!(expected_user, updated_user);
assert_eq!(1, num_deleted);
-
}
}
diff --git a/server/src/activitypub.rs b/server/src/activitypub.rs
deleted file mode 100644
index 3e6c46e4..00000000
--- a/server/src/activitypub.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-extern crate activitypub;
-extern crate failure;
-extern crate serde_json;
-
-// fn user -> Result<(), Error> {
-
-// }
diff --git a/server/src/lib.rs b/server/src/lib.rs
index 77c8ee5e..e8a67c3d 100644
--- a/server/src/lib.rs
+++ b/server/src/lib.rs
@@ -2,16 +2,35 @@
extern crate diesel;
extern crate dotenv;
-use diesel::prelude::*;
+use diesel::*;
use diesel::pg::PgConnection;
+use diesel::result::Error;
use dotenv::dotenv;
use std::env;
pub mod schema;
pub mod models;
-pub mod activitypub;
pub mod actions;
+// pub trait Likeable;
+pub trait Crud<T> {
+ fn create(conn: &PgConnection, form: T) -> Result<Self, Error> where Self: Sized;
+ fn read(conn: &PgConnection, id: i32) -> Self;
+ fn update(conn: &PgConnection, id: i32, form: T) -> Self;
+ fn delete(conn: &PgConnection, id: i32) -> usize;
+}
+
+pub trait Followable<T> {
+ fn follow(conn: &PgConnection, form: T) -> Result<Self, Error> where Self: Sized;
+ fn ignore(conn: &PgConnection, form: T) -> usize;
+}
+
+pub trait Joinable<T> {
+ fn join(conn: &PgConnection, form: T) -> Result<Self, Error> where Self: Sized;
+ fn leave(conn: &PgConnection, form: T) -> usize;
+}
+
+
pub fn establish_connection() -> PgConnection {
dotenv().ok();
@@ -21,21 +40,3 @@ pub fn establish_connection() -> PgConnection {
.expect(&format!("Error connecting to {}", database_url))
}
-trait Crud {
- fn read(conn: &PgConnection, id: i32) -> Self;
- fn delete(conn: &PgConnection, id: i32) -> usize;
- // fn create<T: Insertable>(conn: &PgConnection, item: T) -> Result<Self, Error> where Self: Sized;
-}
-
-#[cfg(test)]
-mod tests {
- #[test]
- fn it_works() {
- assert_eq!(2 + 2, 4);
- }
-
- #[test]
- fn db_fetch() {
-
- }
-}
diff --git a/server/src/models.rs b/server/src/models.rs
index cb5eaef7..c895f3ea 100644
--- a/server/src/models.rs
+++ b/server/src/models.rs
@@ -1,19 +1,19 @@
-enum CommunityUserType {
- CREATOR = 0,
- MODERATOR = 1,
- USER = 2
-}
+// enum CommunityUserType {
+// CREATOR = 0,
+// MODERATOR = 1,
+// USER = 2
+// }
-impl CommunityUserType {
- fn from_u32(value: u32) -> CommunityUserType {
- match value {
- 0 => CommunityUserType::CREATOR,
- 1 => CommunityUserType::MODERATOR,
- 2 => CommunityUserType::USER,
- _ => panic!("Unknown value: {}", value),
- }
- }
-}
+// impl CommunityUserType {
+// fn from_u32(value: u32) -> CommunityUserType {
+// match value {
+// 0 => CommunityUserType::CREATOR,
+// 1 => CommunityUserType::MODERATOR,
+// 2 => CommunityUserType::USER,
+// _ => panic!("Unknown value: {}", value),
+// }
+// }
+// }
diff --git a/server/src/schema.rs b/server/src/schema.rs
index a9f37009..cf90c047 100644
--- a/server/src/schema.rs
+++ b/server/src/schema.rs
@@ -2,17 +2,53 @@ table! {
community (id) {
id -> Int4,
name -> Varchar,
- starttime -> Timestamp,
+ start_time -> Timestamp,
+ }
+}
+
+table! {
+ community_follower (id) {
+ id -> Int4,
+ community_id -> Int4,
+ fedi_user_id -> Text,
+ start_time -> Timestamp,
}
}
table! {
community_user (id) {
id -> Int4,
- fedi_user_id -> Varchar,
- community_id -> Nullable<Int4>,
- community_user_type -> Int2,
- starttime -> Timestamp,
+ community_id -> Int4,
+ fedi_user_id -> Text,
+ start_time -> Timestamp,
+ }
+}
+
+table! {
+ post (id) {
+ id -> Int4,
+ name -> Varchar,
+ url -> Text,
+ attributed_to -> Text,
+ start_time -> Timestamp,
+ }
+}
+
+table! {
+ post_dislike (id) {
+ id -> Int4,
+ fedi_user_id -> Text,
+ post_id -> Nullable<Int4>,
+ start_time -> Timestamp,
+ }
+}
+
+table! {
+ post_like (id) {
+ id -> Int4,
+ fedi_user_id -> Text,
+ post_id -> Nullable<Int4>,
+ start_time -> Timestamp,
}
}
@@ -20,17 +56,25 @@ table! {
user_ (id) {
id -> Int4,
name -> Varchar,
- password_encrypted -> Varchar,
- email -> Nullable<Varchar>,
+ preferred_username -> Nullable<Varchar>,
+ password_encrypted -> Text,
+ email -> Nullable<Text>,
icon -> Nullable<Bytea>,
- starttime -> Timestamp,
+ start_time -> Timestamp,
}
}
+joinable!(community_follower -> community (community_id));
joinable!(community_user -> community (community_id));
+joinable!(post_dislike -> post (post_id));
+joinable!(post_like -> post (post_id));
allow_tables_to_appear_in_same_query!(
community,
+ community_follower,
community_user,
+ post,
+ post_dislike,
+ post_like,
user_,
);