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