src/database/db_product.cpp

changeset 526
3b9abdae181e
parent 521
5fbe71d69fe5
child 527
84091b9cb800
--- a/src/database/db_product.cpp	Sat Jun 01 15:19:08 2024 +0200
+++ b/src/database/db_product.cpp	Sat Jun 01 21:10:54 2024 +0200
@@ -23,6 +23,31 @@
 {
     QSqlQuery query, yquery;
 
+    /*
+     * Upgrade database extra columns for target water.
+     */
+    query.exec("SHOW COLUMNS FROM `products` LIKE 'tw_name'");
+    if (! query.first()) {
+	qWarning() << "loadProduct upgrade for target water";
+	QString sql = "ALTER TABLE `products` ADD `tw_name` VARCHAR(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL AFTER `calc_acid`, ";
+	sql.append("ADD `tw_calcium` FLOAT NOT NULL DEFAULT '0' AFTER `tw_name`, ");
+	sql.append("ADD `tw_sulfate` FLOAT NOT NULL DEFAULT '0' AFTER `tw_calcium`, ");
+	sql.append("ADD `tw_chloride` FLOAT NOT NULL DEFAULT '0' AFTER `tw_sulfate`, ");
+	sql.append("ADD `tw_sodium` FLOAT NOT NULL DEFAULT '0' AFTER `tw_chloride`, ");
+	sql.append("ADD `tw_magnesium` FLOAT NOT NULL DEFAULT '0' AFTER `tw_sodium`, ");
+	sql.append("ADD `tw_total_alkalinity` FLOAT NOT NULL DEFAULT '0' AFTER `tw_magnesium`;");
+//	qDebug() << sql;
+	query.exec(sql);
+	if (query.lastError().isValid()) {
+            qWarning() << "loadProduct upgrade" << query.lastError();
+            QMessageBox::warning(dialog, QObject::tr("Database error"),
+                        QObject::tr("MySQL error: %1\n%2\n%3")
+                        .arg(query.lastError().nativeErrorCode())
+                        .arg(query.lastError().driverText())
+                        .arg(query.lastError().databaseText()));
+	}
+    }
+
     query.prepare("SELECT * FROM products WHERE record = :recno");
     query.bindValue(":recno", recno);
     query.exec();

mercurial