summaryrefslogtreecommitdiff
path: root/employees/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'employees/src/main.rs')
-rw-r--r--employees/src/main.rs181
1 files changed, 0 insertions, 181 deletions
diff --git a/employees/src/main.rs b/employees/src/main.rs
deleted file mode 100644
index 0900bed..0000000
--- a/employees/src/main.rs
+++ /dev/null
@@ -1,181 +0,0 @@
-use std::collections::HashMap;
-use std::process;
-use std::io::{self, Write};
-
-struct Employees {
- departments: HashMap<String, Vec<String>>,
-}
-
-impl Employees {
-
- fn add_employee(&self, name: &Option<&String>, department: &Option<&String>) -> Result<(), &'static str> {
- // parse name
- let name = match name {
- Some(s) => s,
- None => {
- return Err("Invalid or empty name.");
- },
- };
-
- // parse department
- let dept = match department {
- Some(s) => s,
- None => {
- return Err("Invalid or empty department.");
- },
- };
-
- // add name to department in departments
- // and create department if it doesn't exist
- employees.entry(dept.to_string())
- .or_insert(Vec::new())
- .push(name.to_string());
-
- Ok(())
- }
-}
-
-//fn list_employees() {
-// let dept = match actions.get(1) {
-// Some(s) => s,
-// None => {
-// ""
-// }
-// };
-//
-// if dept == "" {
-// // print employees in all depts
-// for each in employees.keys() {
-// println!("{}", each);
-// match employees.get(&each.to_string()) {
-// Some(v) => {
-// for every in v {
-// println!(" {}", every);
-// }
-// },
-// None => continue,
-// };
-// }
-// }
-// else {
-// // print employees in single dept
-// match employees.get(&dept.to_string()) {
-// Some(v) => {
-// for every in v {
-// println!("{}", every);
-// };
-// },
-// None => {
-// eprintln!("List: Invalid department.");
-// continue;
-// }
-// };
-// }
-//}
-//
-//fn list_employee(name) {
-//}
-
-
-//fn remove_employee(name) {
-// let name = match actions.get(1) {
-// Some(s) => s,
-// None => {
-// eprintln!("Remove: Invalid or empty name.");
-// continue;
-// },
-// };
-//
-// let dept = match actions.get(2) {
-// Some(s) => s,
-// None => {
-// eprintln!("Remove: Empty department.");
-// continue;
-// },
-// };
-//
-// match employees.get_mut(&dept.to_string()) {
-// Some(v) => {
-// v.retain(|employee| employee != name);
-// },
-// None => {
-// eprintln!("Remove: Invalid department.");
-// continue;
-// }
-// };
-
-//}
-
-fn get_actions() -> Vec<String> {
- print!("> ");
- io::stdout().flush().unwrap();
-
- // grab input
- let mut input = String::new();
- io::stdin().read_line(&mut input)
- .expect("Failed to read input.");
-
- // finish on eof
- if input == "" {
- println!("Bye.");
- process::exit(0);
- }
-
- // collect all CLI arguments into vector of trimmed Strings
- input.trim()
- .split_whitespace()
- .map(|action| action.to_string())
- .collect()
-}
-
-fn main() {
- println!("Welcome to employee manager.");
- println!("Enter 'help' for help or Ctrl+D to exit.");
- let mut departments: HashMap<String, Vec<String>> = HashMap::new();
-
- // operating loop
- loop {
- let actions = get_actions();
-
- // act on actions
- let command = match actions.get(0) {
- Some(c) => c,
- None => {
- eprintln!("Empty command. Enter Ctrl+D to exit.");
- continue;
- }
- };
-
- match command.as_str() {
- // add employee to department
- "add" => {
- match add_employee(&actions.get(1), &actions.get(2), &mut departments) {
- Ok(()) => {dbg!(&departments);},
- Err(e) => eprintln!("{}", e),
- };
- },
-
- // list employees from one or all departments
- "list" => {
- },
-
- // remove employee from department
- "remove" => {
- },
-
- // print help
- "help" => {
- println!("Valid commands include:");
- println!("\tlist [department]");
- println!("\tadd <name> <department>");
- println!("\tremove <name> <department>");
- println!("Enter 'help' for help or Ctrl+D to exit.");
- },
-
- // all else fails
- _ => eprintln!("Invalid command."),
- }
-
- }
-
-}