added user support
This commit is contained in:
parent
61dbde2ad5
commit
0f0dcc6f3a
6 changed files with 162 additions and 16 deletions
|
@ -51,22 +51,54 @@ impl GatewayProc {
|
|||
|
||||
// TODO: user
|
||||
UserList(c::UserList {}) => {
|
||||
todo!()
|
||||
let (cmd, rec) = StorageCmd::new_user_list();
|
||||
self.storage.send(cmd).unwrap();
|
||||
let result = rec.await.unwrap().iter().map(Id::to_u64).collect();
|
||||
let request = ServerRequest::new_user_list(result);
|
||||
let command = SessionCmd::new_send(address, request);
|
||||
self.sessions.send(command).unwrap();
|
||||
}
|
||||
|
||||
UserCreate(c::UserCreate { name, pass }) => {
|
||||
todo!()
|
||||
let (cmd, rec) = StorageCmd::new_user_create(name.clone(), pass);
|
||||
self.storage.send(cmd).unwrap();
|
||||
let id = rec.await.unwrap();
|
||||
let request = ServerRequest::new_user_create(id.into(), name);
|
||||
let command = SessionCmd::new_broadcast(request);
|
||||
self.sessions.send(command).unwrap();
|
||||
}
|
||||
|
||||
UserDelete(c::UserDelete { id }) => {
|
||||
todo!()
|
||||
let command = StorageCmd::new_user_delete(id.into());
|
||||
self.storage.send(command).unwrap();
|
||||
let request = ServerRequest::new_user_delete(id.into());
|
||||
let command = SessionCmd::new_broadcast(request);
|
||||
self.sessions.send(command).unwrap();
|
||||
}
|
||||
|
||||
UserGetName(c::UserGetName { id }) => {
|
||||
todo!()
|
||||
let (cmd, rec) = StorageCmd::new_user_get_name(id.into());
|
||||
self.storage.send(cmd).unwrap();
|
||||
let name = rec.await.unwrap();
|
||||
let request = ServerRequest::new_user_get_name(id.into(), name);
|
||||
let command = SessionCmd::new_send(address, request);
|
||||
self.sessions.send(command).unwrap();
|
||||
}
|
||||
|
||||
UserSetName(c::UserSetName { id, name }) => {
|
||||
todo!()
|
||||
let command = StorageCmd::new_user_set_name(id.into(), name.clone());
|
||||
self.storage.send(command).unwrap();
|
||||
let request = ServerRequest::new_user_set_name(id.into(), name);
|
||||
let command = SessionCmd::new_broadcast(request);
|
||||
self.sessions.send(command).unwrap();
|
||||
}
|
||||
|
||||
UserSetPass(c::UserSetPass { id, pass }) => {
|
||||
todo!()
|
||||
let command = StorageCmd::new_user_set_pass(id.into(), pass);
|
||||
self.storage.send(command).unwrap();
|
||||
let request = ServerRequest::new_user_set_pass(id.into());
|
||||
let command = SessionCmd::new_send(address, request);
|
||||
self.sessions.send(command).unwrap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -74,6 +74,42 @@ impl StorageCmd {
|
|||
pub fn new_message_set_content(channel_id: Id, id: Id, content: String) -> Self {
|
||||
Self::MessageSetContent(channel_id, id, content)
|
||||
}
|
||||
|
||||
pub fn new_user_list() -> (Self, Receiver<Vec<Id>>) {
|
||||
let (sender, receiver) = oneshot::channel();
|
||||
let cmd = Self::UserList(sender);
|
||||
(cmd, receiver)
|
||||
}
|
||||
|
||||
pub fn new_user_create(name: String, pass: String) -> (Self, Receiver<Id>) {
|
||||
let (sender, receiver) = oneshot::channel();
|
||||
let cmd = Self::UserCreate(name, pass, sender);
|
||||
(cmd, receiver)
|
||||
}
|
||||
|
||||
pub fn new_user_delete(id: Id) -> Self {
|
||||
Self::UserDelete(id)
|
||||
}
|
||||
|
||||
pub fn new_user_get_name(id: Id) -> (Self, Receiver<Option<String>>) {
|
||||
let (sender, receiver) = oneshot::channel();
|
||||
let cmd = Self::UserGetName(id, sender);
|
||||
(cmd, receiver)
|
||||
}
|
||||
|
||||
pub fn new_user_set_name(id: Id, name: String) -> Self {
|
||||
Self::UserSetName(id, name)
|
||||
}
|
||||
|
||||
pub fn new_user_get_pass(id: Id) -> (Self, Receiver<Option<String>>) {
|
||||
let (sender, receiver) = oneshot::channel();
|
||||
let cmd = Self::UserGetPass(id, sender);
|
||||
(cmd, receiver)
|
||||
}
|
||||
|
||||
pub fn new_user_set_pass(id: Id, pass: String) -> Self {
|
||||
Self::UserSetPass(id, pass)
|
||||
}
|
||||
}
|
||||
|
||||
pub struct StorageProc {
|
||||
|
|
|
@ -43,6 +43,12 @@ impl From<u64> for Id {
|
|||
}
|
||||
}
|
||||
|
||||
impl From<Id> for u64 {
|
||||
fn from(input: Id) -> Self {
|
||||
input.to_u64()
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_string_convertion() {
|
||||
let id = Id::from_now();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue