diff OrthancServer/DatabaseWrapper.cpp @ 237:16a4ac70bd8a

last change and export
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 30 Nov 2012 15:45:15 +0100
parents c11273198cef
children e4148b0ab1d0
line wrap: on
line diff
--- a/OrthancServer/DatabaseWrapper.cpp	Fri Nov 30 15:09:16 2012 +0100
+++ b/OrthancServer/DatabaseWrapper.cpp	Fri Nov 30 15:45:15 2012 +0100
@@ -509,16 +509,13 @@
   }
 
 
-  void DatabaseWrapper::GetChanges(Json::Value& target,
-                                   int64_t since,
-                                   unsigned int maxResults)
+  void DatabaseWrapper::GetChangesInternal(Json::Value& target,
+                                           SQLite::Statement& s,
+                                           int64_t since,
+                                           unsigned int maxResults)
   {
-    SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT * FROM Changes WHERE seq>? ORDER BY seq LIMIT ?");
-    s.BindInt(0, since);
-    s.BindInt(1, maxResults + 1);
-
     Json::Value changes = Json::arrayValue;
-    int64_t last = 0;
+    int64_t last = since;
 
     while (changes.size() < maxResults && s.Step())
     {
@@ -543,8 +540,25 @@
 
     target = Json::objectValue;
     target["Changes"] = changes;
-    target["PendingChanges"] = (changes.size() == maxResults && s.Step());
-    target["LastSeq"] = static_cast<int>(last);
+    target["Done"] = !(changes.size() == maxResults && s.Step());
+    target["Last"] = static_cast<int>(last);
+  }
+
+
+  void DatabaseWrapper::GetChanges(Json::Value& target,
+                                   int64_t since,
+                                   unsigned int maxResults)
+  {
+    SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT * FROM Changes WHERE seq>? ORDER BY seq LIMIT ?");
+    s.BindInt(0, since);
+    s.BindInt(1, maxResults + 1);
+    GetChangesInternal(target, s, since, maxResults);
+  }
+
+  void DatabaseWrapper::GetLastChange(Json::Value& target)
+  {
+    SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT * FROM Changes ORDER BY seq DESC LIMIT 1");
+    GetChangesInternal(target, s, 0, 1);
   }
 
 
@@ -574,16 +588,12 @@
 
 
   void DatabaseWrapper::GetExportedResources(Json::Value& target,
+                                             SQLite::Statement& s,
                                              int64_t since,
                                              unsigned int maxResults)
   {
-    SQLite::Statement s(db_, SQLITE_FROM_HERE, 
-                        "SELECT * FROM ExportedResources WHERE seq>? ORDER BY seq LIMIT ?");
-    s.BindInt(0, since);
-    s.BindInt(1, maxResults + 1);
-
     Json::Value changes = Json::arrayValue;
-    int64_t last = 0;
+    int64_t last = since;
 
     while (changes.size() < maxResults && s.Step())
     {
@@ -625,9 +635,29 @@
     }
 
     target = Json::objectValue;
-    target["Changes"] = changes;
-    target["PendingChanges"] = (changes.size() == maxResults && s.Step());
-    target["LastSeq"] = static_cast<int>(last);
+    target["Exports"] = changes;
+    target["Done"] = !(changes.size() == maxResults && s.Step());
+    target["Last"] = static_cast<int>(last);
+  }
+
+
+  void DatabaseWrapper::GetExportedResources(Json::Value& target,
+                                             int64_t since,
+                                             unsigned int maxResults)
+  {
+    SQLite::Statement s(db_, SQLITE_FROM_HERE, 
+                        "SELECT * FROM ExportedResources WHERE seq>? ORDER BY seq LIMIT ?");
+    s.BindInt(0, since);
+    s.BindInt(1, maxResults + 1);
+    GetExportedResources(target, s, since, maxResults);
+  }
+
+    
+  void DatabaseWrapper::GetLastExportedResource(Json::Value& target)
+  {
+    SQLite::Statement s(db_, SQLITE_FROM_HERE, 
+                        "SELECT * FROM ExportedResources ORDER BY seq DESC LIMIT 1");
+    GetExportedResources(target, s, 0, 1);
   }