comparison OrthancServer/DatabaseWrapper.cpp @ 204:7f4acf490179

changes api
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 28 Nov 2012 11:27:57 +0100
parents 9283552c25df
children 6ab754744446
comparison
equal deleted inserted replaced
203:9283552c25df 204:7f4acf490179
513 s.BindString(3, boost::posix_time::to_iso_string(date)); 513 s.BindString(3, boost::posix_time::to_iso_string(date));
514 s.Run(); 514 s.Run();
515 } 515 }
516 516
517 517
518 void DatabaseWrapper::GetChanges(Json::Value& target,
519 int64_t since,
520 unsigned int maxResults)
521 {
522 SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT * FROM Changes WHERE seq>? ORDER BY seq LIMIT ?");
523 s.BindInt(0, since);
524 s.BindInt(1, maxResults + 1);
525
526 Json::Value changes = Json::arrayValue;
527 int64_t last = 0;
528
529 while (changes.size() < maxResults && s.Step())
530 {
531 int64_t seq = s.ColumnInt(0);
532 ChangeType changeType = static_cast<ChangeType>(s.ColumnInt(1));
533 int64_t internalId = s.ColumnInt(2);
534 ResourceType resourceType = static_cast<ResourceType>(s.ColumnInt(3));
535 const std::string& date = s.ColumnString(4);
536
537 Json::Value item = Json::objectValue;
538 item["Seq"] = static_cast<int>(seq);
539 item["ChangeType"] = ToString(changeType);
540 item["ResourceType"] = ToString(resourceType);
541 item["ID"] = GetPublicId(internalId);
542 item["Date"] = date;
543 last = seq;
544
545 changes.append(item);
546 }
547
548 target = Json::objectValue;
549 target["Changes"] = changes;
550 target["PendingChanges"] = (changes.size() == maxResults && s.Step());
551 target["LastSeq"] = static_cast<int>(last);
552 }
553
554
518 void DatabaseWrapper::LogExportedInstance(const std::string& remoteModality, 555 void DatabaseWrapper::LogExportedInstance(const std::string& remoteModality,
519 DicomInstanceHasher& hasher, 556 DicomInstanceHasher& hasher,
520 const boost::posix_time::ptime& date) 557 const boost::posix_time::ptime& date)
521 { 558 {
522 SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO ExportedInstances VALUES(NULL, ?, ?, ?, ?, ?, ?)"); 559 SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO ExportedInstances VALUES(NULL, ?, ?, ?, ?, ?, ?)");