Mercurial > hg > orthanc
comparison OrthancServer/SQLiteDatabaseWrapper.cpp @ 3038:53d583d2c775 db-changes
removing IDatabaseWrapper::LookupIdentifier()
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 19 Dec 2018 18:06:46 +0100 |
parents | 8fd203510d8b |
children | 3f986ce336c8 |
comparison
equal
deleted
inserted
replaced
3037:d23c84b1c0f5 | 3038:53d583d2c775 |
---|---|
1124 s.BindInt64(0, internalId); | 1124 s.BindInt64(0, internalId); |
1125 return s.Step(); | 1125 return s.Step(); |
1126 } | 1126 } |
1127 | 1127 |
1128 | 1128 |
1129 void SQLiteDatabaseWrapper::LookupIdentifier(std::list<int64_t>& target, | |
1130 ResourceType level, | |
1131 const DicomTag& tag, | |
1132 IdentifierConstraintType type, | |
1133 const std::string& value) | |
1134 { | |
1135 static const char* COMMON = ("SELECT d.id FROM DicomIdentifiers AS d, Resources AS r WHERE " | |
1136 "d.id = r.internalId AND r.resourceType=? AND " | |
1137 "d.tagGroup=? AND d.tagElement=? AND "); | |
1138 | |
1139 std::auto_ptr<SQLite::Statement> s; | |
1140 | |
1141 switch (type) | |
1142 { | |
1143 case IdentifierConstraintType_GreaterOrEqual: | |
1144 s.reset(new SQLite::Statement(db_, std::string(COMMON) + "d.value>=?")); | |
1145 break; | |
1146 | |
1147 case IdentifierConstraintType_SmallerOrEqual: | |
1148 s.reset(new SQLite::Statement(db_, std::string(COMMON) + "d.value<=?")); | |
1149 break; | |
1150 | |
1151 case IdentifierConstraintType_Wildcard: | |
1152 s.reset(new SQLite::Statement(db_, std::string(COMMON) + "d.value GLOB ?")); | |
1153 break; | |
1154 | |
1155 case IdentifierConstraintType_Equal: | |
1156 default: | |
1157 s.reset(new SQLite::Statement(db_, std::string(COMMON) + "d.value=?")); | |
1158 break; | |
1159 } | |
1160 | |
1161 assert(s.get() != NULL); | |
1162 | |
1163 s->BindInt(0, level); | |
1164 s->BindInt(1, tag.GetGroup()); | |
1165 s->BindInt(2, tag.GetElement()); | |
1166 s->BindString(3, value); | |
1167 | |
1168 target.clear(); | |
1169 | |
1170 while (s->Step()) | |
1171 { | |
1172 target.push_back(s->ColumnInt64(0)); | |
1173 } | |
1174 } | |
1175 | |
1176 | |
1177 void SQLiteDatabaseWrapper::LookupIdentifierRange(std::list<int64_t>& target, | |
1178 ResourceType level, | |
1179 const DicomTag& tag, | |
1180 const std::string& start, | |
1181 const std::string& end) | |
1182 { | |
1183 SQLite::Statement statement(db_, SQLITE_FROM_HERE, | |
1184 "SELECT d.id FROM DicomIdentifiers AS d, Resources AS r WHERE " | |
1185 "d.id = r.internalId AND r.resourceType=? AND " | |
1186 "d.tagGroup=? AND d.tagElement=? AND d.value>=? AND d.value<=?"); | |
1187 | |
1188 statement.BindInt(0, level); | |
1189 statement.BindInt(1, tag.GetGroup()); | |
1190 statement.BindInt(2, tag.GetElement()); | |
1191 statement.BindString(3, start); | |
1192 statement.BindString(4, end); | |
1193 | |
1194 target.clear(); | |
1195 | |
1196 while (statement.Step()) | |
1197 { | |
1198 target.push_back(statement.ColumnInt64(0)); | |
1199 } | |
1200 } | |
1201 | |
1202 | |
1203 bool SQLiteDatabaseWrapper::IsDiskSizeAbove(uint64_t threshold) | 1129 bool SQLiteDatabaseWrapper::IsDiskSizeAbove(uint64_t threshold) |
1204 { | 1130 { |
1205 return GetTotalCompressedSize() > threshold; | 1131 return GetTotalCompressedSize() > threshold; |
1206 } | 1132 } |
1207 | 1133 |