#ifndef SQLITEINSERT_H #define SQLITEINSERT_H #include "sqlitequery.h" #include "sqliteconflictalgo.h" #include "sqliteselect.h" #include #include class SqliteExpr; class SqliteWith; class SqliteUpsert; class API_EXPORT SqliteInsert : public SqliteQuery { public: SqliteInsert(); SqliteInsert(const SqliteInsert& other); SqliteInsert(bool replace, SqliteConflictAlgo onConflict, const QString& name1, const QString& name2, const QList& columns, const QList& row, SqliteWith* with, const QList& returning); SqliteInsert(bool replace, SqliteConflictAlgo onConflict, const QString& name1, const QString& name2, const QList& columns, SqliteSelect* select, SqliteWith* with, SqliteUpsert* upsert, const QList& returning); SqliteInsert(bool replace, SqliteConflictAlgo onConflict, const QString& name1, const QString& name2, const QList& columns, SqliteWith* with, const QList& returning); ~SqliteInsert(); SqliteStatement* clone(); protected: QStringList getColumnsInStatement(); QStringList getTablesInStatement(); QStringList getDatabasesInStatement(); TokenList getColumnTokensInStatement(); TokenList getTableTokensInStatement(); TokenList getDatabaseTokensInStatement(); QList getFullObjectsInStatement(); TokenList rebuildTokensFromContents(); private: void init(const QString& name1, const QString& name2, bool replace, SqliteConflictAlgo onConflict, const QList& returning); public: bool replaceKw = false; bool defaultValuesKw = false; SqliteConflictAlgo onConflict = SqliteConflictAlgo::null; QString database = QString(); QString table = QString(); QStringList columnNames; QList values; SqliteSelect* select = nullptr; SqliteWith* with = nullptr; SqliteUpsert* upsert = nullptr; QList returning; }; typedef QSharedPointer SqliteInsertPtr; #endif // SQLITEINSERT_H