From e4e56041865b18074f21b2925c7bc37d8d0cdca8 Mon Sep 17 00:00:00 2001 From: ultrageese Date: Mon, 22 Jun 2026 20:02:23 +1000 Subject: [PATCH] =?UTF-8?q?=D0=A3=D1=85=20=D0=BA=D0=B0=D0=BA=20=D0=B6?= =?UTF-8?q?=D0=B5=20=D1=8F=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BF=D0=B8=D1=88?= =?UTF-8?q?=D1=83=20=D1=8D=D1=82=D0=BE=D1=82=20=D0=BA=D0=BE=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/Cargo.lock | 262 +++++++++++++++++++++++++++++++++++- code/Cargo.toml | 7 + code/src/app.rs | 8 ++ code/src/database.rs | 1 - code/src/db/mod.rs | 3 + code/src/db/options.rs | 17 +++ code/src/db/traits.rs | 7 + code/src/db/worker.rs | 20 +++ code/src/main.rs | 4 +- code/src/tab.rs | 1 + code/src/worker_database.rs | 0 code/src/worker_tab.rs | 2 + 12 files changed, 327 insertions(+), 5 deletions(-) create mode 100644 code/src/db/mod.rs create mode 100644 code/src/db/options.rs create mode 100644 code/src/db/traits.rs create mode 100644 code/src/db/worker.rs delete mode 100644 code/src/worker_database.rs diff --git a/code/Cargo.lock b/code/Cargo.lock index 581ff92..f4a3a2f 100644 --- a/code/Cargo.lock +++ b/code/Cargo.lock @@ -227,6 +227,12 @@ dependencies = [ "x11rb", ] +[[package]] +name = "arraydeque" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" + [[package]] name = "arrayref" version = "0.3.9" @@ -763,6 +769,7 @@ dependencies = [ "anyhow", "bigdecimal", "chrono", + "config", "dotenvy", "eframe", "egui", @@ -815,6 +822,26 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "config" +version = "0.15.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d0237145f33580b89724f75d16950efd3e2c91b2d823917ecb69ec7f84f0" +dependencies = [ + "async-trait", + "convert_case", + "json5", + "pathdiff", + "ron", + "rust-ini", + "serde-untagged", + "serde_core", + "serde_json", + "toml", + "winnow", + "yaml-rust2", +] + [[package]] name = "const-oid" version = "0.9.6" @@ -827,6 +854,35 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom 0.2.17", + "once_cell", + "tiny-keccak", +] + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -1035,6 +1091,15 @@ dependencies = [ "libloading", ] +[[package]] +name = "dlv-list" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f" +dependencies = [ + "const-random", +] + [[package]] name = "document-features" version = "0.2.12" @@ -1243,6 +1308,15 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + [[package]] name = "endi" version = "1.1.1" @@ -1324,6 +1398,17 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +[[package]] +name = "erased-serde" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" +dependencies = [ + "serde", + "serde_core", + "typeid", +] + [[package]] name = "errno" version = "0.3.14" @@ -1798,6 +1883,12 @@ dependencies = [ "ahash 0.7.8", ] +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + [[package]] name = "hashbrown" version = "0.15.5" @@ -1835,6 +1926,15 @@ dependencies = [ "hashbrown 0.15.5", ] +[[package]] +name = "hashlink" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" +dependencies = [ + "hashbrown 0.16.1", +] + [[package]] name = "heck" version = "0.5.0" @@ -2166,6 +2266,17 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "json5" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" +dependencies = [ + "pest", + "pest_derive", + "serde", +] + [[package]] name = "khronos-egl" version = "6.0.0" @@ -2856,6 +2967,16 @@ dependencies = [ "num-traits", ] +[[package]] +name = "ordered-multimap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79" +dependencies = [ + "dlv-list", + "hashbrown 0.14.5", +] + [[package]] name = "ordered-stream" version = "0.2.0" @@ -2910,6 +3031,12 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + [[package]] name = "pem-rfc7468" version = "0.7.0" @@ -2938,6 +3065,49 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" +[[package]] +name = "pest" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +dependencies = [ + "memchr", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "pest_meta" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +dependencies = [ + "pest", + "sha2 0.10.9", +] + [[package]] name = "phf" version = "0.11.3" @@ -3426,6 +3596,20 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ron" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4147b952f3f819eca0e99527022f7d6a8d05f111aeb0a62960c74eb283bec8fc" +dependencies = [ + "bitflags 2.13.0", + "once_cell", + "serde", + "serde_derive", + "typeid", + "unicode-ident", +] + [[package]] name = "rsa" version = "0.9.10" @@ -3446,6 +3630,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "rust-ini" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "796e8d2b6696392a43bea58116b667fb4c29727dc5abd27d6acf338bb4f688c7" +dependencies = [ + "cfg-if", + "ordered-multimap", +] + [[package]] name = "rust_decimal" version = "1.42.1" @@ -3605,6 +3799,18 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-untagged" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058" +dependencies = [ + "erased-serde", + "serde", + "serde_core", + "typeid", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -3649,6 +3855,15 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "serde_spanned" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" +dependencies = [ + "serde_core", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -3924,7 +4139,7 @@ dependencies = [ "futures-io", "futures-util", "hashbrown 0.15.5", - "hashlink", + "hashlink 0.10.0", "indexmap", "log", "memchr", @@ -4238,6 +4453,15 @@ dependencies = [ "zune-jpeg", ] +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + [[package]] name = "tiny-skia" version = "0.11.4" @@ -4327,6 +4551,19 @@ dependencies = [ "tokio", ] +[[package]] +name = "toml" +version = "1.1.2+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" +dependencies = [ + "serde_core", + "serde_spanned", + "toml_datetime", + "toml_parser", + "winnow", +] + [[package]] name = "toml_datetime" version = "1.1.1+spec-1.1.0" @@ -4410,12 +4647,24 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e28f89b80c87b8fb0cf04ab448d5dd0dd0ade2f8891bae878de66a75a28600e" +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + [[package]] name = "typenum" version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + [[package]] name = "uds_windows" version = "1.2.1" @@ -5623,6 +5872,17 @@ version = "0.8.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" +[[package]] +name = "yaml-rust2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" +dependencies = [ + "arraydeque", + "encoding_rs", + "hashlink 0.11.1", +] + [[package]] name = "yoke" version = "0.8.3" diff --git a/code/Cargo.toml b/code/Cargo.toml index 912918a..caca8f4 100644 --- a/code/Cargo.toml +++ b/code/Cargo.toml @@ -7,6 +7,7 @@ edition = "2024" anyhow = "1.0.102" bigdecimal = "0.4.10" chrono = { version = "0.4.44", features = ["serde"] } +config = { version = "0.15.24", features = ["json"] } dotenvy = "0.15.7" eframe = {version = "0.34.2", features = ["glow"]} egui = "0.34.2" @@ -21,3 +22,9 @@ tokio={version = "1.52.3", features = ["full"]} [target.'cfg(target_os="windows")'.dependencies] eframe = {version ="0.34.2",default-features=false, features=["glow"]} + +[profile.release] +opt-level="z" +lto=true +codegen-units=1 +debug=false diff --git a/code/src/app.rs b/code/src/app.rs index 7cbf463..f579c9e 100644 --- a/code/src/app.rs +++ b/code/src/app.rs @@ -55,6 +55,14 @@ impl Default for App<'_> { tab_type: TabTypes::Recipe, title: "Рецепты".to_owned(), }, + Tab{ + tab_type: TabTypes::Order, + title: "Заказы".to_owned(), + }, + Tab{ + tab_type: TabTypes::Client, + title: "Клиенты".to_owned(), + }, Tab { tab_type: TabTypes::Settings, title: "Настройки".to_owned(), diff --git a/code/src/database.rs b/code/src/database.rs index b161632..e9a5e02 100644 --- a/code/src/database.rs +++ b/code/src/database.rs @@ -11,7 +11,6 @@ use std::env; // use crate::schema::equipment::dsl::*; // use crate::schema::worker::dsl::*; use crate::models::*; -use anyhow::anyhow; pub struct DBOperator { pool: MySqlPool, diff --git a/code/src/db/mod.rs b/code/src/db/mod.rs new file mode 100644 index 0000000..debb19d --- /dev/null +++ b/code/src/db/mod.rs @@ -0,0 +1,3 @@ +pub mod options; +mod traits; +pub mod worker; diff --git a/code/src/db/options.rs b/code/src/db/options.rs new file mode 100644 index 0000000..23df086 --- /dev/null +++ b/code/src/db/options.rs @@ -0,0 +1,17 @@ +pub struct Options { + pub connection_string: String, +} +impl Options { + pub fn new() -> Self { + let settings = match config::Config::builder() + .add_source(config::File::with_name("appsettings")) + .build() + { + Ok(n) => n, + Err(_) => config::Config::default(), + }; + Self { + connection_string: settings.get("connection_string").unwrap_or_default(), + } + } +} diff --git a/code/src/db/traits.rs b/code/src/db/traits.rs new file mode 100644 index 0000000..778c863 --- /dev/null +++ b/code/src/db/traits.rs @@ -0,0 +1,7 @@ +use crate::models::Worker; + +pub trait WorkerRepository { + async fn add(&self, worker: Worker) -> Result<(), sqlx::Error>; + async fn get_all(&self) -> Result, sqlx::Error>; + async fn get_some(&self, start: u32, amount: u32) -> Result, sqlx::Error>; +} diff --git a/code/src/db/worker.rs b/code/src/db/worker.rs new file mode 100644 index 0000000..bd201c1 --- /dev/null +++ b/code/src/db/worker.rs @@ -0,0 +1,20 @@ +use sqlx::mysql::MySqlPool; +pub struct WorkerRepo { + pool: MySqlPool, + options: super::options::Options, +} +impl WorkerRepo { + pub fn new() -> Result { + let options = super::options::Options::new(); + let pool = match MySqlPool::connect_lazy(&options.connection_string) { + Ok(n) => n, + Err(e) => { + return Err(e); + } + }; + Ok(Self { pool, options }) + } + pub async fn add(&self, work) +} + + diff --git a/code/src/main.rs b/code/src/main.rs index c5c9db0..5818cbd 100644 --- a/code/src/main.rs +++ b/code/src/main.rs @@ -1,18 +1,16 @@ #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] -use crate::reports::Reporter; mod app; mod database; +mod db; mod material_tab; mod models; mod production_tab; mod recipe_tab; mod reports; mod tab; -mod worker_database; mod worker_tab; - fn main() { dotenvy::dotenv().ok(); database::estabilish_connection(); diff --git a/code/src/tab.rs b/code/src/tab.rs index fa4542d..92579ef 100644 --- a/code/src/tab.rs +++ b/code/src/tab.rs @@ -9,6 +9,7 @@ pub enum TabTypes { Recipe, Product, Order, + Client, Settings, WorkerList, WorkerPosition, diff --git a/code/src/worker_database.rs b/code/src/worker_database.rs deleted file mode 100644 index e69de29..0000000 diff --git a/code/src/worker_tab.rs b/code/src/worker_tab.rs index 302087a..ed20b61 100644 --- a/code/src/worker_tab.rs +++ b/code/src/worker_tab.rs @@ -6,6 +6,8 @@ use std::default::Default; use std::str::FromStr; use std::sync::Arc; +mod db; + use crate::database::*; use crate::models::{ModalStatus, ModalWinState, Position, Worker, WorkerRow}; use crate::tab::*;