complete threads till 06

This commit is contained in:
2025-04-15 16:25:01 +05:30
parent 9bc063a05b
commit 4fbee2d894
9 changed files with 67 additions and 19 deletions

View File

@@ -1,4 +1,7 @@
use data::{Ticket, TicketDraft};
use std::sync::mpsc::{Receiver, Sender};
use store::TicketId;
use crate::store::TicketStore;
pub mod data;
@@ -6,8 +9,14 @@ pub mod store;
// Refer to the tests to understand the expected schema.
pub enum Command {
Insert { todo!() },
Get { todo!() }
Insert {
draft: TicketDraft,
response_sender: Sender<TicketId>,
},
Get {
id: TicketId,
response_sender: Sender<Option<Ticket>>,
},
}
pub fn launch() -> Sender<Command> {
@@ -21,19 +30,25 @@ pub fn server(receiver: Receiver<Command>) {
let mut store = TicketStore::new();
loop {
match receiver.recv() {
Ok(Command::Insert {}) => {
todo!()
Ok(Command::Insert {
draft,
response_sender,
}) => {
let id = store.add_ticket(draft);
response_sender.send(id);
}
Ok(Command::Get {
todo!()
id,
response_sender,
}) => {
todo!()
let tick = store.get(id);
response_sender.send(tick.cloned());
}
Err(_) => {
// There are no more senders, so we can safely break
// and shut down the server.
break
},
break;
}
}
}
}