ну чёто из базы данных уже тянется. но пока только постоянно. надо менять

master
Алексей Алексей 2026-05-14 19:54:31 +10:00
parent 7e1fd4f5df
commit ead266377f
6 changed files with 50 additions and 15 deletions

21
code/Cargo.lock generated
View File

@ -750,6 +750,7 @@ dependencies = [
"egui_extras", "egui_extras",
"rust_decimal", "rust_decimal",
"sqlx", "sqlx",
"tokio",
] ]
[[package]] [[package]]
@ -3749,7 +3750,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e"
dependencies = [ dependencies = [
"libc", "libc",
"windows-sys 0.60.2", "windows-sys 0.61.2",
] ]
[[package]] [[package]]
@ -4174,18 +4175,32 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]] [[package]]
name = "tokio" name = "tokio"
version = "1.52.1" version = "1.52.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b67dee974fe86fd92cc45b7a95fdd2f99a36a6d7b0d431a231178d3d670bbcc6" checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe"
dependencies = [ dependencies = [
"bytes", "bytes",
"libc", "libc",
"mio", "mio",
"parking_lot",
"pin-project-lite", "pin-project-lite",
"signal-hook-registry",
"socket2", "socket2",
"tokio-macros",
"windows-sys 0.61.2", "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]] [[package]]
name = "tokio-stream" name = "tokio-stream"
version = "0.1.18" version = "0.1.18"

View File

@ -13,6 +13,7 @@ egui_dock = "0.19.1"
egui_extras = "0.34.2" egui_extras = "0.34.2"
rust_decimal = {version = "1.42.0", features = ["macros"]} rust_decimal = {version = "1.42.0", features = ["macros"]}
sqlx = {version="0.8.6", features = ["runtime-tokio", "mysql","bigdecimal"]} sqlx = {version="0.8.6", features = ["runtime-tokio", "mysql","bigdecimal"]}
tokio={version = "1.52.3", features = ["full"]}
[target.'cfg(target_os="windows")'.dependencies] [target.'cfg(target_os="windows")'.dependencies]
eframe = {version ="0.34.2",default-features=false, features=["glow"]} eframe = {version ="0.34.2",default-features=false, features=["glow"]}

View File

@ -1,5 +1,7 @@
use egui_dock::{DockArea, Style}; use egui_dock::{DockArea, Style};
use crate::database::DBOperator;
static TABS_CAN_BE_WINDOWS: bool = false; static TABS_CAN_BE_WINDOWS: bool = false;
enum TabTypes{ enum TabTypes{
@ -104,7 +106,22 @@ impl MainTabViewer{
} }
fn show_worker(&mut self, ui: &mut egui::Ui){ 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){ fn show_salary(&mut self, ui: &mut egui::Ui){
ui.label("Salary"); ui.label("Salary");

View File

@ -8,7 +8,7 @@ use dotenv::dotenv;
// use crate::schema::worker::dsl::*; // use crate::schema::worker::dsl::*;
use crate::models::*; use crate::models::*;
struct DBOperator{ pub struct DBOperator{
connection_string: String, connection_string: String,
} }
impl DBOperator{ impl DBOperator{
@ -18,13 +18,13 @@ impl DBOperator{
Self{connection_string:db_url} Self{connection_string:db_url}
} }
pub async fn get_position(&self) -> Result<Vec<Position>, sqlx::Error>{
} let pool = MySqlPool::connect(&self.connection_string).await?;
let rets: Vec<Position> = sqlx::query_as:: <_, Position>("SELECT * FROM `position`").fetch_all(&pool).await?;
async fn get_position(pool: &MySqlPool) -> Result<Vec<Position>, sqlx::Error>{
let rets: Vec<Position> = sqlx::query_as:: <_, Position>("SELECT * FROM `position`").fetch_all(pool).await?;
Ok(rets) Ok(rets)
} }
}

View File

@ -1,10 +1,12 @@
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
use crate::database::DBOperator;
mod app; mod app;
mod models; mod models;
mod database; mod database;
// mod schema; // mod schema;
fn main() -> eframe::Result{ fn main() -> eframe::Result{
// database::estabilish_connection(); database::estabilish_connection();
let native_opts = eframe::NativeOptions { let native_opts = eframe::NativeOptions {
viewport: egui::ViewportBuilder::default() viewport: egui::ViewportBuilder::default()
.with_inner_size([400.0,300.0]) .with_inner_size([400.0,300.0])

View File

@ -3,9 +3,9 @@ use sqlx::types::BigDecimal;
#[derive(Default, Clone, Hash, sqlx::FromRow)] #[derive(Default, Clone, Hash, sqlx::FromRow)]
pub struct Position{ pub struct Position{
id: i32, pub id: i32,
name: String, pub name: String,
wage: BigDecimal, pub wage: BigDecimal,
} }
#[derive(Default, Clone, Hash)] #[derive(Default, Clone, Hash)]
pub struct Worker{ pub struct Worker{