blatherskite

a toy discord-like chat app backend written for a swe class
Log | Files | Refs | README

models.rs (1391B)


      1 use diesel::prelude::*;
      2 use crate::schema::*;
      3 use poem_openapi::{
      4     payload::{Json, PlainText},
      5     ApiResponse, Object,
      6 };
      7 use serde::{Deserialize, Serialize};
      8 
      9 
     10 #[derive(Object, Serialize, Deserialize, Queryable, Identifiable, Insertable, AsChangeset, Debug)]
     11 pub struct Channel {
     12     pub id: i64,
     13     pub src_group: i64,
     14 	pub name: String,
     15     pub members: Vec<i64>,
     16     pub private: bool,
     17 }
     18 
     19 #[derive(Object, Serialize, Deserialize, Queryable, Identifiable, Insertable, AsChangeset, Debug)]
     20 pub struct Group {
     21     pub id: i64,
     22 	pub name: String,
     23     pub members: Vec<i64>,
     24     pub is_dm: bool,
     25 	pub channels: Vec<i64>,
     26 	pub admin: Vec<i64>,
     27 	pub owner: i64
     28 }
     29 
     30 #[derive(Object, Serialize, Deserialize, Queryable, Identifiable, Insertable, AsChangeset, Debug)]
     31 pub struct User {
     32     pub id: i64,
     33 	pub name: String,
     34 	pub email: String,
     35 	pub hash: String,
     36 }
     37 
     38 
     39 #[derive(Serialize, Deserialize, Queryable, Identifiable, Insertable, AsChangeset, Debug)]
     40 pub struct UserGroup {
     41     pub id: i64,
     42 	pub groups: Vec<i64>
     43 }
     44 
     45 
     46 #[derive(Serialize, Deserialize, Queryable, Identifiable, Insertable, AsChangeset, Debug)]
     47 pub struct UserDm {
     48     pub id: i64,
     49 	pub dms: Vec<i64>
     50 }
     51 
     52 
     53 #[derive(Object, Deserialize, Queryable, Identifiable, Insertable, AsChangeset, Debug)]
     54 pub struct Message {
     55 	pub channel: i64,
     56     pub id: i64,
     57 	pub author: i64,
     58 	pub content: Option<String>,
     59 	pub thread: Option<i64>
     60 }
     61