From 7c7e72ae1456728cd0d85dc9ddc786caa9786e7e Mon Sep 17 00:00:00 2001 From: eelke Date: Sun, 23 Sep 2018 10:43:32 +0200 Subject: [PATCH] pg_trigger --- pglablib/PgTrigger.cpp | 6 ++++++ pglablib/PgTrigger.h | 28 ++++++++++++++++++++++++++++ pglablib/PgTriggerContainer.cpp | 21 +++++++++++++++++++++ pglablib/PgTriggerContainer.h | 25 +++++++++++++++++++++++++ pglablib/pglablib.pro | 12 ++++++++++-- 5 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 pglablib/PgTrigger.cpp create mode 100644 pglablib/PgTrigger.h create mode 100644 pglablib/PgTriggerContainer.cpp create mode 100644 pglablib/PgTriggerContainer.h diff --git a/pglablib/PgTrigger.cpp b/pglablib/PgTrigger.cpp new file mode 100644 index 0000000..c2cab08 --- /dev/null +++ b/pglablib/PgTrigger.cpp @@ -0,0 +1,6 @@ +#include "PgTrigger.h" + +PgTrigger::PgTrigger() +{ + +} diff --git a/pglablib/PgTrigger.h b/pglablib/PgTrigger.h new file mode 100644 index 0000000..d3e2382 --- /dev/null +++ b/pglablib/PgTrigger.h @@ -0,0 +1,28 @@ +#ifndef PGTRIGGER_H +#define PGTRIGGER_H + +#include "Pgsql_Value.h" +#include +#include + +class PgTrigger { +public: + Oid tgrelid; + QString tgname; + Oid tgfoid; + int16_t tgtype; + char tgenabled; + bool tgisinternal; + Oid tgconstrrelid; + Oid tgconstrindid; + Oid tgconstraint; + bool tgdeferrable; + bool tginitdeferred; + int16_t tgnargs; + QString tgattr; + QString tgargs; + QString tgqual; + +}; + +#endif // PGTRIGGER_H diff --git a/pglablib/PgTriggerContainer.cpp b/pglablib/PgTriggerContainer.cpp new file mode 100644 index 0000000..0134bef --- /dev/null +++ b/pglablib/PgTriggerContainer.cpp @@ -0,0 +1,21 @@ +#include "PgTriggerContainer.h" +#include "Pgsql_Connection.h" +#include "Pgsql_Col.h" + + +std::string PgTriggerContainer::getLoadQuery() const +{ + return R"(SELECT * +FROM pg_trigger +WHERE NOT tgisinternal)"; +} + +PgTrigger PgTriggerContainer::loadElem(const Pgsql::Row &row) +{ + Pgsql::Col col(row); + PgTrigger v; + col >> v.tgrelid >> v.tgname >> v.tgfoid >> v.tgtype >> v.tgenabled >> v.tgisinternal >> v.tgconstrrelid + >> v.tgconstrindid >> v.tgconstraint >> v.tgdeferrable >> v.tginitdeferred >> v.tgnargs >> v.tgattr + >> v.tgargs >> v.tgqual; + return v; +} diff --git a/pglablib/PgTriggerContainer.h b/pglablib/PgTriggerContainer.h new file mode 100644 index 0000000..78eb818 --- /dev/null +++ b/pglablib/PgTriggerContainer.h @@ -0,0 +1,25 @@ +#ifndef PGTRIGGERCONTAINER_H +#define PGTRIGGERCONTAINER_H + +#include "PgContainer.h" +#include "PgTrigger.h" + +namespace Pgsql { + + class Result; + +} + + +class PgTriggerContainer: public PgContainer { +public: + using PgContainer::PgContainer; + + virtual std::string getLoadQuery() const override; +protected: + PgTrigger loadElem(const Pgsql::Row &row) override; +private: +}; + + +#endif // PGTRIGGERCONTAINER_H diff --git a/pglablib/pglablib.pro b/pglablib/pglablib.pro index b355769..f678cd8 100644 --- a/pglablib/pglablib.pro +++ b/pglablib/pglablib.pro @@ -61,7 +61,11 @@ codebuilder/DefaultConfigs.cpp \ codebuilder/TypeMappings.cpp \ codebuilder/IndentationConfig.cpp \ codebuilder/StructureTemplate.cpp \ - FormatToStream.cpp + FormatToStream.cpp \ + codebuilder/StringLiteralRules.cpp \ + codebuilder/StringEscapeRule.cpp \ + PgTrigger.cpp \ + PgTriggerContainer.cpp HEADERS += \ Pglablib.h \ @@ -105,7 +109,11 @@ codebuilder/TypeMappings.h \ codebuilder/IndentationConfig.h \ codebuilder/StructureTemplate.h \ FormatToStream.h \ - codebuilder/ResultLoopTemplate.h + codebuilder/ResultLoopTemplate.h \ + codebuilder/StringEscapeRule.h \ + codebuilder/StringLiteralRules.h \ + PgTrigger.h \ + PgTriggerContainer.h unix { target.path = /usr/lib