aboutsummaryrefslogtreecommitdiffstats
path: root/Plugins/SqlEnterpriseFormatter/formatupsert.cpp
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2018-07-27 23:54:15 -0400
committerLibravatarUnit 193 <unit193@ubuntu.com>2018-07-27 23:54:15 -0400
commit6d3d39356473078c6b47e03b8a7616e4b34de928 (patch)
treefe5be2e6a08e4cfc73207746aba4c9fccfecfa10 /Plugins/SqlEnterpriseFormatter/formatupsert.cpp
parentf98e49169a40876bcf1df832de6e908d1b350193 (diff)
parentfeda8a7db8d1d7c5439aa8f8feef7cc0dd2b59a0 (diff)
Update upstream source from tag 'upstream/3.2.1+dfsg1'
Update to upstream version '3.2.1+dfsg1' with Debian dir 5ea0333565de4dc898c062cc0ff4ba1153e2c1e4
Diffstat (limited to 'Plugins/SqlEnterpriseFormatter/formatupsert.cpp')
-rw-r--r--Plugins/SqlEnterpriseFormatter/formatupsert.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/Plugins/SqlEnterpriseFormatter/formatupsert.cpp b/Plugins/SqlEnterpriseFormatter/formatupsert.cpp
new file mode 100644
index 0000000..70992f9
--- /dev/null
+++ b/Plugins/SqlEnterpriseFormatter/formatupsert.cpp
@@ -0,0 +1,49 @@
+#include "formatupsert.h"
+#include "parser/ast/sqliteupsert.h"
+#include "parser/ast/sqliteexpr.h"
+#include "parser/ast/sqliteorderby.h"
+
+FormatUpsert::FormatUpsert(SqliteUpsert* upsert) :
+ upsert(upsert)
+{
+
+}
+
+void FormatUpsert::formatInternal()
+{
+ withKeyword("ON").withKeyword("CONFLICT");
+ if (!upsert->conflictColumns.isEmpty())
+ {
+ withParDefLeft().withStatementList(upsert->conflictColumns).withParDefRight();
+ if (upsert->conflictWhere)
+ withKeyword("WHERE").withStatement(upsert->conflictWhere);
+ }
+
+ withKeyword("DO");
+
+ if (upsert->doNothing)
+ {
+ withKeyword("NOTHING");
+ }
+ else
+ {
+ withKeyword("UPDATE").withKeyword("SET");
+ bool first = true;
+ for (const SqliteUpsert::ColumnAndValue& keyVal : upsert->keyValueMap)
+ {
+ if (!first)
+ withListComma();
+
+ if (keyVal.first.type() == QVariant::StringList)
+ withParDefLeft().withIdList(keyVal.first.toStringList()).withParDefRight().withOperator("=").withStatement(keyVal.second);
+ else
+ withId(keyVal.first.toString()).withOperator("=").withStatement(keyVal.second);
+
+ first = false;
+ }
+
+ if (upsert->setWhere)
+ withKeyword("WHERE").withStatement(upsert->setWhere);
+ }
+
+}