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,