comparison Framework/Common/DatabaseManager.h @ 12:41543239072d

transactions for storage area
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 09 Jul 2018 18:34:56 +0200
parents 7cea966b6829
children 9774802fd05f
comparison
equal deleted inserted replaced
11:0217486720b3 12:41543239072d
78 78
79 void CommitTransaction(); 79 void CommitTransaction();
80 80
81 void RollbackTransaction(); 81 void RollbackTransaction();
82 82
83
84 class Transaction : public boost::noncopyable
85 {
86 private:
87 boost::recursive_mutex::scoped_lock lock_;
88 DatabaseManager& manager_;
89 IDatabase& database_;
90
91 public:
92 Transaction(DatabaseManager& manager) :
93 lock_(manager.mutex_),
94 manager_(manager),
95 database_(manager.GetDatabase())
96 {
97 }
98
99 void Commit()
100 {
101 manager_.CommitTransaction();
102 }
103
104 void Rollback()
105 {
106 manager_.RollbackTransaction();
107 }
108
109 DatabaseManager& GetManager()
110 {
111 return manager_;
112 }
113
114 IDatabase& GetDatabase()
115 {
116 return database_;
117 }
118 };
119
120
83 class CachedStatement : public boost::noncopyable 121 class CachedStatement : public boost::noncopyable
84 { 122 {
85 private: 123 private:
86 boost::recursive_mutex::scoped_lock lock_; 124 boost::recursive_mutex::scoped_lock lock_;
87 DatabaseManager& manager_; 125 DatabaseManager& manager_;
88 StatementLocation location_; 126 StatementLocation location_;
89 IDatabase& database_;
90 ITransaction& transaction_; 127 ITransaction& transaction_;
91 IPrecompiledStatement* statement_; 128 IPrecompiledStatement* statement_;
92 std::auto_ptr<Query> query_; 129 std::auto_ptr<Query> query_;
93 std::auto_ptr<IResult> result_; 130 std::auto_ptr<IResult> result_;
131
132 void Setup(const char* sql);
94 133
95 IResult& GetResult() const; 134 IResult& GetResult() const;
96 135
97 public: 136 public:
98 CachedStatement(const StatementLocation& location, 137 CachedStatement(const StatementLocation& location,
99 DatabaseManager& manager, 138 DatabaseManager& manager,
139 const char* sql);
140
141 CachedStatement(const StatementLocation& location,
142 Transaction& transaction,
100 const char* sql); 143 const char* sql);
101 144
102 void SetReadOnly(bool readOnly); 145 void SetReadOnly(bool readOnly);
103 146
104 void SetParameterType(const std::string& parameter, 147 void SetParameterType(const std::string& parameter,
106 149
107 void Execute(); 150 void Execute();
108 151
109 void Execute(const Dictionary& parameters); 152 void Execute(const Dictionary& parameters);
110 153
111 IDatabase& GetDatabase()
112 {
113 return database_;
114 }
115
116 bool IsDone() const; 154 bool IsDone() const;
117 155
118 void Next(); 156 void Next();
119 157
120 size_t GetResultFieldsCount() const; 158 size_t GetResultFieldsCount() const;