1 #ifndef SQLITEORDERBY_H
2 #define SQLITEORDERBY_H
3 
4 #include "sqlitestatement.h"
5 #include "sqlitesortorder.h"
6 #include "sqlitenulls.h"
7 #include "sqliteextendedindexedcolumn.h"
8 
9 class SqliteExpr;
10 
11 class API_EXPORT SqliteOrderBy : public SqliteStatement, public SqliteExtendedIndexedColumn
12 {
13     public:
14         SqliteOrderBy();
15         SqliteOrderBy(const SqliteOrderBy& other);
16         SqliteOrderBy(SqliteExpr* expr, SqliteSortOrder order, SqliteNulls nulls);
17         ~SqliteOrderBy();
18 
19         SqliteStatement* clone();
20         bool isSimpleColumn() const;
21         QString getColumnName() const;
22         QString getCollation() const;
23         QString getColumnString() const;
24         void setColumnName(const QString& name);
25         void setCollation(const QString& name);
26         void clearCollation();
27 
28         SqliteExpr* expr = nullptr;
29         SqliteSortOrder order = SqliteSortOrder::null;
30         SqliteNulls nulls = SqliteNulls::null;
31 
32     protected:
33         TokenList rebuildTokensFromContents();
34         void evaluatePostParsing();
35 
36     private:
37         void pullLastCollationAsOuterExpr();
38 };
39 
40 typedef QSharedPointer<SqliteOrderBy> SqliteOrderByPtr;
41 
42 #endif // SQLITEORDERBY_H
43