Mercurial > hg > orthanc-databases
comparison Framework/Plugins/IndexBackend.cpp @ 385:346fe629d638 db-protobuf
clarifying types of since/limit
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 03 Apr 2023 11:19:19 +0200 |
parents | 9cde77ca9ad9 |
children | 3d6886f3e5b3 |
comparison
equal
deleted
inserted
replaced
384:e236be67e5f9 | 385:346fe629d638 |
---|---|
114 void IndexBackend::ReadChangesInternal(IDatabaseBackendOutput& output, | 114 void IndexBackend::ReadChangesInternal(IDatabaseBackendOutput& output, |
115 bool& done, | 115 bool& done, |
116 DatabaseManager& manager, | 116 DatabaseManager& manager, |
117 DatabaseManager::CachedStatement& statement, | 117 DatabaseManager::CachedStatement& statement, |
118 const Dictionary& args, | 118 const Dictionary& args, |
119 uint32_t maxResults) | 119 uint32_t limit) |
120 { | 120 { |
121 statement.Execute(args); | 121 statement.Execute(args); |
122 | 122 |
123 uint32_t count = 0; | 123 uint32_t count = 0; |
124 | 124 |
125 while (count < maxResults && | 125 while (count < limit && |
126 !statement.IsDone()) | 126 !statement.IsDone()) |
127 { | 127 { |
128 output.AnswerChange( | 128 output.AnswerChange( |
129 statement.ReadInteger64(0), | 129 statement.ReadInteger64(0), |
130 statement.ReadInteger32(1), | 130 statement.ReadInteger32(1), |
134 | 134 |
135 statement.Next(); | 135 statement.Next(); |
136 count++; | 136 count++; |
137 } | 137 } |
138 | 138 |
139 done = (count < maxResults || | 139 done = (count < limit || |
140 statement.IsDone()); | 140 statement.IsDone()); |
141 } | 141 } |
142 | 142 |
143 | 143 |
144 void IndexBackend::ReadExportedResourcesInternal(IDatabaseBackendOutput& output, | 144 void IndexBackend::ReadExportedResourcesInternal(IDatabaseBackendOutput& output, |
145 bool& done, | 145 bool& done, |
146 DatabaseManager::CachedStatement& statement, | 146 DatabaseManager::CachedStatement& statement, |
147 const Dictionary& args, | 147 const Dictionary& args, |
148 uint32_t maxResults) | 148 uint32_t limit) |
149 { | 149 { |
150 statement.Execute(args); | 150 statement.Execute(args); |
151 | 151 |
152 uint32_t count = 0; | 152 uint32_t count = 0; |
153 | 153 |
154 while (count < maxResults && | 154 while (count < limit && |
155 !statement.IsDone()) | 155 !statement.IsDone()) |
156 { | 156 { |
157 int64_t seq = statement.ReadInteger64(0); | 157 int64_t seq = statement.ReadInteger64(0); |
158 OrthancPluginResourceType resourceType = | 158 OrthancPluginResourceType resourceType = |
159 static_cast<OrthancPluginResourceType>(statement.ReadInteger32(1)); | 159 static_cast<OrthancPluginResourceType>(statement.ReadInteger32(1)); |
171 | 171 |
172 statement.Next(); | 172 statement.Next(); |
173 count++; | 173 count++; |
174 } | 174 } |
175 | 175 |
176 done = (count < maxResults || | 176 done = (count < limit || |
177 statement.IsDone()); | 177 statement.IsDone()); |
178 } | 178 } |
179 | 179 |
180 | 180 |
181 void IndexBackend::ClearDeletedFiles(DatabaseManager& manager) | 181 void IndexBackend::ClearDeletedFiles(DatabaseManager& manager) |
517 | 517 |
518 | 518 |
519 void IndexBackend::GetAllPublicIds(std::list<std::string>& target, | 519 void IndexBackend::GetAllPublicIds(std::list<std::string>& target, |
520 DatabaseManager& manager, | 520 DatabaseManager& manager, |
521 OrthancPluginResourceType resourceType, | 521 OrthancPluginResourceType resourceType, |
522 uint64_t since, | 522 int64_t since, |
523 uint64_t limit) | 523 uint32_t limit) |
524 { | 524 { |
525 std::string suffix; | 525 std::string suffix; |
526 if (manager.GetDialect() == Dialect_MSSQL) | 526 if (manager.GetDialect() == Dialect_MSSQL) |
527 { | 527 { |
528 suffix = "OFFSET ${since} ROWS FETCH FIRST ${limit} ROWS ONLY"; | 528 suffix = "OFFSET ${since} ROWS FETCH FIRST ${limit} ROWS ONLY"; |
554 /* Use GetOutput().AnswerChange() */ | 554 /* Use GetOutput().AnswerChange() */ |
555 void IndexBackend::GetChanges(IDatabaseBackendOutput& output, | 555 void IndexBackend::GetChanges(IDatabaseBackendOutput& output, |
556 bool& done /*out*/, | 556 bool& done /*out*/, |
557 DatabaseManager& manager, | 557 DatabaseManager& manager, |
558 int64_t since, | 558 int64_t since, |
559 uint32_t maxResults) | 559 uint32_t limit) |
560 { | 560 { |
561 std::string suffix; | 561 std::string suffix; |
562 if (manager.GetDialect() == Dialect_MSSQL) | 562 if (manager.GetDialect() == Dialect_MSSQL) |
563 { | 563 { |
564 suffix = "OFFSET 0 ROWS FETCH FIRST ${limit} ROWS ONLY"; | 564 suffix = "OFFSET 0 ROWS FETCH FIRST ${limit} ROWS ONLY"; |
577 statement.SetReadOnly(true); | 577 statement.SetReadOnly(true); |
578 statement.SetParameterType("limit", ValueType_Integer64); | 578 statement.SetParameterType("limit", ValueType_Integer64); |
579 statement.SetParameterType("since", ValueType_Integer64); | 579 statement.SetParameterType("since", ValueType_Integer64); |
580 | 580 |
581 Dictionary args; | 581 Dictionary args; |
582 args.SetIntegerValue("limit", maxResults + 1); | 582 args.SetIntegerValue("limit", limit + 1); |
583 args.SetIntegerValue("since", since); | 583 args.SetIntegerValue("since", since); |
584 | 584 |
585 ReadChangesInternal(output, done, manager, statement, args, maxResults); | 585 ReadChangesInternal(output, done, manager, statement, args, limit); |
586 } | 586 } |
587 | 587 |
588 | 588 |
589 void IndexBackend::GetChildrenInternalId(std::list<int64_t>& target /*out*/, | 589 void IndexBackend::GetChildrenInternalId(std::list<int64_t>& target /*out*/, |
590 DatabaseManager& manager, | 590 DatabaseManager& manager, |
627 /* Use GetOutput().AnswerExportedResource() */ | 627 /* Use GetOutput().AnswerExportedResource() */ |
628 void IndexBackend::GetExportedResources(IDatabaseBackendOutput& output, | 628 void IndexBackend::GetExportedResources(IDatabaseBackendOutput& output, |
629 bool& done /*out*/, | 629 bool& done /*out*/, |
630 DatabaseManager& manager, | 630 DatabaseManager& manager, |
631 int64_t since, | 631 int64_t since, |
632 uint32_t maxResults) | 632 uint32_t limit) |
633 { | 633 { |
634 std::string suffix; | 634 std::string suffix; |
635 if (manager.GetDialect() == Dialect_MSSQL) | 635 if (manager.GetDialect() == Dialect_MSSQL) |
636 { | 636 { |
637 suffix = "OFFSET 0 ROWS FETCH FIRST ${limit} ROWS ONLY"; | 637 suffix = "OFFSET 0 ROWS FETCH FIRST ${limit} ROWS ONLY"; |
648 statement.SetReadOnly(true); | 648 statement.SetReadOnly(true); |
649 statement.SetParameterType("limit", ValueType_Integer64); | 649 statement.SetParameterType("limit", ValueType_Integer64); |
650 statement.SetParameterType("since", ValueType_Integer64); | 650 statement.SetParameterType("since", ValueType_Integer64); |
651 | 651 |
652 Dictionary args; | 652 Dictionary args; |
653 args.SetIntegerValue("limit", maxResults + 1); | 653 args.SetIntegerValue("limit", limit + 1); |
654 args.SetIntegerValue("since", since); | 654 args.SetIntegerValue("since", since); |
655 | 655 |
656 ReadExportedResourcesInternal(output, done, statement, args, maxResults); | 656 ReadExportedResourcesInternal(output, done, statement, args, limit); |
657 } | 657 } |
658 | 658 |
659 | 659 |
660 /* Use GetOutput().AnswerChange() */ | 660 /* Use GetOutput().AnswerChange() */ |
661 void IndexBackend::GetLastChange(IDatabaseBackendOutput& output, | 661 void IndexBackend::GetLastChange(IDatabaseBackendOutput& output, |