diff --git a/code/Cargo.lock b/code/Cargo.lock index b853603..de570ed 100644 --- a/code/Cargo.lock +++ b/code/Cargo.lock @@ -728,6 +728,7 @@ dependencies = [ name = "code" version = "0.1.0" dependencies = [ + "anyhow", "chrono", "dotenv", "eframe", diff --git a/code/Cargo.toml b/code/Cargo.toml index f0e785b..8821d4e 100644 --- a/code/Cargo.toml +++ b/code/Cargo.toml @@ -4,6 +4,7 @@ version = "0.1.0" edition = "2024" [dependencies] +anyhow = "1.0.102" chrono = { version = "0.4.44", features = ["serde"] } dotenv = "0.15.0" eframe = "0.34.2" @@ -11,7 +12,7 @@ egui = "0.34.2" 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"]} +sqlx = {version="0.8.6", features = ["runtime-tokio", "mysql"]} [target.'cfg(target_os="windows")'.dependencies] eframe = {version ="0.34.2",default-features=false, features=["glow"]} diff --git a/code/src/database.rs b/code/src/database.rs index 63089b6..4976674 100644 --- a/code/src/database.rs +++ b/code/src/database.rs @@ -1,9 +1,12 @@ +use sqlx::MySqlConnection; use sqlx::mysql::MySqlPoolOptions; -use sqlx:mysql::MySqlPool; +use sqlx::mysql::MySqlPool; +use sqlx::Connection; use dotenv::dotenv; // use crate::schema::equipment::dsl::*; // use crate::schema::worker::dsl::*; +use crate::models::*; struct DBOperator{ connection_string: String, @@ -13,14 +16,18 @@ impl DBOperator{ dotenv().ok(); let db_url = dotenv::var("DATABASE_URL").expect("DATABASE_URL установи!"); Self{connection_string:db_url} + } - pub fn get_all(&self, from: String){ - let pool = MySqlPool::connect(&self.connection_string); - let ret = sqlx::query("SELECT * FROM ?") - .bind(from) - .fetch(pool); - } + } + +async fn get_position(pool: &MySqlPool) -> anyhow::Result<()>{ + let rets = sqlx::query!(r#"SELECT * FROM position"#) + .fetch_all(*pool) + .await?; + Ok(()) +} + pub async fn estabilish_connection() -> Result<(), sqlx::Error>{ @@ -28,10 +35,7 @@ pub async fn estabilish_connection() -> Result<(), sqlx::Error>{ let db_url = dotenv::var("DATABASE_URL").expect("DATABASE_URL установи!"); let pool = MySqlPoolOptions::new() .max_connections(5) - .connect(db_url).await?; + .connect(&db_url).await?; Ok(()) -} -pub fn get_positions() -> std::vec::Vec{ - todo!() } \ No newline at end of file diff --git a/code/src/main.rs b/code/src/main.rs index 20b5d6e..bf5dd59 100644 --- a/code/src/main.rs +++ b/code/src/main.rs @@ -4,7 +4,7 @@ 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 6f001c4..afe6374 100644 --- a/code/src/models.rs +++ b/code/src/models.rs @@ -1,5 +1,5 @@ -#[derive(Default, Clone, Hash)] +#[derive(Default, Clone, Hash, sqlx::FromRow)] pub struct Position{ id: i32, name: String,