From 7167ce41b61d2ba2cdb526777a4233eb84a3b66a Mon Sep 17 00:00:00 2001 From: Unit 193 Date: Sat, 6 Dec 2014 17:33:25 -0500 Subject: Imported Upstream version 2.99.6 --- Plugins/SqlEnterpriseFormatter/formatinsert.cpp | 54 +++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Plugins/SqlEnterpriseFormatter/formatinsert.cpp (limited to 'Plugins/SqlEnterpriseFormatter/formatinsert.cpp') diff --git a/Plugins/SqlEnterpriseFormatter/formatinsert.cpp b/Plugins/SqlEnterpriseFormatter/formatinsert.cpp new file mode 100644 index 0000000..1ff0535 --- /dev/null +++ b/Plugins/SqlEnterpriseFormatter/formatinsert.cpp @@ -0,0 +1,54 @@ +#include "formatinsert.h" +#include "parser/ast/sqliteselect.h" +#include "parser/ast/sqliteinsert.h" +#include "formatwith.h" + +FormatInsert::FormatInsert(SqliteInsert* insert) : + insert(insert) +{ +} + +void FormatInsert::formatInternal() +{ + if (insert->replaceKw) + { + withStatement(insert->with); + withKeyword("REPLACE"); + } + else + { + withStatement(insert->with); + withKeyword("INSERT"); + if (insert->onConflict != SqliteConflictAlgo::null) + withKeyword("OR").withKeyword(sqliteConflictAlgo(insert->onConflict)); + } + + withKeyword("INTO"); + + if (!insert->database.isNull()) + withId(insert->database); + + withId(insert->table); + + if (insert->defaultValuesKw) + { + withKeyword("DEFAULT").withKeyword("VALUES"); + } + else + { + markAndKeepIndent("insertCols"); + if (insert->columnNames.size() > 0) + withParDefLeft().withIdList(insert->columnNames).withParDefRight(); + + if (insert->select) + { + withStatement(insert->select); + } + else if (dialect == Dialect::Sqlite2) // Sqlite2 uses classic single row values + { + withKeyword("VALUES").withParDefLeft().withStatementList(insert->values).withParDefRight(); + } + withDecrIndent(); + } + withSemicolon(); +} -- cgit v1.2.3