aboutsummaryrefslogtreecommitdiffstats
path: root/Plugins/SqlEnterpriseFormatter/formatcreatetrigger.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Plugins/SqlEnterpriseFormatter/formatcreatetrigger.cpp')
-rw-r--r--Plugins/SqlEnterpriseFormatter/formatcreatetrigger.cpp90
1 files changed, 90 insertions, 0 deletions
diff --git a/Plugins/SqlEnterpriseFormatter/formatcreatetrigger.cpp b/Plugins/SqlEnterpriseFormatter/formatcreatetrigger.cpp
new file mode 100644
index 0000000..d05d8cf
--- /dev/null
+++ b/Plugins/SqlEnterpriseFormatter/formatcreatetrigger.cpp
@@ -0,0 +1,90 @@
+#include "formatcreatetrigger.h"
+#include "parser/ast/sqliteexpr.h"
+
+FormatCreateTrigger::FormatCreateTrigger(SqliteCreateTrigger* createTrig) :
+ createTrig(createTrig)
+{
+}
+
+void FormatCreateTrigger::formatInternal()
+{
+ withKeyword("CREATE");
+ if (createTrig->tempKw)
+ withKeyword("TEMP");
+ else if (createTrig->temporaryKw)
+ withKeyword("TEMPORARY");
+
+ withKeyword("TRIGGER");
+ if (createTrig->ifNotExistsKw)
+ withKeyword("IF").withKeyword("NOT").withKeyword("EXISTS");
+
+ if (dialect == Dialect::Sqlite3 && !createTrig->database.isNull())
+ withId(createTrig->database).withIdDot();
+
+ withId(createTrig->trigger);
+ switch (createTrig->eventTime)
+ {
+ case SqliteCreateTrigger::Time::BEFORE:
+ withKeyword("BEFORE");
+ break;
+ case SqliteCreateTrigger::Time::AFTER:
+ withKeyword("AFTER");
+ break;
+ case SqliteCreateTrigger::Time::INSTEAD_OF:
+ withKeyword("INSTEAD").withKeyword("OF");
+ break;
+ case SqliteCreateTrigger::Time::null:
+ break;
+ }
+
+ withStatement(createTrig->event).withKeyword("ON");
+ if (dialect == Dialect::Sqlite2 && !createTrig->database.isNull())
+ withId(createTrig->database).withIdDot();
+
+ withId(createTrig->table);
+
+ switch (createTrig->scope)
+ {
+ case SqliteCreateTrigger::Scope::FOR_EACH_ROW:
+ withKeyword("FOR").withKeyword("EACH").withKeyword("ROW");
+ break;
+ case SqliteCreateTrigger::Scope::FOR_EACH_STATEMENT:
+ withKeyword("FOR").withKeyword("EACH").withKeyword("STATEMENT");
+ break;
+ case SqliteCreateTrigger::Scope::null:
+ break;
+ }
+
+ if (createTrig->precondition)
+ withKeyword("WHEN").withStatement(createTrig->precondition);
+
+ withNewLine().withKeyword("BEGIN").withNewLine().withIncrIndent().withStatementList(createTrig->queries, QString(), ListSeparator::SEMICOLON).withSemicolon();
+ withDecrIndent().withKeyword("END").withSemicolon();
+}
+
+
+FormatCreateTriggerEvent::FormatCreateTriggerEvent(SqliteCreateTrigger::Event* ev) :
+ ev(ev)
+{
+}
+
+void FormatCreateTriggerEvent::formatInternal()
+{
+ switch (ev->type)
+ {
+ case SqliteCreateTrigger::Event::INSERT:
+ withKeyword("INSERT");
+ break;
+ case SqliteCreateTrigger::Event::UPDATE:
+ withKeyword("UPDATE");
+ break;
+ case SqliteCreateTrigger::Event::DELETE:
+ withKeyword("DELETE");
+ break;
+ case SqliteCreateTrigger::Event::UPDATE_OF:
+ withKeyword("UPDATE").withKeyword("OF").withIdList(ev->columnNames);
+ break;
+ case SqliteCreateTrigger::Event::null:
+ break;
+ }
+}