Mercurial > hg > orthanc-databases
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; |