diff options
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/plugins/populatescript.h')
| -rw-r--r-- | SQLiteStudio3/coreSQLiteStudio/plugins/populatescript.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/plugins/populatescript.h b/SQLiteStudio3/coreSQLiteStudio/plugins/populatescript.h new file mode 100644 index 0000000..8870b67 --- /dev/null +++ b/SQLiteStudio3/coreSQLiteStudio/plugins/populatescript.h @@ -0,0 +1,63 @@ +#ifndef POPULATESCRIPT_H +#define POPULATESCRIPT_H + +#include "builtinplugin.h" +#include "populateplugin.h" +#include "config_builder.h" +#include "scriptingplugin.h" + +CFG_CATEGORIES(PopulateScriptConfig, + CFG_CATEGORY(PopulateScript, + CFG_ENTRY(QString, Language, QString()) + CFG_ENTRY(QString, InitCode, QString()) + CFG_ENTRY(QString, Code, QString()) + ) +) + +/** + * @brief Populate from evaluated script code + * + * Initial code evaluation gets 2 arguments - the db name and the table name. + * Each evaluation of per-step code gets 3 arguments, 2 of them just like above + * and the 3rd is number of the row being currently populated (starting from 1). + */ +class PopulateScript : public BuiltInPlugin, public PopulatePlugin +{ + Q_OBJECT + + SQLITESTUDIO_PLUGIN_TITLE("Constant") + SQLITESTUDIO_PLUGIN_DESC("Support for populating tables with a constant value.") + SQLITESTUDIO_PLUGIN_VERSION(10001) + SQLITESTUDIO_PLUGIN_AUTHOR("sqlitestudio.pl") + + public: + PopulateScript(); + + QString getTitle() const; + PopulateEngine* createEngine(); +}; + +class PopulateScriptEngine : public PopulateEngine +{ + public: + bool beforePopulating(Db* db, const QString& table); + QVariant nextValue(bool& nextValueError); + void afterPopulating(); + CfgMain* getConfig(); + QString getPopulateConfigFormName() const; + bool validateOptions(); + + private: + CFG_LOCAL(PopulateScriptConfig, cfg) + void releaseContext(); + + ScriptingPlugin* scriptingPlugin = nullptr; + DbAwareScriptingPlugin* dbAwarePlugin = nullptr; + ScriptingPlugin::Context* context = nullptr; + Db* db = nullptr; + QString table; + int rowCnt = 0; + QList<QVariant> evalArgs; +}; + +#endif // POPULATESCRIPT_H |
