Mercurial > hg > orthanc
comparison OrthancServer/Sources/Database/SQLiteDatabaseWrapper.cpp @ 5455:176bc05f85f4 pg-transactions
DB: new Capabilities class to manage future new methods from DB plugins + Added IncrementGlobalProperty
author | Alain Mazy <am@osimis.io> |
---|---|
date | Thu, 07 Dec 2023 12:04:11 +0100 |
parents | 261ce0ed85e6 |
children | dceed5e3d6a9 |
comparison
equal
deleted
inserted
replaced
5454:099d45f49fe1 | 5455:176bc05f85f4 |
---|---|
298 } | 298 } |
299 | 299 |
300 boost::mutex::scoped_lock lock_; | 300 boost::mutex::scoped_lock lock_; |
301 IDatabaseListener& listener_; | 301 IDatabaseListener& listener_; |
302 SignalRemainingAncestor& signalRemainingAncestor_; | 302 SignalRemainingAncestor& signalRemainingAncestor_; |
303 const IDatabaseWrapper::Capabilities& dbCapabilities_; | |
303 | 304 |
304 public: | 305 public: |
305 TransactionBase(boost::mutex& mutex, | 306 TransactionBase(boost::mutex& mutex, |
306 SQLite::Connection& db, | 307 SQLite::Connection& db, |
307 IDatabaseListener& listener, | 308 IDatabaseListener& listener, |
308 SignalRemainingAncestor& signalRemainingAncestor) : | 309 SignalRemainingAncestor& signalRemainingAncestor, |
310 const IDatabaseWrapper::Capabilities& dbCapabilities) : | |
309 UnitTestsTransaction(db), | 311 UnitTestsTransaction(db), |
310 lock_(mutex), | 312 lock_(mutex), |
311 listener_(listener), | 313 listener_(listener), |
312 signalRemainingAncestor_(signalRemainingAncestor) | 314 signalRemainingAncestor_(signalRemainingAncestor), |
313 { | 315 dbCapabilities_(dbCapabilities) |
316 { | |
317 } | |
318 | |
319 virtual const IDatabaseWrapper::Capabilities& GetDatabaseCapabilities() const ORTHANC_OVERRIDE | |
320 { | |
321 return dbCapabilities_; | |
314 } | 322 } |
315 | 323 |
316 IDatabaseListener& GetListener() const | 324 IDatabaseListener& GetListener() const |
317 { | 325 { |
318 return listener_; | 326 return listener_; |
1135 while (s.Step()) | 1143 while (s.Step()) |
1136 { | 1144 { |
1137 target.insert(s.ColumnString(0)); | 1145 target.insert(s.ColumnString(0)); |
1138 } | 1146 } |
1139 } | 1147 } |
1148 | |
1140 }; | 1149 }; |
1141 | 1150 |
1142 | 1151 |
1143 class SQLiteDatabaseWrapper::SignalFileDeleted : public SQLite::IScalarFunction | 1152 class SQLiteDatabaseWrapper::SignalFileDeleted : public SQLite::IScalarFunction |
1144 { | 1153 { |
1232 int64_t initialDiskSize_; | 1241 int64_t initialDiskSize_; |
1233 | 1242 |
1234 public: | 1243 public: |
1235 ReadWriteTransaction(SQLiteDatabaseWrapper& that, | 1244 ReadWriteTransaction(SQLiteDatabaseWrapper& that, |
1236 IDatabaseListener& listener) : | 1245 IDatabaseListener& listener) : |
1237 TransactionBase(that.mutex_, that.db_, listener, *that.signalRemainingAncestor_), | 1246 TransactionBase(that.mutex_, that.db_, listener, *that.signalRemainingAncestor_, that.GetDatabaseCapabilities()), |
1238 that_(that), | 1247 that_(that), |
1239 transaction_(new SQLite::Transaction(that_.db_)) | 1248 transaction_(new SQLite::Transaction(that_.db_)) |
1240 { | 1249 { |
1241 if (that_.activeTransaction_ != NULL) | 1250 if (that_.activeTransaction_ != NULL) |
1242 { | 1251 { |
1286 SQLiteDatabaseWrapper& that_; | 1295 SQLiteDatabaseWrapper& that_; |
1287 | 1296 |
1288 public: | 1297 public: |
1289 ReadOnlyTransaction(SQLiteDatabaseWrapper& that, | 1298 ReadOnlyTransaction(SQLiteDatabaseWrapper& that, |
1290 IDatabaseListener& listener) : | 1299 IDatabaseListener& listener) : |
1291 TransactionBase(that.mutex_, that.db_, listener, *that.signalRemainingAncestor_), | 1300 TransactionBase(that.mutex_, that.db_, listener, *that.signalRemainingAncestor_, that.GetDatabaseCapabilities()), |
1292 that_(that) | 1301 that_(that) |
1293 { | 1302 { |
1294 if (that_.activeTransaction_ != NULL) | 1303 if (that_.activeTransaction_ != NULL) |
1295 { | 1304 { |
1296 throw OrthancException(ErrorCode_InternalError); | 1305 throw OrthancException(ErrorCode_InternalError); |
1320 | 1329 |
1321 | 1330 |
1322 SQLiteDatabaseWrapper::SQLiteDatabaseWrapper(const std::string& path) : | 1331 SQLiteDatabaseWrapper::SQLiteDatabaseWrapper(const std::string& path) : |
1323 activeTransaction_(NULL), | 1332 activeTransaction_(NULL), |
1324 signalRemainingAncestor_(NULL), | 1333 signalRemainingAncestor_(NULL), |
1325 version_(0) | 1334 version_(0), |
1335 dbCapabilities_(true, false /* TODO: implement revisions in SQLite */, true, false) | |
1326 { | 1336 { |
1327 db_.Open(path); | 1337 db_.Open(path); |
1328 } | 1338 } |
1329 | 1339 |
1330 | 1340 |
1331 SQLiteDatabaseWrapper::SQLiteDatabaseWrapper() : | 1341 SQLiteDatabaseWrapper::SQLiteDatabaseWrapper() : |
1332 activeTransaction_(NULL), | 1342 activeTransaction_(NULL), |
1333 signalRemainingAncestor_(NULL), | 1343 signalRemainingAncestor_(NULL), |
1334 version_(0) | 1344 version_(0), |
1345 dbCapabilities_(true, false /* TODO: implement revisions in SQLite */, true, false) | |
1335 { | 1346 { |
1336 db_.OpenInMemory(); | 1347 db_.OpenInMemory(); |
1337 } | 1348 } |
1338 | 1349 |
1339 SQLiteDatabaseWrapper::~SQLiteDatabaseWrapper() | 1350 SQLiteDatabaseWrapper::~SQLiteDatabaseWrapper() |