оно выдаёт странную ошибку, а у меня не работает голова. я спать

master
Алексей Алексей 2026-06-21 00:04:21 +10:00
parent 0d558c1063
commit 1c8aba9066
2 changed files with 126 additions and 2 deletions

View File

@ -494,8 +494,106 @@ impl MainTabViewer {
}; };
if ui.button(btext).clicked() { if ui.button(btext).clicked() {
match self.equipment_modal_state.status { match self.equipment_modal_state.status {
ModalStatus::Add => {} ModalStatus::Add => self.rt.block_on(async {
ModalStatus::Edit => {} self.db_oper
.add_equipment(Equipment {
id: 0,
name: self
.equipment_modal_state
.data
.get("name")
.unwrap_or(&String::new())
.clone(),
inv_number: self
.equipment_modal_state
.data
.get("inv_number")
.unwrap_or(&String::new())
.clone(),
maintenance_date: chrono::NaiveDate::from_str(
self.equipment_modal_state
.data
.get("maintenance_date")
.unwrap_or(&"1970.01.01".to_owned()),
)
.unwrap()
.and_hms_opt(0, 0, 0)
.unwrap()
.and_local_timezone(chrono::Local)
.unwrap(),
worker: self
.workers
.read()
.clone()
.iter()
.find(|w| {
&w.id.to_string()
== self
.equipment_modal_state
.data
.get("worker_id")
.unwrap_or(&"0".to_owned())
})
.unwrap()
.clone(),
is_written_off: false,
})
.await
.unwrap();
}),
ModalStatus::Edit => self.rt.block_on(async {
self.db_oper
.update_equipment(Equipment {
id: self
.equipment_modal_state
.data
.get("id")
.unwrap()
.parse::<i32>()
.unwrap(),
name: self
.equipment_modal_state
.data
.get("name")
.unwrap_or(&String::new())
.clone(),
inv_number: self
.equipment_modal_state
.data
.get("inv_number")
.unwrap_or(&String::new())
.clone(),
maintenance_date: chrono::NaiveDate::from_str(
self.equipment_modal_state
.data
.get("maintenance_date")
.unwrap_or(&"1970.01.01".to_owned()),
)
.unwrap()
.and_hms_opt(0, 0, 0)
.unwrap()
.and_local_timezone(chrono::Local)
.unwrap(),
worker: self
.workers
.read()
.clone()
.iter()
.find(|w| {
&w.id.to_string()
== self
.equipment_modal_state
.data
.get("worker_id")
.unwrap_or(&"0".to_owned())
})
.unwrap()
.clone(),
is_written_off: false,
})
.await
.unwrap();
}),
ModalStatus::Remove => { ModalStatus::Remove => {
self.rt.block_on(async { self.rt.block_on(async {
self.db_oper self.db_oper

View File

@ -78,6 +78,32 @@ impl DBOperator {
} }
Ok(rets) Ok(rets)
} }
pub async fn add_equipment(&self, equipment: Equipment) -> Result<bool, sqlx::Error> {
match sqlx::query("INSERT INTO `equipment` (id, inv_number, maintenance_date, worker_id, name, is_written_off) VALUES(0, ?, ?, ?, ?, 0);")
.bind(equipment.inv_number)
.bind(equipment.maintenance_date)
.bind(equipment.worker.id)
.bind(equipment.name)
.execute(&self.pool)
.await{
Ok(_) => Ok(true),
Err(_) => Ok(false)
}
}
pub async fn update_equipment(&self, equipment: Equipment) -> Result<bool, sqlx::Error> {
match sqlx::query("UPDATE Brewery.equipment SET inv_number=?, maintenance_date=?, worker_id=?, name=?, is_written_off=? WHERE id=?;")
.bind(equipment.inv_number)
.bind(equipment.maintenance_date)
.bind(equipment.worker.id)
.bind(equipment.name)
.bind(equipment.is_written_off)
.bind(equipment.id)
.execute(&self.pool)
.await{
Ok(_) => Ok(true),
Err(_) => Ok(false)
}
}
pub async fn get_mcat(&self) -> Result<Vec<MaterialCategory>, sqlx::Error> { pub async fn get_mcat(&self) -> Result<Vec<MaterialCategory>, sqlx::Error> {
let rets = sqlx::query_as::<_, MaterialCategory>("SELECT * FROM `material_category`") let rets = sqlx::query_as::<_, MaterialCategory>("SELECT * FROM `material_category`")
.fetch_all(&self.pool) .fetch_all(&self.pool)