core/src/api/handlers.rs

59 lines
1.8 KiB
Rust

use super::{request::*, response::{AppStatus, ResponseType}};
use super::response::User;
use super::response::UserList;
use crate::chat::types::PackedMessage;
use crate::chat::types::SP;
use crate::db::{self, messages, types, users};
use async_std::io::Result;
use fcpv2::types::{traits::FcpParser, SSK};
use rusqlite::Connection;
use serde_json::json;
use uuid::Uuid;
pub fn start_app(request: StartAppReq, server_sender: &SP) -> Result<()> {
Ok(())
//sending *JSON*, what everything is OK
}
pub fn stop_app(request: StopAppReq, conn: &Connection, server_sender: &SP) -> Result<()> {
std::process::exit(0)
}
pub fn load_users(request: LoadUsersReq, conn: &Connection, server_sender: &SP) -> Result<()> {
let jsoned_users: Vec<_> = users::load_all_users(conn)
.unwrap()
.into_iter()
.map(|x| x.to_jsonable())
.collect();
let users: String = serde_json::to_string(&UserList {
users: jsoned_users,
})
.unwrap();
let _ = server_sender.send(PackedMessage::ToClient(users)).unwrap();
Ok(())
}
pub fn send_message(request: SendMessageReq, conn: &Connection, server_sender: &SP) -> Result<()> {
unimplemented!()
//sending FCP request
}
pub fn load_messages(
request: LoadMessagesReq,
conn: &Connection,
server_sender: &SP,
) -> Result<()> {
unimplemented!()
//sending *JSON*
}
pub fn add_user(request: AddUserReq, conn: &Connection, server_sender: &SP) -> Result<()> {
let user = db::types::User {
id: db::types::Id(Uuid::new_v4()),
name: request.name,
sign_key: request.sign_key,
insert_key: SSK::parse(&request.insert_key[..]).unwrap(),
messages_count: 0,
};
db::users::add_user(user, &conn).unwrap();
server_sender.send(PackedMessage::ToClient(json!(AppStatus{res_type: ResponseType::UserAdded}).to_string())).unwrap();
Ok(())
}