From feda8a7db8d1d7c5439aa8f8feef7cc0dd2b59a0 Mon Sep 17 00:00:00 2001 From: Unit 193 Date: Fri, 27 Jul 2018 23:51:12 -0400 Subject: New upstream version 3.2.1+dfsg1 --- Plugins/SqlEnterpriseFormatter/formatupsert.cpp | 49 +++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Plugins/SqlEnterpriseFormatter/formatupsert.cpp (limited to 'Plugins/SqlEnterpriseFormatter/formatupsert.cpp') 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); + } + +} -- cgit v1.2.3