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()