From ead266377f37ad6f04778025b35d51b1a95df3ed Mon Sep 17 00:00:00 2001 From: ultrageese Date: Thu, 14 May 2026 19:54:31 +1000 Subject: [PATCH] =?UTF-8?q?=D0=BD=D1=83=20=D1=87=D1=91=D1=82=D0=BE=20?= =?UTF-8?q?=D0=B8=D0=B7=20=D0=B1=D0=B0=D0=B7=D1=8B=20=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=BD=D1=8B=D1=85=20=D1=83=D0=B6=D0=B5=20=D1=82=D1=8F=D0=BD?= =?UTF-8?q?=D0=B5=D1=82=D1=81=D1=8F.=20=D0=BD=D0=BE=20=D0=BF=D0=BE=D0=BA?= =?UTF-8?q?=D0=B0=20=D1=82=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE=20=D0=BF=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D0=BE=D1=8F=D0=BD=D0=BD=D0=BE.=20=D0=BD=D0=B0?= =?UTF-8?q?=D0=B4=D0=BE=20=D0=BC=D0=B5=D0=BD=D1=8F=D1=82=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/Cargo.lock | 21 ++++++++++++++++++--- code/Cargo.toml | 1 + code/src/app.rs | 19 ++++++++++++++++++- code/src/database.rs | 14 +++++++------- code/src/main.rs | 4 +++- code/src/models.rs | 6 +++--- 6 files changed, 50 insertions(+), 15 deletions(-) diff --git a/code/Cargo.lock b/code/Cargo.lock index 078775b..1217d0f 100644 --- a/code/Cargo.lock +++ b/code/Cargo.lock @@ -750,6 +750,7 @@ dependencies = [ "egui_extras", "rust_decimal", "sqlx", + "tokio", ] [[package]] @@ -3749,7 +3750,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -4174,18 +4175,32 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.52.1" +version = "1.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67dee974fe86fd92cc45b7a95fdd2f99a36a6d7b0d431a231178d3d670bbcc6" +checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" dependencies = [ "bytes", "libc", "mio", + "parking_lot", "pin-project-lite", + "signal-hook-registry", "socket2", + "tokio-macros", "windows-sys 0.61.2", ] +[[package]] +name = "tokio-macros" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "tokio-stream" version = "0.1.18" diff --git a/code/Cargo.toml b/code/Cargo.toml index 07d1ca2..9cacc29 100644 --- a/code/Cargo.toml +++ b/code/Cargo.toml @@ -13,6 +13,7 @@ egui_dock = "0.19.1" egui_extras = "0.34.2" rust_decimal = {version = "1.42.0", features = ["macros"]} sqlx = {version="0.8.6", features = ["runtime-tokio", "mysql","bigdecimal"]} +tokio={version = "1.52.3", features = ["full"]} [target.'cfg(target_os="windows")'.dependencies] eframe = {version ="0.34.2",default-features=false, features=["glow"]} diff --git a/code/src/app.rs b/code/src/app.rs index dbca42c..0dbf1d5 100644 --- a/code/src/app.rs +++ b/code/src/app.rs @@ -1,5 +1,7 @@ use egui_dock::{DockArea, Style}; +use crate::database::DBOperator; + static TABS_CAN_BE_WINDOWS: bool = false; enum TabTypes{ @@ -104,7 +106,22 @@ impl MainTabViewer{ } fn show_worker(&mut self, ui: &mut egui::Ui){ - ui.label("Worker"); + let rt = tokio::runtime::Runtime::new().unwrap(); + rt.block_on(async{ + let dbd = DBOperator::new(); + let positions = dbd.get_position().await.unwrap(); + for eq in positions{ + println!("{}",&eq.name); + ui.push_id(&eq.name, |ui|{ + egui::CollapsingHeader::new(&eq.name) + .default_open(false) + .show(ui, |ui|{ + ui.label(eq.wage.to_string()); + }) + }); + } + }) + } fn show_salary(&mut self, ui: &mut egui::Ui){ ui.label("Salary"); diff --git a/code/src/database.rs b/code/src/database.rs index 6d9cbf3..414ecf0 100644 --- a/code/src/database.rs +++ b/code/src/database.rs @@ -8,7 +8,7 @@ use dotenv::dotenv; // use crate::schema::worker::dsl::*; use crate::models::*; -struct DBOperator{ +pub struct DBOperator{ connection_string: String, } impl DBOperator{ @@ -18,13 +18,13 @@ impl DBOperator{ Self{connection_string:db_url} } + pub async fn get_position(&self) -> Result, sqlx::Error>{ + let pool = MySqlPool::connect(&self.connection_string).await?; + let rets: Vec = sqlx::query_as:: <_, Position>("SELECT * FROM `position`").fetch_all(&pool).await?; + Ok(rets) + } +} -} - -async fn get_position(pool: &MySqlPool) -> Result, sqlx::Error>{ - let rets: Vec = sqlx::query_as:: <_, Position>("SELECT * FROM `position`").fetch_all(pool).await?; - Ok(rets) -} diff --git a/code/src/main.rs b/code/src/main.rs index bf5dd59..9a2852d 100644 --- a/code/src/main.rs +++ b/code/src/main.rs @@ -1,10 +1,12 @@ #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + +use crate::database::DBOperator; mod app; mod models; mod database; // mod schema; fn main() -> eframe::Result{ - // database::estabilish_connection(); + database::estabilish_connection(); let native_opts = eframe::NativeOptions { viewport: egui::ViewportBuilder::default() .with_inner_size([400.0,300.0]) diff --git a/code/src/models.rs b/code/src/models.rs index 3a6448d..30c5d27 100644 --- a/code/src/models.rs +++ b/code/src/models.rs @@ -3,9 +3,9 @@ use sqlx::types::BigDecimal; #[derive(Default, Clone, Hash, sqlx::FromRow)] pub struct Position{ - id: i32, - name: String, - wage: BigDecimal, + pub id: i32, + pub name: String, + pub wage: BigDecimal, } #[derive(Default, Clone, Hash)] pub struct Worker{