From f5c4261726d798dd782e88b184cdbe8f8d798d32 Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Fri, 7 Apr 2023 07:18:37 -0500 Subject: [PATCH] add: update_title in image_model.rs --- src/rust/image_model.rs | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/rust/image_model.rs b/src/rust/image_model.rs index e1fc496..ee90a71 100644 --- a/src/rust/image_model.rs +++ b/src/rust/image_model.rs @@ -4,7 +4,7 @@ mod image_model { use crate::models::*; use crate::schema::images::dsl::*; use diesel::sqlite::SqliteConnection; - use diesel::{delete, insert_into, prelude::*}; + use diesel::{delete, insert_into, prelude::*, update}; use std::path::{Path, PathBuf}; unsafe extern "C++" { @@ -207,6 +207,28 @@ mod image_model { } } + #[qinvokable] + pub fn update_title(mut self: Pin<&mut Self>, index: i32, updated_title: QString) -> bool { + let mut vector_roles = QVector_i32::default(); + vector_roles.append(self.as_ref().get_role(Role::TitleRole)); + let model_index = &self.as_ref().index(index, 0, &QModelIndex::default()); + + let db = &mut self.as_mut().get_db(); + let result = update(images.filter(id.eq(index))) + .set(title.eq(updated_title.to_string())) + .execute(db); + match result { + Ok(_i) => { + let image = self.as_mut().images_mut().get_mut(index as usize).unwrap(); + image.title = updated_title; + self.as_mut() + .emit_data_changed(model_index, model_index, &vector_roles); + true + } + Err(_e) => false, + } + } + #[qinvokable] pub fn get_item(self: Pin<&mut Self>, index: i32) -> QMap_QString_QVariant { println!("{index}");