]> granicus.if.org Git - icinga2/blob - lib/db_ido/dbquery.hpp
Merge pull request #7124 from Icinga/bugfix/namespace-thread-safe
[icinga2] / lib / db_ido / dbquery.hpp
1 /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
2
3 #ifndef DBQUERY_H
4 #define DBQUERY_H
5
6 #include "db_ido/i2-db_ido.hpp"
7 #include "db_ido/dbvalue.hpp"
8 #include "icinga/customvarobject.hpp"
9 #include "base/dictionary.hpp"
10 #include "base/configobject.hpp"
11
12 namespace icinga
13 {
14
15 enum DbQueryType
16 {
17         DbQueryInsert = 1,
18         DbQueryUpdate = 2,
19         DbQueryDelete = 4,
20         DbQueryNewTransaction = 8
21 };
22
23 enum DbQueryCategory
24 {
25         DbCatInvalid = 0, //-1 is required for DbCatEverything
26         DbCatEverything = ~0,
27
28         DbCatConfig = 1,
29         DbCatState = 2,
30         DbCatAcknowledgement = 4,
31         DbCatComment = 8,
32         DbCatDowntime = 16,
33         DbCatEventHandler = 32,
34         DbCatExternalCommand = 64,
35         DbCatFlapping = 128,
36         DbCatCheck = 256,
37         DbCatLog = 512,
38         DbCatNotification = 1024,
39         DbCatProgramStatus = 2048,
40         DbCatRetention = 4096,
41         DbCatStateHistory = 8192
42 };
43
44 class DbObject;
45
46 struct DbQuery
47 {
48         int Type{0};
49         DbQueryCategory Category{DbCatInvalid};
50         String Table;
51         String IdColumn;
52         Dictionary::Ptr Fields;
53         Dictionary::Ptr WhereCriteria;
54         intrusive_ptr<DbObject> Object;
55         DbValue::Ptr NotificationInsertID;
56         bool ConfigUpdate{false};
57         bool StatusUpdate{false};
58         WorkQueuePriority Priority{PriorityNormal};
59
60         static void StaticInitialize();
61
62         static const std::map<String, int>& GetCategoryFilterMap();
63
64 private:
65         static std::map<String, int> m_CategoryFilterMap;
66 };
67
68 }
69
70 #endif /* DBQUERY_H */
71
72 #include "db_ido/dbobject.hpp"