school_client/
school_client.rs1use easy_db::EasyClient;
2use serde_json::json;
3use std::collections::HashMap;
4
5#[tokio::main]
6async fn main() -> anyhow::Result<()> {
7 let client = EasyClient::new("localhost", 9000);
9 println!("š Connected to the School System.\n");
10
11 println!("š --- STEP 1: Registering Students and Grades ---");
15
16 client
18 .post(
19 "students",
20 json!({
21 "name": "Ali Yilmaz", "school_number": 101, "class_grade": "10-A", "gpa": 85.5
22 }),
23 )
24 .await?;
25
26 client
27 .post(
28 "students",
29 json!({
30 "name": "Zeynep Kaya", "school_number": 102, "class_grade": "10-A", "gpa": 92.0
31 }),
32 )
33 .await?;
34
35 client
37 .post(
38 "students",
39 json!({
40 "name": "Mehmet Demir", "school_number": 201, "class_grade": "11-B", "gpa": 76.5
41 }),
42 )
43 .await?;
44
45 client
47 .post(
48 "grades",
49 json!({"school_number": 101, "lesson": "Mathematics", "score": 90}),
50 )
51 .await?;
52 client
53 .post(
54 "grades",
55 json!({"school_number": 102, "lesson": "Mathematics", "score": 100}),
56 )
57 .await?;
58
59 println!("ā
Registration complete.\n");
60
61 println!("š --- STEP 2: Mehmet Demir Promoted (Update) ---");
65
66 let mut search_params = HashMap::new();
68 search_params.insert("school_number", "201");
69
70 let search_res = client.get("students", Some(search_params)).await?;
71
72 if let Some(list) = search_res.as_array() {
73 if !list.is_empty() {
74 let mehmet_id = list[0]["id"].as_i64().unwrap();
75
76 client
78 .put(
79 "students",
80 mehmet_id,
81 json!({
82 "class_grade": "12-A", "gpa": 80.0 }),
85 )
86 .await?;
87
88 println!("ā
Mehmet (ID: {}) information updated.", mehmet_id);
89 }
90 }
91
92 println!("\nš --- STEP 3: Class 10-A Report Card (Sorted) ---");
96
97 let mut params = HashMap::new();
98 params.insert("class_grade", "10-A"); params.insert("_sort", "gpa"); params.insert("_order", "desc"); let results = client.get("students", Some(params)).await?;
103
104 if let Some(list) = results.as_array() {
105 for student in list {
106 println!(
107 " - {} (No: {}) -> GPA: {}",
108 student["name"], student["school_number"], student["gpa"]
109 );
110 }
111 } else {
112 println!("No data found.");
113 }
114
115 println!("\nā --- STEP 4: Cleanup Graduates/Leavers (Delete) ---");
119
120 let delete_res = client.delete("students", 1).await?;
122 println!("Deletion Result: {}", delete_res);
123
124 Ok(())
125}