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