summaryrefslogtreecommitdiffstats
path: root/Plugins/SqlExport/sqlexport.h
diff options
context:
space:
mode:
Diffstat (limited to 'Plugins/SqlExport/sqlexport.h')
-rw-r--r--Plugins/SqlExport/sqlexport.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/Plugins/SqlExport/sqlexport.h b/Plugins/SqlExport/sqlexport.h
new file mode 100644
index 0000000..9e23418
--- /dev/null
+++ b/Plugins/SqlExport/sqlexport.h
@@ -0,0 +1,65 @@
+#ifndef SQLEXPORT_H
+#define SQLEXPORT_H
+
+#include "plugins/genericexportplugin.h"
+#include "sqlexport_global.h"
+#include "config_builder.h"
+
+CFG_CATEGORIES(SqlExportConfig,
+ CFG_CATEGORY(SqlExport,
+ CFG_ENTRY(QString, QueryTable, QString::null)
+ CFG_ENTRY(bool, GenerateCreateTable, false)
+ CFG_ENTRY(bool, IncludeQueryInComments, true)
+ CFG_ENTRY(bool, UseFormatter, false)
+ CFG_ENTRY(bool, FormatDdlsOnly, false)
+ CFG_ENTRY(bool, GenerateDrop, false)
+ )
+)
+
+class SQLEXPORTSHARED_EXPORT SqlExport : public GenericExportPlugin
+{
+ Q_OBJECT
+
+ SQLITESTUDIO_PLUGIN("sqlexport.json")
+
+ public:
+ SqlExport();
+
+ QString getFormatName() const;
+ ExportManager::StandardConfigFlags standardOptionsToEnable() const;
+ CfgMain* getConfig();
+ QString defaultFileExtension() const;
+ QString getExportConfigFormName() const;
+ bool beforeExportQueryResults(const QString& query, QList<QueryExecutor::ResultColumnPtr>& columns,
+ const QHash<ExportManager::ExportProviderFlag,QVariant> providedData);
+ bool exportQueryResultsRow(SqlResultsRowPtr row);
+ bool exportTable(const QString& database, const QString& table, const QStringList& columnNames, const QString& ddl, SqliteCreateTablePtr createTable,
+ const QHash<ExportManager::ExportProviderFlag,QVariant> providedData);
+ bool exportVirtualTable(const QString& database, const QString& table, const QStringList& columnNames, const QString& ddl, SqliteCreateVirtualTablePtr createTable,
+ const QHash<ExportManager::ExportProviderFlag,QVariant> providedData);
+ bool exportTableRow(SqlResultsRowPtr data);
+ bool afterExport();
+ bool beforeExportDatabase(const QString& database);
+ bool exportIndex(const QString& database, const QString& name, const QString& ddl, SqliteCreateIndexPtr createIndex);
+ bool exportTrigger(const QString& database, const QString& name, const QString& ddl, SqliteCreateTriggerPtr createTrigger);
+ bool exportView(const QString& database, const QString& name, const QString& ddl, SqliteCreateViewPtr createView);
+ void validateOptions();
+ bool init();
+ void deinit();
+
+ private:
+ bool exportTable(const QString& database, const QString& table, const QStringList& columnNames, const QString& ddl);
+ void writeHeader();
+ void writeBegin();
+ void writeCommit();
+ void writeFkDisable();
+ QString formatQuery(const QString& sql);
+ QString getNameForObject(const QString& database, const QString& name, bool wrapped, Dialect dialect = Dialect::Sqlite3);
+ QStringList rowToArgList(SqlResultsRowPtr row);
+
+ QString theTable;
+ QString columns;
+ CFG_LOCAL(SqlExportConfig, cfg)
+};
+
+#endif // SQLEXPORT_H