issue #24005: do not delete uiform or script rows upon build
authorSteve Hackbarth <stephenhackbarth@gmail.com>
Thu, 26 Jun 2014 20:02:11 +0000 (16:02 -0400)
committerSteve Hackbarth <stephenhackbarth@gmail.com>
Thu, 26 Jun 2014 20:02:11 +0000 (16:02 -0400)
scripts/lib/build_database_util.js

index 7992298..e2da5e7 100644 (file)
@@ -80,7 +80,6 @@ regexp:true, undef:true, strict:true, trailing:true, white:true */
 
     disableSql = "ALTER TABLE " + tableName + " DISABLE TRIGGER ALL;";
 
-
     insertSql = "insert into " + tableName + " (report_name, report_descrip, " +
       "report_source, report_loaddate, report_grade) select " +
       "'" + name + "'," +
@@ -108,25 +107,29 @@ regexp:true, undef:true, strict:true, trailing:true, white:true */
       tableName = defaultSchema ? defaultSchema + ".pkgscript" : "unknown",
       notes = "", //"xtMfg package",
       disableSql,
-      deleteSql,
       insertSql,
+      updateSql,
       enableSql;
 
     disableSql = "ALTER TABLE " + tableName + " DISABLE TRIGGER ALL;";
 
-    deleteSql = "delete from " + tableName + " " +
-      "where script_name = '" + name +
-      "';";
-
     insertSql = "insert into " + tableName + " (script_name, script_order, script_enabled, " +
-      "script_source, script_notes) VALUES (" +
+      "script_source, script_notes) select " +
       "'" + name + "', 0, TRUE, " +
       "$$" + content + "$$," +
-      "'" + notes + "');";
+      "'" + notes + "'" +
+      " where not exists (select c.script_id from " + tableName + " c " +
+      "where script_name = '" + name + "');";
+
+    updateSql = "update " + tableName + " set " +
+      "script_name = '" + name + "', script_order = 0, script_enabled = TRUE, " +
+      "script_source = $$" + content +
+      "$$, script_notes = '" + notes + "' " +
+      "where script_name = '" + name + "';";
 
     enableSql = "ALTER TABLE " + tableName + " ENABLE TRIGGER ALL;";
 
-    return disableSql + deleteSql + insertSql + enableSql;
+    return disableSql + insertSql + updateSql + enableSql;
   };
 
   var convertFromUiform = function (content, filename, defaultSchema) {
@@ -134,25 +137,28 @@ regexp:true, undef:true, strict:true, trailing:true, white:true */
       tableName = defaultSchema ? defaultSchema + ".pkguiform" : "unknown",
       notes = "", //"xtMfg package",
       disableSql,
-      deleteSql,
       insertSql,
+      updateSql,
       enableSql;
 
     disableSql = "ALTER TABLE " + tableName + " DISABLE TRIGGER ALL;";
 
-    deleteSql = "delete from " + tableName + " " +
-      "where uiform_name = '" + name +
-      "';";
-
     insertSql = "insert into " + tableName + " (uiform_name, uiform_order, uiform_enabled, " +
-      "uiform_source, uiform_notes) VALUES (" +
+      "uiform_source, uiform_notes) select " +
       "'" + name + "', 0, TRUE, " +
       "$$" + content + "$$," +
-      "'" + notes + "');";
+      "'" + notes + "' " +
+      " where not exists (select c.uiform_id from " + tableName + " c " +
+      "where uiform_name = '" + name + "');";
+
+    updateSql = "update " + tableName + " set uiform_name = '" +
+      name + "', uiform_order = 0, uiform_enabled = TRUE, " +
+      "uiform_source = $$" + content + "$$, uiform_notes = '" + notes + "' " +
+      "where uiform_name = '" + name + "';";
 
     enableSql = "ALTER TABLE " + tableName + " ENABLE TRIGGER ALL;";
 
-    return disableSql + deleteSql + insertSql + enableSql;
+    return disableSql + insertSql + updateSql + enableSql;
   };
 
   var conversionMap = {