Mercurial > hg > orthanc
annotate OrthancServer/Sources/Database/SQLiteDatabaseWrapper.cpp @ 5834:79a497908b04 attach-custom-data tip
merged find-refactoring -> attach-custom-data
author | Alain Mazy <am@orthanc.team> |
---|---|
date | Wed, 09 Oct 2024 11:06:20 +0200 |
parents | 023a99146dd0 7030fa489669 |
children |
rev | line source |
---|---|
183 | 1 /** |
2 * Orthanc - A Lightweight, RESTful DICOM Store | |
1900 | 3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
1288
6e7e5ed91c2d
upgrade to year 2015
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1286
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
5640
f7adfb22e20e
updated copyright, as Orthanc Team now replaces Osimis
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5521
diff
changeset
|
5 * Copyright (C) 2017-2023 Osimis S.A., Belgium |
f7adfb22e20e
updated copyright, as Orthanc Team now replaces Osimis
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5521
diff
changeset
|
6 * Copyright (C) 2024-2024 Orthanc Team SRL, Belgium |
5485
48b8dae6dc77
upgrade to year 2024
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5256
diff
changeset
|
7 * Copyright (C) 2021-2024 Sebastien Jodogne, ICTEAM UCLouvain, Belgium |
183 | 8 * |
9 * This program is free software: you can redistribute it and/or | |
10 * modify it under the terms of the GNU General Public License as | |
11 * published by the Free Software Foundation, either version 3 of the | |
12 * License, or (at your option) any later version. | |
13 * | |
14 * This program is distributed in the hope that it will be useful, but | |
15 * WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
17 * General Public License for more details. | |
18 * | |
19 * You should have received a copy of the GNU General Public License | |
20 * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
21 **/ | |
22 | |
23 | |
3093
2e1808b6146a
reorganization of folders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3080
diff
changeset
|
24 #include "../PrecompiledHeadersServer.h" |
3017
517fc4767ae0
renamed class DatabaseWrapper as SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2955
diff
changeset
|
25 #include "SQLiteDatabaseWrapper.h" |
183 | 26 |
4045 | 27 #include "../../../OrthancFramework/Sources/DicomFormat/DicomArray.h" |
28 #include "../../../OrthancFramework/Sources/Logging.h" | |
29 #include "../../../OrthancFramework/Sources/SQLite/Transaction.h" | |
3093
2e1808b6146a
reorganization of folders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3080
diff
changeset
|
30 #include "../Search/ISqlLookupFormatter.h" |
2e1808b6146a
reorganization of folders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3080
diff
changeset
|
31 #include "../ServerToolbox.h" |
5554
12d8a1a266e9
introduction of FindRequest and FindResponse
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5521
diff
changeset
|
32 #include "Compatibility/GenericFind.h" |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
33 #include "Compatibility/ICreateInstance.h" |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
34 #include "Compatibility/IGetChildrenMetadata.h" |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
35 #include "Compatibility/ILookupResourceAndParent.h" |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
36 #include "Compatibility/ISetResourcesContent.h" |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
37 #include "VoidDatabaseListener.h" |
3093
2e1808b6146a
reorganization of folders
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3080
diff
changeset
|
38 |
4032
058b5ade8acd
renaming embedded resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4031
diff
changeset
|
39 #include <OrthancServerResources.h> |
183 | 40 |
41 #include <stdio.h> | |
1247 | 42 #include <boost/lexical_cast.hpp> |
183 | 43 |
5084
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
44 static std::map<std::string, std::string> filesToDeleteCustomData; |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
45 |
183 | 46 namespace Orthanc |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
47 { |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
48 static std::string JoinRequestedMetadata(const FindRequest::ChildrenSpecification& childrenSpec) |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
49 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
50 std::set<std::string> metadataTypes; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
51 for (std::set<MetadataType>::const_iterator it = childrenSpec.GetMetadata().begin(); it != childrenSpec.GetMetadata().end(); ++it) |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
52 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
53 metadataTypes.insert(boost::lexical_cast<std::string>(*it)); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
54 } |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
55 std::string joinedMetadataTypes; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
56 Orthanc::Toolbox::JoinStrings(joinedMetadataTypes, metadataTypes, ", "); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
57 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
58 return joinedMetadataTypes; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
59 } |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
60 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
61 static std::string JoinRequestedTags(const FindRequest::ChildrenSpecification& childrenSpec) |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
62 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
63 // note: SQLite does not seem to support (tagGroup, tagElement) in ((x, y), (z, w)) in complex subqueries. |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
64 // Therefore, since we expect the requested tag list to be short, we write it as |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
65 // ((tagGroup = x AND tagElement = y ) OR (tagGroup = z AND tagElement = w)) |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
66 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
67 std::string sql = " ("; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
68 std::set<std::string> tags; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
69 for (std::set<DicomTag>::const_iterator it = childrenSpec.GetMainDicomTags().begin(); it != childrenSpec.GetMainDicomTags().end(); ++it) |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
70 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
71 tags.insert("(tagGroup = " + boost::lexical_cast<std::string>(it->GetGroup()) |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
72 + " AND tagElement = " + boost::lexical_cast<std::string>(it->GetElement()) + ")"); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
73 } |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
74 std::string joinedTags; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
75 Orthanc::Toolbox::JoinStrings(joinedTags, tags, " OR "); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
76 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
77 sql += joinedTags + ") "; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
78 return sql; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
79 } |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
80 |
5804
25df40a274fd
/changes: allowing filtering on multiple changes
Alain Mazy <am@orthanc.team>
parents:
5803
diff
changeset
|
81 static std::string JoinChanges(const std::set<ChangeType>& changeTypes) |
25df40a274fd
/changes: allowing filtering on multiple changes
Alain Mazy <am@orthanc.team>
parents:
5803
diff
changeset
|
82 { |
25df40a274fd
/changes: allowing filtering on multiple changes
Alain Mazy <am@orthanc.team>
parents:
5803
diff
changeset
|
83 std::set<std::string> changeTypesString; |
25df40a274fd
/changes: allowing filtering on multiple changes
Alain Mazy <am@orthanc.team>
parents:
5803
diff
changeset
|
84 for (std::set<ChangeType>::const_iterator it = changeTypes.begin(); it != changeTypes.end(); ++it) |
25df40a274fd
/changes: allowing filtering on multiple changes
Alain Mazy <am@orthanc.team>
parents:
5803
diff
changeset
|
85 { |
25df40a274fd
/changes: allowing filtering on multiple changes
Alain Mazy <am@orthanc.team>
parents:
5803
diff
changeset
|
86 changeTypesString.insert(boost::lexical_cast<std::string>(static_cast<uint32_t>(*it))); |
25df40a274fd
/changes: allowing filtering on multiple changes
Alain Mazy <am@orthanc.team>
parents:
5803
diff
changeset
|
87 } |
25df40a274fd
/changes: allowing filtering on multiple changes
Alain Mazy <am@orthanc.team>
parents:
5803
diff
changeset
|
88 |
25df40a274fd
/changes: allowing filtering on multiple changes
Alain Mazy <am@orthanc.team>
parents:
5803
diff
changeset
|
89 std::string joinedChangesTypes; |
25df40a274fd
/changes: allowing filtering on multiple changes
Alain Mazy <am@orthanc.team>
parents:
5803
diff
changeset
|
90 Orthanc::Toolbox::JoinStrings(joinedChangesTypes, changeTypesString, ", "); |
25df40a274fd
/changes: allowing filtering on multiple changes
Alain Mazy <am@orthanc.team>
parents:
5803
diff
changeset
|
91 |
25df40a274fd
/changes: allowing filtering on multiple changes
Alain Mazy <am@orthanc.team>
parents:
5803
diff
changeset
|
92 return joinedChangesTypes; |
25df40a274fd
/changes: allowing filtering on multiple changes
Alain Mazy <am@orthanc.team>
parents:
5803
diff
changeset
|
93 } |
25df40a274fd
/changes: allowing filtering on multiple changes
Alain Mazy <am@orthanc.team>
parents:
5803
diff
changeset
|
94 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
95 class SQLiteDatabaseWrapper::LookupFormatter : public ISqlLookupFormatter |
183 | 96 { |
4589
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
97 private: |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
98 std::list<std::string> values_; |
4589
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
99 |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
100 public: |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
101 virtual std::string GenerateParameter(const std::string& value) ORTHANC_OVERRIDE |
4589
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
102 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
103 values_.push_back(value); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
104 return "?"; |
4589
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
105 } |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
106 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
107 virtual std::string FormatResourceType(ResourceType level) ORTHANC_OVERRIDE |
4589
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
108 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
109 return boost::lexical_cast<std::string>(level); |
4589
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
110 } |
183 | 111 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
112 virtual std::string FormatWildcardEscape() ORTHANC_OVERRIDE |
4589
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
113 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
114 return "ESCAPE '\\'"; |
4589
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
115 } |
1158 | 116 |
5762
d52b3f394f69
FormatLimits (SQLServer needs custom code)
Alain Mazy <am@orthanc.team>
parents:
5758
diff
changeset
|
117 virtual std::string FormatLimits(uint64_t since, uint64_t count) ORTHANC_OVERRIDE |
d52b3f394f69
FormatLimits (SQLServer needs custom code)
Alain Mazy <am@orthanc.team>
parents:
5758
diff
changeset
|
118 { |
d52b3f394f69
FormatLimits (SQLServer needs custom code)
Alain Mazy <am@orthanc.team>
parents:
5758
diff
changeset
|
119 std::string sql; |
5774
f96abfe08946
implementation of specialized SQL commands in SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5772
diff
changeset
|
120 |
5762
d52b3f394f69
FormatLimits (SQLServer needs custom code)
Alain Mazy <am@orthanc.team>
parents:
5758
diff
changeset
|
121 if (count > 0) |
d52b3f394f69
FormatLimits (SQLServer needs custom code)
Alain Mazy <am@orthanc.team>
parents:
5758
diff
changeset
|
122 { |
d52b3f394f69
FormatLimits (SQLServer needs custom code)
Alain Mazy <am@orthanc.team>
parents:
5758
diff
changeset
|
123 sql += " LIMIT " + boost::lexical_cast<std::string>(count); |
d52b3f394f69
FormatLimits (SQLServer needs custom code)
Alain Mazy <am@orthanc.team>
parents:
5758
diff
changeset
|
124 } |
5774
f96abfe08946
implementation of specialized SQL commands in SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5772
diff
changeset
|
125 |
5762
d52b3f394f69
FormatLimits (SQLServer needs custom code)
Alain Mazy <am@orthanc.team>
parents:
5758
diff
changeset
|
126 if (since > 0) |
d52b3f394f69
FormatLimits (SQLServer needs custom code)
Alain Mazy <am@orthanc.team>
parents:
5758
diff
changeset
|
127 { |
5774
f96abfe08946
implementation of specialized SQL commands in SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5772
diff
changeset
|
128 if (count == 0) |
f96abfe08946
implementation of specialized SQL commands in SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5772
diff
changeset
|
129 { |
f96abfe08946
implementation of specialized SQL commands in SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5772
diff
changeset
|
130 sql += " LIMIT -1"; // In SQLite, "OFFSET" cannot appear without "LIMIT" |
f96abfe08946
implementation of specialized SQL commands in SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5772
diff
changeset
|
131 } |
f96abfe08946
implementation of specialized SQL commands in SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5772
diff
changeset
|
132 |
5762
d52b3f394f69
FormatLimits (SQLServer needs custom code)
Alain Mazy <am@orthanc.team>
parents:
5758
diff
changeset
|
133 sql += " OFFSET " + boost::lexical_cast<std::string>(since); |
d52b3f394f69
FormatLimits (SQLServer needs custom code)
Alain Mazy <am@orthanc.team>
parents:
5758
diff
changeset
|
134 } |
d52b3f394f69
FormatLimits (SQLServer needs custom code)
Alain Mazy <am@orthanc.team>
parents:
5758
diff
changeset
|
135 |
d52b3f394f69
FormatLimits (SQLServer needs custom code)
Alain Mazy <am@orthanc.team>
parents:
5758
diff
changeset
|
136 return sql; |
d52b3f394f69
FormatLimits (SQLServer needs custom code)
Alain Mazy <am@orthanc.team>
parents:
5758
diff
changeset
|
137 } |
d52b3f394f69
FormatLimits (SQLServer needs custom code)
Alain Mazy <am@orthanc.team>
parents:
5758
diff
changeset
|
138 |
4817
b8fcd331b4b3
added ISqlLookupFormatter::IsEscapeBrackets()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4627
diff
changeset
|
139 virtual bool IsEscapeBrackets() const ORTHANC_OVERRIDE |
b8fcd331b4b3
added ISqlLookupFormatter::IsEscapeBrackets()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4627
diff
changeset
|
140 { |
b8fcd331b4b3
added ISqlLookupFormatter::IsEscapeBrackets()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4627
diff
changeset
|
141 return false; |
b8fcd331b4b3
added ISqlLookupFormatter::IsEscapeBrackets()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4627
diff
changeset
|
142 } |
b8fcd331b4b3
added ISqlLookupFormatter::IsEscapeBrackets()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4627
diff
changeset
|
143 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
144 void Bind(SQLite::Statement& statement) const |
4589
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
145 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
146 size_t pos = 0; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
147 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
148 for (std::list<std::string>::const_iterator |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
149 it = values_.begin(); it != values_.end(); ++it, pos++) |
1158 | 150 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
151 statement.BindString(pos, *it); |
1158 | 152 } |
4589
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
153 } |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
154 }; |
1158 | 155 |
4589
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
156 |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
157 class SQLiteDatabaseWrapper::SignalRemainingAncestor : public SQLite::IScalarFunction |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
158 { |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
159 private: |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
160 bool hasRemainingAncestor_; |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
161 std::string remainingPublicId_; |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
162 ResourceType remainingType_; |
660 | 163 |
4589
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
164 public: |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
165 SignalRemainingAncestor() : |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
166 hasRemainingAncestor_(false) |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
167 { |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
168 } |
183 | 169 |
4589
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
170 void Reset() |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
171 { |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
172 hasRemainingAncestor_ = false; |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
173 } |
183 | 174 |
4589
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
175 virtual const char* GetName() const ORTHANC_OVERRIDE |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
176 { |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
177 return "SignalRemainingAncestor"; |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
178 } |
183 | 179 |
4589
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
180 virtual unsigned int GetCardinality() const ORTHANC_OVERRIDE |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
181 { |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
182 return 2; |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
183 } |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
184 |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
185 virtual void Compute(SQLite::FunctionContext& context) ORTHANC_OVERRIDE |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
186 { |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
187 CLOG(TRACE, SQLITE) << "There exists a remaining ancestor with public ID \"" |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
188 << context.GetStringValue(0) << "\" of type " |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
189 << context.GetIntValue(1); |
183 | 190 |
4589
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
191 if (!hasRemainingAncestor_ || |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
192 remainingType_ >= context.GetIntValue(1)) |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
193 { |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
194 hasRemainingAncestor_ = true; |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
195 remainingPublicId_ = context.GetStringValue(0); |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
196 remainingType_ = static_cast<ResourceType>(context.GetIntValue(1)); |
183 | 197 } |
4589
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
198 } |
183 | 199 |
4589
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
200 bool HasRemainingAncestor() const |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
201 { |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
202 return hasRemainingAncestor_; |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
203 } |
183 | 204 |
4589
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
205 const std::string& GetRemainingAncestorId() const |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
206 { |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
207 assert(hasRemainingAncestor_); |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
208 return remainingPublicId_; |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
209 } |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
210 |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
211 ResourceType GetRemainingAncestorType() const |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
212 { |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
213 assert(hasRemainingAncestor_); |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
214 return remainingType_; |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
215 } |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
216 }; |
183 | 217 |
218 | |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
219 class SQLiteDatabaseWrapper::TransactionBase : |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
220 public SQLiteDatabaseWrapper::UnitTestsTransaction, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
221 public Compatibility::ICreateInstance, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
222 public Compatibility::IGetChildrenMetadata, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
223 public Compatibility::ILookupResourceAndParent, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
224 public Compatibility::ISetResourcesContent |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
225 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
226 private: |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
227 void AnswerLookup(std::list<std::string>& resourcesId, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
228 std::list<std::string>& instancesId, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
229 ResourceType level) |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
230 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
231 resourcesId.clear(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
232 instancesId.clear(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
233 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
234 std::unique_ptr<SQLite::Statement> statement; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
235 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
236 switch (level) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
237 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
238 case ResourceType_Patient: |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
239 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
240 statement.reset( |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
241 new SQLite::Statement( |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
242 db_, SQLITE_FROM_HERE, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
243 "SELECT patients.publicId, instances.publicID FROM Lookup AS patients " |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
244 "INNER JOIN Resources studies ON patients.internalId=studies.parentId " |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
245 "INNER JOIN Resources series ON studies.internalId=series.parentId " |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
246 "INNER JOIN Resources instances ON series.internalId=instances.parentId " |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
247 "GROUP BY patients.publicId")); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
248 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
249 break; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
250 } |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
251 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
252 case ResourceType_Study: |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
253 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
254 statement.reset( |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
255 new SQLite::Statement( |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
256 db_, SQLITE_FROM_HERE, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
257 "SELECT studies.publicId, instances.publicID FROM Lookup AS studies " |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
258 "INNER JOIN Resources series ON studies.internalId=series.parentId " |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
259 "INNER JOIN Resources instances ON series.internalId=instances.parentId " |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
260 "GROUP BY studies.publicId")); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
261 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
262 break; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
263 } |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
264 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
265 case ResourceType_Series: |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
266 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
267 statement.reset( |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
268 new SQLite::Statement( |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
269 db_, SQLITE_FROM_HERE, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
270 "SELECT series.publicId, instances.publicID FROM Lookup AS series " |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
271 "INNER JOIN Resources instances ON series.internalId=instances.parentId " |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
272 "GROUP BY series.publicId")); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
273 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
274 break; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
275 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
276 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
277 case ResourceType_Instance: |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
278 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
279 statement.reset( |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
280 new SQLite::Statement( |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
281 db_, SQLITE_FROM_HERE, "SELECT publicId, publicId FROM Lookup")); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
282 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
283 break; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
284 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
285 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
286 default: |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
287 throw OrthancException(ErrorCode_InternalError); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
288 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
289 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
290 assert(statement.get() != NULL); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
291 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
292 while (statement->Step()) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
293 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
294 resourcesId.push_back(statement->ColumnString(0)); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
295 instancesId.push_back(statement->ColumnString(1)); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
296 } |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
297 } |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
298 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
299 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
300 void ClearTable(const std::string& tableName) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
301 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
302 db_.Execute("DELETE FROM " + tableName); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
303 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
304 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
305 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
306 void GetChangesInternal(std::list<ServerIndexChange>& target, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
307 bool& done, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
308 SQLite::Statement& s, |
5553
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
309 uint32_t limit, |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
310 bool returnFirstResults) // the statement usually returns limit+1 results while we only need the limit results -> we need to know which ones to return, the firsts or the lasts |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
311 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
312 target.clear(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
313 |
5553
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
314 while (s.Step()) |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
315 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
316 int64_t seq = s.ColumnInt64(0); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
317 ChangeType changeType = static_cast<ChangeType>(s.ColumnInt(1)); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
318 ResourceType resourceType = static_cast<ResourceType>(s.ColumnInt(3)); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
319 const std::string& date = s.ColumnString(4); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
320 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
321 int64_t internalId = s.ColumnInt64(2); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
322 std::string publicId = GetPublicId(internalId); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
323 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
324 target.push_back(ServerIndexChange(seq, changeType, resourceType, publicId, date)); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
325 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
326 |
5553
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
327 done = target.size() <= limit; // 'done' means "there are no more other changes of this type in that direction (depending on since/to)" |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
328 |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
329 // if we have retrieved more changes than requested -> cleanup |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
330 if (target.size() > limit) |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
331 { |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
332 assert(target.size() == limit+1); // the statement should only request 1 element more |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
333 |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
334 if (returnFirstResults) |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
335 { |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
336 target.pop_back(); |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
337 } |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
338 else |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
339 { |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
340 target.pop_front(); |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
341 } |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
342 } |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
343 } |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
344 |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
345 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
346 void GetExportedResourcesInternal(std::list<ExportedResource>& target, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
347 bool& done, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
348 SQLite::Statement& s, |
5213
055428d92772
clarifying types of since/limit in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5193
diff
changeset
|
349 uint32_t limit) |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
350 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
351 target.clear(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
352 |
5213
055428d92772
clarifying types of since/limit in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5193
diff
changeset
|
353 while (target.size() < limit && s.Step()) |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
354 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
355 int64_t seq = s.ColumnInt64(0); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
356 ResourceType resourceType = static_cast<ResourceType>(s.ColumnInt(1)); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
357 std::string publicId = s.ColumnString(2); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
358 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
359 ExportedResource resource(seq, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
360 resourceType, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
361 publicId, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
362 s.ColumnString(3), // modality |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
363 s.ColumnString(8), // date |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
364 s.ColumnString(4), // patient ID |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
365 s.ColumnString(5), // study instance UID |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
366 s.ColumnString(6), // series instance UID |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
367 s.ColumnString(7)); // sop instance UID |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
368 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
369 target.push_back(resource); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
370 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
371 |
5213
055428d92772
clarifying types of since/limit in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5193
diff
changeset
|
372 done = !(target.size() == limit && s.Step()); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
373 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
374 |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
375 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
376 void GetChildren(std::list<std::string>& childrenPublicIds, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
377 int64_t id) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
378 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
379 SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT publicId FROM Resources WHERE parentId=?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
380 s.BindInt64(0, id); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
381 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
382 childrenPublicIds.clear(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
383 while (s.Step()) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
384 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
385 childrenPublicIds.push_back(s.ColumnString(0)); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
386 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
387 } |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
388 |
4594
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
389 boost::mutex::scoped_lock lock_; |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
390 IDatabaseListener& listener_; |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
391 SignalRemainingAncestor& signalRemainingAncestor_; |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
392 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
393 public: |
4594
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
394 TransactionBase(boost::mutex& mutex, |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
395 SQLite::Connection& db, |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
396 IDatabaseListener& listener, |
5521
0d0f8788884a
removed unused variable dbCapabilities_ in SQLiteDatabaseWrapper::TransactionBase
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5519
diff
changeset
|
397 SignalRemainingAncestor& signalRemainingAncestor) : |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
398 UnitTestsTransaction(db), |
4594
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
399 lock_(mutex), |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
400 listener_(listener), |
5521
0d0f8788884a
removed unused variable dbCapabilities_ in SQLiteDatabaseWrapper::TransactionBase
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5519
diff
changeset
|
401 signalRemainingAncestor_(signalRemainingAncestor) |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
402 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
403 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
404 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
405 IDatabaseListener& GetListener() const |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
406 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
407 return listener_; |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
408 } |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
409 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
410 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
411 virtual void AddAttachment(int64_t id, |
4627
f7d5372b59b3
handling revisions of attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4623
diff
changeset
|
412 const FileInfo& attachment, |
f7d5372b59b3
handling revisions of attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4623
diff
changeset
|
413 int64_t revision) ORTHANC_OVERRIDE |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
414 { |
5080
d7274e43ea7c
allow plugins to store a customData in the Attachments table to e.g. store custom paths without requiring an external DB
Alain Mazy <am@osimis.io>
parents:
5057
diff
changeset
|
415 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
5084
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
416 "INSERT INTO AttachedFiles (id, fileType, uuid, compressedSize, uncompressedSize, compressionType, uncompressedMD5, compressedMD5, revision, customData) " |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
417 "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
418 s.BindInt64(0, id); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
419 s.BindInt(1, attachment.GetContentType()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
420 s.BindString(2, attachment.GetUuid()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
421 s.BindInt64(3, attachment.GetCompressedSize()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
422 s.BindInt64(4, attachment.GetUncompressedSize()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
423 s.BindInt(5, attachment.GetCompressionType()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
424 s.BindString(6, attachment.GetUncompressedMD5()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
425 s.BindString(7, attachment.GetCompressedMD5()); |
5084
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
426 s.BindInt(8, revision); |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
427 s.BindString(9, attachment.GetCustomData()); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
428 s.Run(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
429 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
430 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
431 virtual void ApplyLookupResources(std::list<std::string>& resourcesId, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
432 std::list<std::string>* instancesId, |
5828 | 433 const DatabaseDicomTagConstraints& lookup, |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
434 ResourceType queryLevel, |
5248
a7d95f951f8a
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5227
diff
changeset
|
435 const std::set<std::string>& labels, |
a7d95f951f8a
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5227
diff
changeset
|
436 LabelsConstraint labelsConstraint, |
5213
055428d92772
clarifying types of since/limit in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5193
diff
changeset
|
437 uint32_t limit) ORTHANC_OVERRIDE |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
438 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
439 LookupFormatter formatter; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
440 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
441 std::string sql; |
5248
a7d95f951f8a
replaced "WithLabels" and "WithoutLabels", by "Labels" and "LabelsConstraint"
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5227
diff
changeset
|
442 LookupFormatter::Apply(sql, formatter, lookup, queryLevel, labels, labelsConstraint, limit); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
443 |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
444 sql = "CREATE TEMPORARY TABLE Lookup AS " + sql; // TODO-FIND: use a CTE (or is this method obsolete ?) |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
445 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
446 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
447 SQLite::Statement s(db_, SQLITE_FROM_HERE, "DROP TABLE IF EXISTS Lookup"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
448 s.Run(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
449 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
450 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
451 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
452 SQLite::Statement statement(db_, sql); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
453 formatter.Bind(statement); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
454 statement.Run(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
455 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
456 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
457 if (instancesId != NULL) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
458 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
459 AnswerLookup(resourcesId, *instancesId, queryLevel); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
460 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
461 else |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
462 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
463 resourcesId.clear(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
464 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
465 SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT publicId FROM Lookup"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
466 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
467 while (s.Step()) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
468 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
469 resourcesId.push_back(s.ColumnString(0)); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
470 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
471 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
472 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
473 |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
474 #define C0_QUERY_ID 0 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
475 #define C1_INTERNAL_ID 1 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
476 #define C2_ROW_NUMBER 2 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
477 #define C3_STRING_1 3 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
478 #define C4_STRING_2 4 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
479 #define C5_STRING_3 5 |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
480 #define C6_STRING_4 6 |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
481 #define C7_INT_1 7 |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
482 #define C8_INT_2 8 |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
483 #define C9_BIG_INT_1 9 |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
484 #define C10_BIG_INT_2 10 |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
485 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
486 #define QUERY_LOOKUP 1 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
487 #define QUERY_MAIN_DICOM_TAGS 2 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
488 #define QUERY_ATTACHMENTS 3 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
489 #define QUERY_METADATA 4 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
490 #define QUERY_LABELS 5 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
491 #define QUERY_PARENT_MAIN_DICOM_TAGS 10 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
492 #define QUERY_PARENT_IDENTIFIER 11 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
493 #define QUERY_PARENT_METADATA 12 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
494 #define QUERY_GRAND_PARENT_MAIN_DICOM_TAGS 15 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
495 #define QUERY_GRAND_PARENT_METADATA 16 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
496 #define QUERY_CHILDREN_IDENTIFIERS 20 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
497 #define QUERY_CHILDREN_MAIN_DICOM_TAGS 21 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
498 #define QUERY_CHILDREN_METADATA 22 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
499 #define QUERY_GRAND_CHILDREN_IDENTIFIERS 30 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
500 #define QUERY_GRAND_CHILDREN_MAIN_DICOM_TAGS 31 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
501 #define QUERY_GRAND_CHILDREN_METADATA 32 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
502 #define QUERY_GRAND_GRAND_CHILDREN_IDENTIFIERS 40 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
503 #define QUERY_ONE_INSTANCE_IDENTIFIER 50 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
504 #define QUERY_ONE_INSTANCE_METADATA 51 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
505 #define QUERY_ONE_INSTANCE_ATTACHMENTS 52 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
506 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
507 #define STRINGIFY(x) #x |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
508 #define TOSTRING(x) STRINGIFY(x) |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
509 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
510 |
5748
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
511 virtual void ExecuteFind(FindResponse& response, |
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
512 const FindRequest& request, |
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
513 const Capabilities& capabilities) ORTHANC_OVERRIDE |
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
514 { |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
515 LookupFormatter formatter; |
5748
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
516 std::string sql; |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
517 const ResourceType requestLevel = request.GetLevel(); |
5748
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
518 |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
519 std::string lookupSql; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
520 LookupFormatter::Apply(lookupSql, formatter, request); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
521 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
522 // base query, retrieve the ordered internalId and publicId of the selected resources |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
523 sql = "WITH Lookup AS (" + lookupSql + ") "; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
524 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
525 // in SQLite, all CTEs must be created at the beginning of the query, you can not define local CTE inside subqueries |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
526 // need one instance info ? (part 1: create the CTE) |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
527 if (request.GetLevel() != ResourceType_Instance && |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
528 request.IsRetrieveOneInstanceMetadataAndAttachments()) |
5748
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
529 { |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
530 // Here, we create a nested CTE 'OneInstance' with one instance ID to join with metadata and main |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
531 sql += ", OneInstance AS"; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
532 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
533 switch (requestLevel) |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
534 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
535 case ResourceType_Series: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
536 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
537 sql+= " (SELECT Lookup.internalId AS parentInternalId, childLevel.publicId AS instancePublicId, childLevel.internalId AS instanceInternalId" |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
538 " FROM Resources AS childLevel " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
539 " INNER JOIN Lookup ON childLevel.parentId = Lookup.internalId GROUP BY Lookup.internalId) "; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
540 break; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
541 } |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
542 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
543 case ResourceType_Study: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
544 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
545 sql+= " (SELECT Lookup.internalId AS parentInternalId, grandChildLevel.publicId AS instancePublicId, grandChildLevel.internalId AS instanceInternalId" |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
546 " FROM Resources AS grandChildLevel " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
547 " INNER JOIN Resources childLevel ON grandChildLevel.parentId = childLevel.internalId " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
548 " INNER JOIN Lookup ON childLevel.parentId = Lookup.internalId GROUP BY Lookup.internalId) "; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
549 break; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
550 } |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
551 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
552 case ResourceType_Patient: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
553 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
554 sql+= " (SELECT Lookup.internalId AS parentInternalId, grandGrandChildLevel.publicId AS instancePublicId, grandGrandChildLevel.internalId AS instanceInternalId" |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
555 " FROM Resources AS grandGrandChildLevel " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
556 " INNER JOIN Resources grandChildLevel ON grandGrandChildLevel.parentId = grandChildLevel.internalId " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
557 " INNER JOIN Resources childLevel ON grandChildLevel.parentId = childLevel.internalId " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
558 " INNER JOIN Lookup ON childLevel.parentId = Lookup.internalId GROUP BY Lookup.internalId) "; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
559 break; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
560 } |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
561 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
562 default: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
563 throw OrthancException(ErrorCode_InternalError); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
564 } |
5748
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
565 } |
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
566 |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
567 sql += "SELECT " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
568 " " TOSTRING(QUERY_LOOKUP) " AS c0_queryId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
569 " Lookup.internalId AS c1_internalId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
570 " Lookup.rowNumber AS c2_rowNumber, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
571 " Lookup.publicId AS c3_string1, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
572 " NULL AS c4_string2, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
573 " NULL AS c5_string3, " |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
574 " NULL AS c6_string4, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
575 " NULL AS c7_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
576 " NULL AS c8_int2, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
577 " NULL AS c9_big_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
578 " NULL AS c10_big_int2 " |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
579 " FROM Lookup "; |
5751
5d78e5cafabc
ExtendedFind in SQLite continued (all basic integration tests OK)
Alain Mazy <am@orthanc.team>
parents:
5750
diff
changeset
|
580 |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
581 // need one instance info ? (part 2: execute the queries) |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
582 if (request.GetLevel() != ResourceType_Instance && |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
583 request.IsRetrieveOneInstanceMetadataAndAttachments()) |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
584 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
585 sql += " UNION SELECT" |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
586 " " TOSTRING(QUERY_ONE_INSTANCE_IDENTIFIER) " AS c0_queryId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
587 " parentInternalId AS c1_internalId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
588 " NULL AS c2_rowNumber, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
589 " instancePublicId AS c3_string1, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
590 " NULL AS c4_string2, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
591 " NULL AS c5_string3, " |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
592 " NULL AS c6_string4, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
593 " NULL AS c7_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
594 " NULL AS c8_int2, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
595 " instanceInternalId AS c9_big_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
596 " NULL AS c10_big_int2 " |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
597 " FROM OneInstance "; |
5748
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
598 |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
599 sql += " UNION SELECT" |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
600 " " TOSTRING(QUERY_ONE_INSTANCE_METADATA) " AS c0_queryId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
601 " parentInternalId AS c1_internalId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
602 " NULL AS c2_rowNumber, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
603 " Metadata.value AS c3_string1, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
604 " NULL AS c4_string2, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
605 " NULL AS c5_string3, " |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
606 " NULL AS c6_string4, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
607 " Metadata.type AS c7_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
608 " NULL AS c8_int2, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
609 " NULL AS c9_big_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
610 " NULL AS c10_big_int2 " |
5803
e219e272650d
fix retrieval of grandchildren info + cleanup
Alain Mazy <am@orthanc.team>
parents:
5796
diff
changeset
|
611 " FROM OneInstance " |
e219e272650d
fix retrieval of grandchildren info + cleanup
Alain Mazy <am@orthanc.team>
parents:
5796
diff
changeset
|
612 " INNER JOIN Metadata ON Metadata.id = OneInstance.instanceInternalId "; |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
613 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
614 sql += " UNION SELECT" |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
615 " " TOSTRING(QUERY_ONE_INSTANCE_ATTACHMENTS) " AS c0_queryId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
616 " parentInternalId AS c1_internalId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
617 " NULL AS c2_rowNumber, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
618 " uuid AS c3_string1, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
619 " uncompressedMD5 AS c4_string2, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
620 " compressedMD5 AS c5_string3, " |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
621 " customData AS c6_string4, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
622 " fileType AS c7_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
623 " compressionType AS c8_int2, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
624 " compressedSize AS c9_big_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
625 " uncompressedSize AS c10_big_int2 " |
5803
e219e272650d
fix retrieval of grandchildren info + cleanup
Alain Mazy <am@orthanc.team>
parents:
5796
diff
changeset
|
626 " FROM OneInstance " |
e219e272650d
fix retrieval of grandchildren info + cleanup
Alain Mazy <am@orthanc.team>
parents:
5796
diff
changeset
|
627 " INNER JOIN AttachedFiles ON AttachedFiles.id = OneInstance.instanceInternalId "; |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
628 |
5748
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
629 } |
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
630 |
5751
5d78e5cafabc
ExtendedFind in SQLite continued (all basic integration tests OK)
Alain Mazy <am@orthanc.team>
parents:
5750
diff
changeset
|
631 // need MainDicomTags from resource ? |
5748
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
632 if (request.IsRetrieveMainDicomTags()) |
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
633 { |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
634 sql += "UNION SELECT " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
635 " " TOSTRING(QUERY_MAIN_DICOM_TAGS) " AS c0_queryId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
636 " Lookup.internalId AS c1_internalId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
637 " NULL AS c2_rowNumber, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
638 " value AS c3_string1, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
639 " NULL AS c4_string2, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
640 " NULL AS c5_string3, " |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
641 " NULL AS c6_string4, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
642 " tagGroup AS c7_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
643 " tagElement AS c8_int2, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
644 " NULL AS c9_big_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
645 " NULL AS c10_big_int2 " |
5803
e219e272650d
fix retrieval of grandchildren info + cleanup
Alain Mazy <am@orthanc.team>
parents:
5796
diff
changeset
|
646 "FROM Lookup " |
e219e272650d
fix retrieval of grandchildren info + cleanup
Alain Mazy <am@orthanc.team>
parents:
5796
diff
changeset
|
647 "INNER JOIN MainDicomTags ON MainDicomTags.id = Lookup.internalId "; |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
648 } |
5748
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
649 |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
650 // need resource metadata ? |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
651 if (request.IsRetrieveMetadata()) |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
652 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
653 sql += "UNION SELECT " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
654 " " TOSTRING(QUERY_METADATA) " AS c0_queryId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
655 " Lookup.internalId AS c1_internalId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
656 " NULL AS c2_rowNumber, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
657 " value AS c3_string1, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
658 " NULL AS c4_string2, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
659 " NULL AS c5_string3, " |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
660 " NULL AS c6_string4, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
661 " type AS c7_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
662 " NULL AS c8_int2, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
663 " NULL AS c9_big_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
664 " NULL AS c10_big_int2 " |
5803
e219e272650d
fix retrieval of grandchildren info + cleanup
Alain Mazy <am@orthanc.team>
parents:
5796
diff
changeset
|
665 "FROM Lookup " |
e219e272650d
fix retrieval of grandchildren info + cleanup
Alain Mazy <am@orthanc.team>
parents:
5796
diff
changeset
|
666 "INNER JOIN Metadata ON Metadata.id = Lookup.internalId "; |
5748
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
667 } |
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
668 |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
669 // need resource attachments ? |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
670 if (request.IsRetrieveAttachments()) |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
671 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
672 sql += "UNION SELECT " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
673 " " TOSTRING(QUERY_ATTACHMENTS) " AS c0_queryId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
674 " Lookup.internalId AS c1_internalId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
675 " NULL AS c2_rowNumber, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
676 " uuid AS c3_string1, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
677 " uncompressedMD5 AS c4_string2, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
678 " compressedMD5 AS c5_string3, " |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
679 " customData AS c6_string4, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
680 " fileType AS c7_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
681 " compressionType AS c8_int2, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
682 " compressedSize AS c9_big_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
683 " uncompressedSize AS c10_big_int2 " |
5803
e219e272650d
fix retrieval of grandchildren info + cleanup
Alain Mazy <am@orthanc.team>
parents:
5796
diff
changeset
|
684 "FROM Lookup " |
e219e272650d
fix retrieval of grandchildren info + cleanup
Alain Mazy <am@orthanc.team>
parents:
5796
diff
changeset
|
685 "INNER JOIN AttachedFiles ON AttachedFiles.id = Lookup.internalId "; |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
686 } |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
687 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
688 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
689 // need resource labels ? |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
690 if (request.IsRetrieveLabels()) |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
691 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
692 sql += "UNION SELECT " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
693 " " TOSTRING(QUERY_LABELS) " AS c0_queryId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
694 " Lookup.internalId AS c1_internalId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
695 " NULL AS c2_rowNumber, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
696 " label AS c3_string1, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
697 " NULL AS c4_string2, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
698 " NULL AS c5_string3, " |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
699 " NULL AS c6_string4, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
700 " NULL AS c7_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
701 " NULL AS c8_int2, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
702 " NULL AS c9_big_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
703 " NULL AS c10_big_int2 " |
5803
e219e272650d
fix retrieval of grandchildren info + cleanup
Alain Mazy <am@orthanc.team>
parents:
5796
diff
changeset
|
704 "FROM Lookup " |
e219e272650d
fix retrieval of grandchildren info + cleanup
Alain Mazy <am@orthanc.team>
parents:
5796
diff
changeset
|
705 "INNER JOIN Labels ON Labels.id = Lookup.internalId "; |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
706 } |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
707 |
5790
a3d283f61304
improved handling of DicomSequences in parent
Alain Mazy <am@orthanc.team>
parents:
5782
diff
changeset
|
708 if (requestLevel > ResourceType_Patient) |
5750
f39406a9eda4
ExtendedFind in SQLite continued (6 tests still failing)
Alain Mazy <am@orthanc.team>
parents:
5748
diff
changeset
|
709 { |
5790
a3d283f61304
improved handling of DicomSequences in parent
Alain Mazy <am@orthanc.team>
parents:
5782
diff
changeset
|
710 // need MainDicomTags from parent ? |
a3d283f61304
improved handling of DicomSequences in parent
Alain Mazy <am@orthanc.team>
parents:
5782
diff
changeset
|
711 if (request.GetParentSpecification(static_cast<ResourceType>(requestLevel - 1)).IsRetrieveMainDicomTags()) |
a3d283f61304
improved handling of DicomSequences in parent
Alain Mazy <am@orthanc.team>
parents:
5782
diff
changeset
|
712 { |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
713 sql += "UNION SELECT " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
714 " " TOSTRING(QUERY_PARENT_MAIN_DICOM_TAGS) " AS c0_queryId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
715 " Lookup.internalId AS c1_internalId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
716 " NULL AS c2_rowNumber, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
717 " value AS c3_string1, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
718 " NULL AS c4_string2, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
719 " NULL AS c5_string3, " |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
720 " NULL AS c6_string4, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
721 " tagGroup AS c7_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
722 " tagElement AS c8_int2, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
723 " NULL AS c9_big_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
724 " NULL AS c10_big_int2 " |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
725 "FROM Lookup " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
726 "INNER JOIN Resources currentLevel ON Lookup.internalId = currentLevel.internalId " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
727 "INNER JOIN MainDicomTags ON MainDicomTags.id = currentLevel.parentId "; |
5790
a3d283f61304
improved handling of DicomSequences in parent
Alain Mazy <am@orthanc.team>
parents:
5782
diff
changeset
|
728 } |
a3d283f61304
improved handling of DicomSequences in parent
Alain Mazy <am@orthanc.team>
parents:
5782
diff
changeset
|
729 |
a3d283f61304
improved handling of DicomSequences in parent
Alain Mazy <am@orthanc.team>
parents:
5782
diff
changeset
|
730 // need metadata from parent ? |
a3d283f61304
improved handling of DicomSequences in parent
Alain Mazy <am@orthanc.team>
parents:
5782
diff
changeset
|
731 if (request.GetParentSpecification(static_cast<ResourceType>(requestLevel - 1)).IsRetrieveMetadata()) |
5750
f39406a9eda4
ExtendedFind in SQLite continued (6 tests still failing)
Alain Mazy <am@orthanc.team>
parents:
5748
diff
changeset
|
732 { |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
733 sql += "UNION SELECT " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
734 " " TOSTRING(QUERY_PARENT_METADATA) " AS c0_queryId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
735 " Lookup.internalId AS c1_internalId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
736 " NULL AS c2_rowNumber, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
737 " value AS c3_string1, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
738 " NULL AS c4_string2, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
739 " NULL AS c5_string3, " |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
740 " NULL AS c6_string4, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
741 " type AS c7_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
742 " NULL AS c8_int2, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
743 " NULL AS c9_big_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
744 " NULL AS c10_big_int2 " |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
745 "FROM Lookup " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
746 "INNER JOIN Resources currentLevel ON Lookup.internalId = currentLevel.internalId " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
747 "INNER JOIN Metadata ON Metadata.id = currentLevel.parentId "; |
5790
a3d283f61304
improved handling of DicomSequences in parent
Alain Mazy <am@orthanc.team>
parents:
5782
diff
changeset
|
748 } |
a3d283f61304
improved handling of DicomSequences in parent
Alain Mazy <am@orthanc.team>
parents:
5782
diff
changeset
|
749 |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
750 if (requestLevel > ResourceType_Study) |
5750
f39406a9eda4
ExtendedFind in SQLite continued (6 tests still failing)
Alain Mazy <am@orthanc.team>
parents:
5748
diff
changeset
|
751 { |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
752 // need MainDicomTags from grandparent ? |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
753 if (request.GetParentSpecification(static_cast<ResourceType>(requestLevel - 2)).IsRetrieveMainDicomTags()) |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
754 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
755 sql += "UNION SELECT " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
756 " " TOSTRING(QUERY_GRAND_PARENT_MAIN_DICOM_TAGS) " AS c0_queryId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
757 " Lookup.internalId AS c1_internalId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
758 " NULL AS c2_rowNumber, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
759 " value AS c3_string1, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
760 " NULL AS c4_string2, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
761 " NULL AS c5_string3, " |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
762 " NULL AS c6_string4, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
763 " tagGroup AS c7_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
764 " tagElement AS c8_int2, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
765 " NULL AS c9_big_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
766 " NULL AS c10_big_int2 " |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
767 "FROM Lookup " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
768 "INNER JOIN Resources currentLevel ON Lookup.internalId = currentLevel.internalId " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
769 "INNER JOIN Resources parentLevel ON currentLevel.parentId = parentLevel.internalId " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
770 "INNER JOIN MainDicomTags ON MainDicomTags.id = parentLevel.parentId "; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
771 } |
5790
a3d283f61304
improved handling of DicomSequences in parent
Alain Mazy <am@orthanc.team>
parents:
5782
diff
changeset
|
772 |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
773 // need metadata from grandparent ? |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
774 if (request.GetParentSpecification(static_cast<ResourceType>(requestLevel - 2)).IsRetrieveMetadata()) |
5790
a3d283f61304
improved handling of DicomSequences in parent
Alain Mazy <am@orthanc.team>
parents:
5782
diff
changeset
|
775 { |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
776 sql += "UNION SELECT " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
777 " " TOSTRING(QUERY_GRAND_PARENT_METADATA) " AS c0_queryId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
778 " Lookup.internalId AS c1_internalId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
779 " NULL AS c2_rowNumber, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
780 " value AS c3_string1, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
781 " NULL AS c4_string2, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
782 " NULL AS c5_string3, " |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
783 " NULL AS c6_string4, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
784 " type AS c7_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
785 " NULL AS c8_int2, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
786 " NULL AS c9_big_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
787 " NULL AS c10_big_int2 " |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
788 "FROM Lookup " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
789 "INNER JOIN Resources currentLevel ON Lookup.internalId = currentLevel.internalId " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
790 "INNER JOIN Resources parentLevel ON currentLevel.parentId = parentLevel.internalId " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
791 "INNER JOIN Metadata ON Metadata.id = parentLevel.parentId "; |
5790
a3d283f61304
improved handling of DicomSequences in parent
Alain Mazy <am@orthanc.team>
parents:
5782
diff
changeset
|
792 } |
5750
f39406a9eda4
ExtendedFind in SQLite continued (6 tests still failing)
Alain Mazy <am@orthanc.team>
parents:
5748
diff
changeset
|
793 } |
f39406a9eda4
ExtendedFind in SQLite continued (6 tests still failing)
Alain Mazy <am@orthanc.team>
parents:
5748
diff
changeset
|
794 } |
f39406a9eda4
ExtendedFind in SQLite continued (6 tests still failing)
Alain Mazy <am@orthanc.team>
parents:
5748
diff
changeset
|
795 |
5751
5d78e5cafabc
ExtendedFind in SQLite continued (all basic integration tests OK)
Alain Mazy <am@orthanc.team>
parents:
5750
diff
changeset
|
796 // need MainDicomTags from children ? |
5d78e5cafabc
ExtendedFind in SQLite continued (all basic integration tests OK)
Alain Mazy <am@orthanc.team>
parents:
5750
diff
changeset
|
797 if (requestLevel <= ResourceType_Series && request.GetChildrenSpecification(static_cast<ResourceType>(requestLevel + 1)).GetMainDicomTags().size() > 0) |
5750
f39406a9eda4
ExtendedFind in SQLite continued (6 tests still failing)
Alain Mazy <am@orthanc.team>
parents:
5748
diff
changeset
|
798 { |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
799 sql += "UNION SELECT " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
800 " " TOSTRING(QUERY_CHILDREN_MAIN_DICOM_TAGS) " AS c0_queryId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
801 " Lookup.internalId AS c1_internalId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
802 " NULL AS c2_rowNumber, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
803 " value AS c3_string1, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
804 " NULL AS c4_string2, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
805 " NULL AS c5_string3, " |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
806 " NULL AS c6_string4, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
807 " tagGroup AS c7_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
808 " tagElement AS c8_int2, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
809 " NULL AS c9_big_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
810 " NULL AS c10_big_int2 " |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
811 "FROM Lookup " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
812 " INNER JOIN Resources childLevel ON childLevel.parentId = Lookup.internalId " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
813 " INNER JOIN MainDicomTags ON MainDicomTags.id = childLevel.internalId AND " + JoinRequestedTags(request.GetChildrenSpecification(static_cast<ResourceType>(requestLevel + 1))); |
5750
f39406a9eda4
ExtendedFind in SQLite continued (6 tests still failing)
Alain Mazy <am@orthanc.team>
parents:
5748
diff
changeset
|
814 } |
f39406a9eda4
ExtendedFind in SQLite continued (6 tests still failing)
Alain Mazy <am@orthanc.team>
parents:
5748
diff
changeset
|
815 |
5751
5d78e5cafabc
ExtendedFind in SQLite continued (all basic integration tests OK)
Alain Mazy <am@orthanc.team>
parents:
5750
diff
changeset
|
816 // need MainDicomTags from grandchildren ? |
5d78e5cafabc
ExtendedFind in SQLite continued (all basic integration tests OK)
Alain Mazy <am@orthanc.team>
parents:
5750
diff
changeset
|
817 if (requestLevel <= ResourceType_Study && request.GetChildrenSpecification(static_cast<ResourceType>(requestLevel + 2)).GetMainDicomTags().size() > 0) |
5750
f39406a9eda4
ExtendedFind in SQLite continued (6 tests still failing)
Alain Mazy <am@orthanc.team>
parents:
5748
diff
changeset
|
818 { |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
819 sql += "UNION SELECT " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
820 " " TOSTRING(QUERY_GRAND_CHILDREN_MAIN_DICOM_TAGS) " AS c0_queryId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
821 " Lookup.internalId AS c1_internalId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
822 " NULL AS c2_rowNumber, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
823 " value AS c3_string1, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
824 " NULL AS c4_string2, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
825 " NULL AS c5_string3, " |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
826 " NULL AS c6_string4, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
827 " tagGroup AS c7_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
828 " tagElement AS c8_int2, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
829 " NULL AS c9_big_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
830 " NULL AS c10_big_int2 " |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
831 "FROM Lookup " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
832 " INNER JOIN Resources childLevel ON childLevel.parentId = Lookup.internalId " |
5803
e219e272650d
fix retrieval of grandchildren info + cleanup
Alain Mazy <am@orthanc.team>
parents:
5796
diff
changeset
|
833 " INNER JOIN Resources grandChildLevel ON grandChildLevel.parentId = childLevel.internalId " |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
834 " INNER JOIN MainDicomTags ON MainDicomTags.id = grandChildLevel.internalId AND " + JoinRequestedTags(request.GetChildrenSpecification(static_cast<ResourceType>(requestLevel + 2))); |
5750
f39406a9eda4
ExtendedFind in SQLite continued (6 tests still failing)
Alain Mazy <am@orthanc.team>
parents:
5748
diff
changeset
|
835 } |
f39406a9eda4
ExtendedFind in SQLite continued (6 tests still failing)
Alain Mazy <am@orthanc.team>
parents:
5748
diff
changeset
|
836 |
5751
5d78e5cafabc
ExtendedFind in SQLite continued (all basic integration tests OK)
Alain Mazy <am@orthanc.team>
parents:
5750
diff
changeset
|
837 // need parent identifier ? |
5748
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
838 if (request.IsRetrieveParentIdentifier()) |
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
839 { |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
840 sql += "UNION SELECT " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
841 " " TOSTRING(QUERY_PARENT_IDENTIFIER) " AS c0_queryId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
842 " Lookup.internalId AS c1_internalId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
843 " NULL AS c2_rowNumber, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
844 " parentLevel.publicId AS c3_string1, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
845 " NULL AS c4_string2, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
846 " NULL AS c5_string3, " |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
847 " NULL AS c6_string4, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
848 " NULL AS c7_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
849 " NULL AS c8_int2, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
850 " NULL AS c9_big_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
851 " NULL AS c10_big_int2 " |
5803
e219e272650d
fix retrieval of grandchildren info + cleanup
Alain Mazy <am@orthanc.team>
parents:
5796
diff
changeset
|
852 "FROM Lookup " |
e219e272650d
fix retrieval of grandchildren info + cleanup
Alain Mazy <am@orthanc.team>
parents:
5796
diff
changeset
|
853 " INNER JOIN Resources currentLevel ON currentLevel.internalId = Lookup.internalId " |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
854 " INNER JOIN Resources parentLevel ON currentLevel.parentId = parentLevel.internalId "; |
5750
f39406a9eda4
ExtendedFind in SQLite continued (6 tests still failing)
Alain Mazy <am@orthanc.team>
parents:
5748
diff
changeset
|
855 } |
f39406a9eda4
ExtendedFind in SQLite continued (6 tests still failing)
Alain Mazy <am@orthanc.team>
parents:
5748
diff
changeset
|
856 |
5751
5d78e5cafabc
ExtendedFind in SQLite continued (all basic integration tests OK)
Alain Mazy <am@orthanc.team>
parents:
5750
diff
changeset
|
857 // need children metadata ? |
5d78e5cafabc
ExtendedFind in SQLite continued (all basic integration tests OK)
Alain Mazy <am@orthanc.team>
parents:
5750
diff
changeset
|
858 if (requestLevel <= ResourceType_Series && request.GetChildrenSpecification(static_cast<ResourceType>(requestLevel + 1)).GetMetadata().size() > 0) |
5d78e5cafabc
ExtendedFind in SQLite continued (all basic integration tests OK)
Alain Mazy <am@orthanc.team>
parents:
5750
diff
changeset
|
859 { |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
860 sql += "UNION SELECT " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
861 " " TOSTRING(QUERY_CHILDREN_METADATA) " AS c0_queryId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
862 " Lookup.internalId AS c1_internalId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
863 " NULL AS c2_rowNumber, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
864 " value AS c3_string1, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
865 " NULL AS c4_string2, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
866 " NULL AS c5_string3, " |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
867 " NULL AS c6_string4, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
868 " type AS c7_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
869 " NULL AS c8_int2, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
870 " NULL AS c9_big_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
871 " NULL AS c10_big_int2 " |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
872 "FROM Lookup " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
873 " INNER JOIN Resources childLevel ON childLevel.parentId = Lookup.internalId " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
874 " INNER JOIN Metadata ON Metadata.id = childLevel.internalId AND Metadata.type IN (" + JoinRequestedMetadata(request.GetChildrenSpecification(static_cast<ResourceType>(requestLevel + 1))) + ") "; |
5751
5d78e5cafabc
ExtendedFind in SQLite continued (all basic integration tests OK)
Alain Mazy <am@orthanc.team>
parents:
5750
diff
changeset
|
875 } |
5d78e5cafabc
ExtendedFind in SQLite continued (all basic integration tests OK)
Alain Mazy <am@orthanc.team>
parents:
5750
diff
changeset
|
876 |
5d78e5cafabc
ExtendedFind in SQLite continued (all basic integration tests OK)
Alain Mazy <am@orthanc.team>
parents:
5750
diff
changeset
|
877 // need grandchildren metadata ? |
5d78e5cafabc
ExtendedFind in SQLite continued (all basic integration tests OK)
Alain Mazy <am@orthanc.team>
parents:
5750
diff
changeset
|
878 if (requestLevel <= ResourceType_Study && request.GetChildrenSpecification(static_cast<ResourceType>(requestLevel + 2)).GetMetadata().size() > 0) |
5d78e5cafabc
ExtendedFind in SQLite continued (all basic integration tests OK)
Alain Mazy <am@orthanc.team>
parents:
5750
diff
changeset
|
879 { |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
880 sql += "UNION SELECT " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
881 " " TOSTRING(QUERY_GRAND_CHILDREN_METADATA) " AS c0_queryId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
882 " Lookup.internalId AS c1_internalId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
883 " NULL AS c2_rowNumber, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
884 " value AS c3_string1, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
885 " NULL AS c4_string2, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
886 " NULL AS c5_string3, " |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
887 " NULL AS c6_string4, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
888 " type AS c7_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
889 " NULL AS c8_int2, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
890 " NULL AS c9_big_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
891 " NULL AS c10_big_int2 " |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
892 "FROM Lookup " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
893 " INNER JOIN Resources childLevel ON childLevel.parentId = Lookup.internalId " |
5803
e219e272650d
fix retrieval of grandchildren info + cleanup
Alain Mazy <am@orthanc.team>
parents:
5796
diff
changeset
|
894 " INNER JOIN Resources grandChildLevel ON grandChildLevel.parentId = childLevel.internalId " |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
895 " INNER JOIN Metadata ON Metadata.id = grandChildLevel.internalId AND Metadata.type IN (" + JoinRequestedMetadata(request.GetChildrenSpecification(static_cast<ResourceType>(requestLevel + 2))) + ") "; |
5751
5d78e5cafabc
ExtendedFind in SQLite continued (all basic integration tests OK)
Alain Mazy <am@orthanc.team>
parents:
5750
diff
changeset
|
896 } |
5d78e5cafabc
ExtendedFind in SQLite continued (all basic integration tests OK)
Alain Mazy <am@orthanc.team>
parents:
5750
diff
changeset
|
897 |
5d78e5cafabc
ExtendedFind in SQLite continued (all basic integration tests OK)
Alain Mazy <am@orthanc.team>
parents:
5750
diff
changeset
|
898 // need children identifiers ? |
5774
f96abfe08946
implementation of specialized SQL commands in SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5772
diff
changeset
|
899 if ((requestLevel == ResourceType_Patient && request.GetChildrenSpecification(ResourceType_Study).IsRetrieveIdentifiers()) || |
f96abfe08946
implementation of specialized SQL commands in SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5772
diff
changeset
|
900 (requestLevel == ResourceType_Study && request.GetChildrenSpecification(ResourceType_Series).IsRetrieveIdentifiers()) || |
f96abfe08946
implementation of specialized SQL commands in SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5772
diff
changeset
|
901 (requestLevel == ResourceType_Series && request.GetChildrenSpecification(ResourceType_Instance).IsRetrieveIdentifiers())) |
5748
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
902 { |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
903 sql += "UNION SELECT " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
904 " " TOSTRING(QUERY_CHILDREN_IDENTIFIERS) " AS c0_queryId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
905 " Lookup.internalId AS c1_internalId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
906 " NULL AS c2_rowNumber, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
907 " childLevel.publicId AS c3_string1, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
908 " NULL AS c4_string2, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
909 " NULL AS c5_string3, " |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
910 " NULL AS c6_string4, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
911 " NULL AS c7_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
912 " NULL AS c8_int2, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
913 " NULL AS c9_big_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
914 " NULL AS c10_big_int2 " |
5803
e219e272650d
fix retrieval of grandchildren info + cleanup
Alain Mazy <am@orthanc.team>
parents:
5796
diff
changeset
|
915 "FROM Lookup " |
e219e272650d
fix retrieval of grandchildren info + cleanup
Alain Mazy <am@orthanc.team>
parents:
5796
diff
changeset
|
916 " INNER JOIN Resources childLevel ON Lookup.internalId = childLevel.parentId "; |
5748
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
917 } |
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
918 |
5751
5d78e5cafabc
ExtendedFind in SQLite continued (all basic integration tests OK)
Alain Mazy <am@orthanc.team>
parents:
5750
diff
changeset
|
919 // need grandchildren identifiers ? |
5774
f96abfe08946
implementation of specialized SQL commands in SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5772
diff
changeset
|
920 if ((requestLevel == ResourceType_Patient && request.GetChildrenSpecification(ResourceType_Series).IsRetrieveIdentifiers()) || |
f96abfe08946
implementation of specialized SQL commands in SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5772
diff
changeset
|
921 (requestLevel == ResourceType_Study && request.GetChildrenSpecification(ResourceType_Instance).IsRetrieveIdentifiers())) |
5748
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
922 { |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
923 sql += "UNION SELECT " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
924 " " TOSTRING(QUERY_GRAND_CHILDREN_IDENTIFIERS) " AS c0_queryId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
925 " Lookup.internalId AS c1_internalId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
926 " NULL AS c2_rowNumber, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
927 " grandChildLevel.publicId AS c3_string1, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
928 " NULL AS c4_string2, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
929 " NULL AS c5_string3, " |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
930 " NULL AS c6_string4, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
931 " NULL AS c7_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
932 " NULL AS c8_int2, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
933 " NULL AS c9_big_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
934 " NULL AS c10_big_int2 " |
5803
e219e272650d
fix retrieval of grandchildren info + cleanup
Alain Mazy <am@orthanc.team>
parents:
5796
diff
changeset
|
935 "FROM Lookup " |
e219e272650d
fix retrieval of grandchildren info + cleanup
Alain Mazy <am@orthanc.team>
parents:
5796
diff
changeset
|
936 "INNER JOIN Resources childLevel ON Lookup.internalId = childLevel.parentId " |
5748
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
937 "INNER JOIN Resources grandChildLevel ON childLevel.internalId = grandChildLevel.parentId "; |
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
938 } |
5750
f39406a9eda4
ExtendedFind in SQLite continued (6 tests still failing)
Alain Mazy <am@orthanc.team>
parents:
5748
diff
changeset
|
939 |
5774
f96abfe08946
implementation of specialized SQL commands in SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5772
diff
changeset
|
940 // need grandgrandchildren identifiers ? |
f96abfe08946
implementation of specialized SQL commands in SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5772
diff
changeset
|
941 if (requestLevel == ResourceType_Patient && request.GetChildrenSpecification(ResourceType_Instance).IsRetrieveIdentifiers()) |
f96abfe08946
implementation of specialized SQL commands in SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5772
diff
changeset
|
942 { |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
943 sql += "UNION SELECT " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
944 " " TOSTRING(QUERY_GRAND_GRAND_CHILDREN_IDENTIFIERS) " AS c0_queryId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
945 " Lookup.internalId AS c1_internalId, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
946 " NULL AS c2_rowNumber, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
947 " grandGrandChildLevel.publicId AS c3_string1, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
948 " NULL AS c4_string2, " |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
949 " NULL AS c5_string3, " |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
950 " NULL AS c6_string4, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
951 " NULL AS c7_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
952 " NULL AS c8_int2, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
953 " NULL AS c9_big_int1, " |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
954 " NULL AS c10_big_int2 " |
5803
e219e272650d
fix retrieval of grandchildren info + cleanup
Alain Mazy <am@orthanc.team>
parents:
5796
diff
changeset
|
955 "FROM Lookup " |
e219e272650d
fix retrieval of grandchildren info + cleanup
Alain Mazy <am@orthanc.team>
parents:
5796
diff
changeset
|
956 "INNER JOIN Resources childLevel ON Lookup.internalId = childLevel.parentId " |
5774
f96abfe08946
implementation of specialized SQL commands in SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5772
diff
changeset
|
957 "INNER JOIN Resources grandChildLevel ON childLevel.internalId = grandChildLevel.parentId " |
f96abfe08946
implementation of specialized SQL commands in SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5772
diff
changeset
|
958 "INNER JOIN Resources grandGrandChildLevel ON grandChildLevel.internalId = grandGrandChildLevel.parentId "; |
f96abfe08946
implementation of specialized SQL commands in SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5772
diff
changeset
|
959 } |
f96abfe08946
implementation of specialized SQL commands in SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5772
diff
changeset
|
960 |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
961 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
962 sql += " ORDER BY c0_queryId, c2_rowNumber"; // this is really important to make sure that the Lookup query is the first one to provide results since we use it to create the responses element ! |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
963 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
964 SQLite::Statement s(db_, SQLITE_FROM_HERE_DYNAMIC(sql), sql); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
965 formatter.Bind(s); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
966 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
967 while (s.Step()) |
5750
f39406a9eda4
ExtendedFind in SQLite continued (6 tests still failing)
Alain Mazy <am@orthanc.team>
parents:
5748
diff
changeset
|
968 { |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
969 int queryId = s.ColumnInt(C0_QUERY_ID); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
970 int64_t internalId = s.ColumnInt64(C1_INTERNAL_ID); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
971 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
972 // LOG(INFO) << queryId << ": " << internalId; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
973 // continue; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
974 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
975 assert(queryId == QUERY_LOOKUP || response.HasResource(internalId)); // the QUERY_LOOKUP must be read first and must create the response before any other query tries to populate the fields |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
976 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
977 switch (queryId) |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
978 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
979 case QUERY_LOOKUP: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
980 response.Add(new FindResponse::Resource(requestLevel, internalId, s.ColumnString(C3_STRING_1))); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
981 break; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
982 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
983 case QUERY_LABELS: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
984 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
985 FindResponse::Resource& res = response.GetResourceByInternalId(internalId); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
986 res.AddLabel(s.ColumnString(C3_STRING_1)); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
987 }; break; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
988 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
989 case QUERY_ATTACHMENTS: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
990 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
991 FindResponse::Resource& res = response.GetResourceByInternalId(internalId); |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
992 FileInfo file(s.ColumnString(C3_STRING_1), static_cast<FileContentType>(s.ColumnInt(C7_INT_1)), |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
993 s.ColumnInt64(C9_BIG_INT_1), s.ColumnString(C4_STRING_2), |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
994 static_cast<CompressionType>(s.ColumnInt(C8_INT_2)), |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
995 s.ColumnInt64(C10_BIG_INT_2), s.ColumnString(C5_STRING_3), s.ColumnString(C6_STRING_4)); |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
996 res.AddAttachment(file); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
997 }; break; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
998 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
999 case QUERY_MAIN_DICOM_TAGS: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1000 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1001 FindResponse::Resource& res = response.GetResourceByInternalId(internalId); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1002 res.AddStringDicomTag(requestLevel, |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
1003 static_cast<uint16_t>(s.ColumnInt(C7_INT_1)), |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
1004 static_cast<uint16_t>(s.ColumnInt(C8_INT_2)), |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1005 s.ColumnString(C3_STRING_1)); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1006 }; break; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1007 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1008 case QUERY_PARENT_MAIN_DICOM_TAGS: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1009 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1010 FindResponse::Resource& res = response.GetResourceByInternalId(internalId); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1011 res.AddStringDicomTag(static_cast<ResourceType>(requestLevel - 1), |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
1012 static_cast<uint16_t>(s.ColumnInt(C7_INT_1)), |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
1013 static_cast<uint16_t>(s.ColumnInt(C8_INT_2)), |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1014 s.ColumnString(C3_STRING_1)); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1015 }; break; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1016 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1017 case QUERY_GRAND_PARENT_MAIN_DICOM_TAGS: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1018 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1019 FindResponse::Resource& res = response.GetResourceByInternalId(internalId); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1020 res.AddStringDicomTag(static_cast<ResourceType>(requestLevel - 2), |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
1021 static_cast<uint16_t>(s.ColumnInt(C7_INT_1)), |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
1022 static_cast<uint16_t>(s.ColumnInt(C8_INT_2)), |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1023 s.ColumnString(C3_STRING_1)); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1024 }; break; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1025 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1026 case QUERY_CHILDREN_MAIN_DICOM_TAGS: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1027 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1028 FindResponse::Resource& res = response.GetResourceByInternalId(internalId); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1029 res.AddChildrenMainDicomTagValue(static_cast<ResourceType>(requestLevel + 1), |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
1030 DicomTag(static_cast<uint16_t>(s.ColumnInt(C7_INT_1)), static_cast<uint16_t>(s.ColumnInt(C8_INT_2))), |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1031 s.ColumnString(C3_STRING_1)); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1032 }; break; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1033 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1034 case QUERY_GRAND_CHILDREN_MAIN_DICOM_TAGS: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1035 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1036 FindResponse::Resource& res = response.GetResourceByInternalId(internalId); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1037 res.AddChildrenMainDicomTagValue(static_cast<ResourceType>(requestLevel + 2), |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
1038 DicomTag(static_cast<uint16_t>(s.ColumnInt(C7_INT_1)), static_cast<uint16_t>(s.ColumnInt(C8_INT_2))), |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1039 s.ColumnString(C3_STRING_1)); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1040 }; break; |
5750
f39406a9eda4
ExtendedFind in SQLite continued (6 tests still failing)
Alain Mazy <am@orthanc.team>
parents:
5748
diff
changeset
|
1041 |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1042 case QUERY_METADATA: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1043 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1044 FindResponse::Resource& res = response.GetResourceByInternalId(internalId); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1045 res.AddMetadata(static_cast<ResourceType>(requestLevel), |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
1046 static_cast<MetadataType>(s.ColumnInt(C7_INT_1)), |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1047 s.ColumnString(C3_STRING_1)); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1048 }; break; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1049 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1050 case QUERY_PARENT_METADATA: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1051 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1052 FindResponse::Resource& res = response.GetResourceByInternalId(internalId); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1053 res.AddMetadata(static_cast<ResourceType>(requestLevel - 1), |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
1054 static_cast<MetadataType>(s.ColumnInt(C7_INT_1)), |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1055 s.ColumnString(C3_STRING_1)); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1056 }; break; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1057 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1058 case QUERY_GRAND_PARENT_METADATA: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1059 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1060 FindResponse::Resource& res = response.GetResourceByInternalId(internalId); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1061 res.AddMetadata(static_cast<ResourceType>(requestLevel - 2), |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
1062 static_cast<MetadataType>(s.ColumnInt(C7_INT_1)), |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1063 s.ColumnString(C3_STRING_1)); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1064 }; break; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1065 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1066 case QUERY_CHILDREN_METADATA: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1067 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1068 FindResponse::Resource& res = response.GetResourceByInternalId(internalId); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1069 res.AddChildrenMetadataValue(static_cast<ResourceType>(requestLevel + 1), |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
1070 static_cast<MetadataType>(s.ColumnInt(C7_INT_1)), |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1071 s.ColumnString(C3_STRING_1)); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1072 }; break; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1073 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1074 case QUERY_GRAND_CHILDREN_METADATA: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1075 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1076 FindResponse::Resource& res = response.GetResourceByInternalId(internalId); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1077 res.AddChildrenMetadataValue(static_cast<ResourceType>(requestLevel + 2), |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
1078 static_cast<MetadataType>(s.ColumnInt(C7_INT_1)), |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1079 s.ColumnString(C3_STRING_1)); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1080 }; break; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1081 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1082 case QUERY_PARENT_IDENTIFIER: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1083 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1084 FindResponse::Resource& res = response.GetResourceByInternalId(internalId); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1085 res.SetParentIdentifier(s.ColumnString(C3_STRING_1)); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1086 }; break; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1087 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1088 case QUERY_CHILDREN_IDENTIFIERS: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1089 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1090 FindResponse::Resource& res = response.GetResourceByInternalId(internalId); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1091 res.AddChildIdentifier(static_cast<ResourceType>(requestLevel + 1), |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1092 s.ColumnString(C3_STRING_1)); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1093 }; break; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1094 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1095 case QUERY_GRAND_CHILDREN_IDENTIFIERS: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1096 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1097 FindResponse::Resource& res = response.GetResourceByInternalId(internalId); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1098 res.AddChildIdentifier(static_cast<ResourceType>(requestLevel + 2), |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1099 s.ColumnString(C3_STRING_1)); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1100 }; break; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1101 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1102 case QUERY_GRAND_GRAND_CHILDREN_IDENTIFIERS: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1103 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1104 FindResponse::Resource& res = response.GetResourceByInternalId(internalId); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1105 res.AddChildIdentifier(static_cast<ResourceType>(requestLevel + 3), |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1106 s.ColumnString(C3_STRING_1)); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1107 }; break; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1108 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1109 case QUERY_ONE_INSTANCE_IDENTIFIER: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1110 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1111 FindResponse::Resource& res = response.GetResourceByInternalId(internalId); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1112 res.SetOneInstancePublicId(s.ColumnString(C3_STRING_1)); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1113 }; break; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1114 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1115 case QUERY_ONE_INSTANCE_METADATA: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1116 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1117 FindResponse::Resource& res = response.GetResourceByInternalId(internalId); |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
1118 res.AddOneInstanceMetadata(static_cast<MetadataType>(s.ColumnInt(C7_INT_1)), s.ColumnString(C3_STRING_1)); |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1119 }; break; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1120 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1121 case QUERY_ONE_INSTANCE_ATTACHMENTS: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1122 { |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1123 FindResponse::Resource& res = response.GetResourceByInternalId(internalId); |
5809
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
1124 FileInfo file(s.ColumnString(C3_STRING_1), static_cast<FileContentType>(s.ColumnInt(C7_INT_1)), |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
1125 s.ColumnInt64(C9_BIG_INT_1), s.ColumnString(C4_STRING_2), |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
1126 static_cast<CompressionType>(s.ColumnInt(C8_INT_2)), |
023a99146dd0
merged find-refactoring -> attach-custom-data
Alain Mazy <am@orthanc.team>
diff
changeset
|
1127 s.ColumnInt64(C10_BIG_INT_2), s.ColumnString(C5_STRING_3), s.ColumnString(C6_STRING_4)); |
5796
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1128 res.AddOneInstanceAttachment(file); |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1129 }; break; |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1130 |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1131 default: |
16ce3c920f71
rewrote SQLite find using CTEs instead of temporary tables
Alain Mazy <am@orthanc.team>
parents:
5790
diff
changeset
|
1132 throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented); |
5750
f39406a9eda4
ExtendedFind in SQLite continued (6 tests still failing)
Alain Mazy <am@orthanc.team>
parents:
5748
diff
changeset
|
1133 } |
f39406a9eda4
ExtendedFind in SQLite continued (6 tests still failing)
Alain Mazy <am@orthanc.team>
parents:
5748
diff
changeset
|
1134 } |
5748
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
1135 } |
4bc650d88463
WIP: started to implement IntegratedFind in SQLite
Alain Mazy <am@orthanc.team>
parents:
5723
diff
changeset
|
1136 |
4592 | 1137 // From the "ICreateInstance" interface |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1138 virtual void AttachChild(int64_t parent, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1139 int64_t child) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1140 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1141 SQLite::Statement s(db_, SQLITE_FROM_HERE, "UPDATE Resources SET parentId = ? WHERE internalId = ?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1142 s.BindInt64(0, parent); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1143 s.BindInt64(1, child); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1144 s.Run(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1145 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1146 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1147 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1148 virtual void ClearChanges() ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1149 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1150 ClearTable("Changes"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1151 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1152 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1153 virtual void ClearExportedResources() ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1154 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1155 ClearTable("ExportedResources"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1156 } |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
1157 |
1241 | 1158 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1159 virtual void ClearMainDicomTags(int64_t id) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1160 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1161 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1162 SQLite::Statement s(db_, SQLITE_FROM_HERE, "DELETE FROM DicomIdentifiers WHERE id=?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1163 s.BindInt64(0, id); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1164 s.Run(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1165 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1166 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1167 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1168 SQLite::Statement s(db_, SQLITE_FROM_HERE, "DELETE FROM MainDicomTags WHERE id=?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1169 s.BindInt64(0, id); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1170 s.Run(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1171 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1172 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1173 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1174 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1175 virtual bool CreateInstance(CreateInstanceResult& result, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1176 int64_t& instanceId, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1177 const std::string& patient, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1178 const std::string& study, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1179 const std::string& series, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1180 const std::string& instance) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1181 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1182 return ICreateInstance::Apply |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1183 (*this, result, instanceId, patient, study, series, instance); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1184 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1185 |
193
a1b9d1e1497b
failed attempt to compile with linux standard base
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
1186 |
4592 | 1187 // From the "ICreateInstance" interface |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1188 virtual int64_t CreateResource(const std::string& publicId, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1189 ResourceType type) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1190 { |
5090
cc1a8b3ff319
Made the default SQLite DB more robust wrt future updates like adding new columns in DB.
Alain Mazy <am@osimis.io>
parents:
5057
diff
changeset
|
1191 SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO Resources (internalId, resourceType, publicId, parentId) VALUES(NULL, ?, ?, NULL)"); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1192 s.BindInt(0, type); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1193 s.BindString(1, publicId); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1194 s.Run(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1195 return db_.GetLastInsertRowId(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1196 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1197 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1198 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1199 virtual void DeleteAttachment(int64_t id, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1200 FileContentType attachment) ORTHANC_OVERRIDE |
193
a1b9d1e1497b
failed attempt to compile with linux standard base
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
1201 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1202 SQLite::Statement s(db_, SQLITE_FROM_HERE, "DELETE FROM AttachedFiles WHERE id=? AND fileType=?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1203 s.BindInt64(0, id); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1204 s.BindInt(1, attachment); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1205 s.Run(); |
193
a1b9d1e1497b
failed attempt to compile with linux standard base
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
1206 } |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1207 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1208 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1209 virtual void DeleteMetadata(int64_t id, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1210 MetadataType type) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1211 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1212 SQLite::Statement s(db_, SQLITE_FROM_HERE, "DELETE FROM Metadata WHERE id=? and type=?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1213 s.BindInt64(0, id); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1214 s.BindInt(1, type); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1215 s.Run(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1216 } |
193
a1b9d1e1497b
failed attempt to compile with linux standard base
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
1217 |
a1b9d1e1497b
failed attempt to compile with linux standard base
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
192
diff
changeset
|
1218 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1219 virtual void DeleteResource(int64_t id) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1220 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1221 signalRemainingAncestor_.Reset(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1222 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1223 SQLite::Statement s(db_, SQLITE_FROM_HERE, "DELETE FROM Resources WHERE internalId=?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1224 s.BindInt64(0, id); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1225 s.Run(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1226 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1227 if (signalRemainingAncestor_.HasRemainingAncestor()) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1228 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1229 listener_.SignalRemainingAncestor(signalRemainingAncestor_.GetRemainingAncestorType(), |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1230 signalRemainingAncestor_.GetRemainingAncestorId()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1231 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1232 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1233 |
5084
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1234 void DeleteDeletedFile(const std::string& uuid) |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1235 { |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1236 SQLite::Statement s(db_, SQLITE_FROM_HERE, "DELETE FROM DeletedFiles WHERE uuid=?"); |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1237 s.BindString(0, uuid); |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1238 s.Run(); |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1239 } |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1240 |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1241 void GetDeletedFileCustomData(std::string& customData, const std::string& uuid) |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1242 { |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1243 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1244 "SELECT customData FROM DeletedFiles WHERE uuid=?"); |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1245 s.BindString(0, uuid); |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1246 |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1247 if (s.Step()) |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1248 { |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1249 customData = s.ColumnString(0); |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1250 } |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1251 else |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1252 { |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1253 throw OrthancException(ErrorCode_UnknownResource); |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1254 } |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1255 } |
183 | 1256 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1257 virtual void GetAllMetadata(std::map<MetadataType, std::string>& target, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1258 int64_t id) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1259 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1260 target.clear(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1261 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1262 SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT type, value FROM Metadata WHERE id=?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1263 s.BindInt64(0, id); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1264 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1265 while (s.Step()) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1266 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1267 MetadataType key = static_cast<MetadataType>(s.ColumnInt(0)); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1268 target[key] = s.ColumnString(1); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1269 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1270 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1271 |
183 | 1272 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1273 virtual void GetAllPublicIds(std::list<std::string>& target, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1274 ResourceType resourceType) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1275 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1276 SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT publicId FROM Resources WHERE resourceType=?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1277 s.BindInt(0, resourceType); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1278 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1279 target.clear(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1280 while (s.Step()) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1281 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1282 target.push_back(s.ColumnString(0)); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1283 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1284 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1285 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1286 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1287 virtual void GetAllPublicIds(std::list<std::string>& target, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1288 ResourceType resourceType, |
5213
055428d92772
clarifying types of since/limit in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5193
diff
changeset
|
1289 int64_t since, |
055428d92772
clarifying types of since/limit in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5193
diff
changeset
|
1290 uint32_t limit) ORTHANC_OVERRIDE |
183 | 1291 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1292 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1293 "SELECT publicId FROM Resources WHERE " |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1294 "resourceType=? LIMIT ? OFFSET ?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1295 s.BindInt(0, resourceType); |
5774
f96abfe08946
implementation of specialized SQL commands in SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5772
diff
changeset
|
1296 s.BindInt64(1, limit == 0 ? -1 : limit); // In SQLite, setting "LIMIT" to "-1" means "no limit" |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1297 s.BindInt64(2, since); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1298 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1299 target.clear(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1300 while (s.Step()) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1301 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1302 target.push_back(s.ColumnString(0)); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1303 } |
183 | 1304 } |
1305 | |
1306 | |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1307 virtual void GetChanges(std::list<ServerIndexChange>& target /*out*/, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1308 bool& done /*out*/, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1309 int64_t since, |
5213
055428d92772
clarifying types of since/limit in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5193
diff
changeset
|
1310 uint32_t limit) ORTHANC_OVERRIDE |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1311 { |
5804
25df40a274fd
/changes: allowing filtering on multiple changes
Alain Mazy <am@orthanc.team>
parents:
5803
diff
changeset
|
1312 std::set<ChangeType> filter; |
25df40a274fd
/changes: allowing filtering on multiple changes
Alain Mazy <am@orthanc.team>
parents:
5803
diff
changeset
|
1313 GetChangesExtended(target, done, since, -1, limit, filter); |
5553
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1314 } |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1315 |
5757 | 1316 virtual void GetChangesExtended(std::list<ServerIndexChange>& target /*out*/, |
1317 bool& done /*out*/, | |
1318 int64_t since, | |
1319 int64_t to, | |
1320 uint32_t limit, | |
5804
25df40a274fd
/changes: allowing filtering on multiple changes
Alain Mazy <am@orthanc.team>
parents:
5803
diff
changeset
|
1321 const std::set<ChangeType>& filterType) ORTHANC_OVERRIDE |
5553
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1322 { |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1323 std::vector<std::string> filters; |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1324 bool hasSince = false; |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1325 bool hasTo = false; |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1326 |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1327 if (since > 0) |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1328 { |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1329 hasSince = true; |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1330 filters.push_back("seq>?"); |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1331 } |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1332 if (to != -1) |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1333 { |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1334 hasTo = true; |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1335 filters.push_back("seq<=?"); |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1336 } |
5804
25df40a274fd
/changes: allowing filtering on multiple changes
Alain Mazy <am@orthanc.team>
parents:
5803
diff
changeset
|
1337 if (filterType.size() != 0) |
5553
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1338 { |
5804
25df40a274fd
/changes: allowing filtering on multiple changes
Alain Mazy <am@orthanc.team>
parents:
5803
diff
changeset
|
1339 filters.push_back("changeType IN ( " + JoinChanges(filterType) + " )"); |
5553
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1340 } |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1341 |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1342 std::string filtersString; |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1343 if (filters.size() > 0) |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1344 { |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1345 Toolbox::JoinStrings(filtersString, filters, " AND "); |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1346 filtersString = "WHERE " + filtersString; |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1347 } |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1348 |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1349 std::string sql; |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1350 bool returnFirstResults; |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1351 if (hasTo && !hasSince) |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1352 { |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1353 // in this case, we want the largest values in the LIMIT clause but we want them ordered in ascending order |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1354 sql = "SELECT * FROM (SELECT * FROM Changes " + filtersString + " ORDER BY seq DESC LIMIT ?) ORDER BY seq ASC"; |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1355 returnFirstResults = false; |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1356 } |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1357 else |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1358 { |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1359 // default query: we want the smallest values ordered in ascending order |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1360 sql = "SELECT * FROM Changes " + filtersString + " ORDER BY seq ASC LIMIT ?"; |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1361 returnFirstResults = true; |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1362 } |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1363 |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1364 SQLite::Statement s(db_, SQLITE_FROM_HERE_DYNAMIC(sql), sql); |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1365 |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1366 int paramCounter = 0; |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1367 if (hasSince) |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1368 { |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1369 s.BindInt64(paramCounter++, since); |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1370 } |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1371 if (hasTo) |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1372 { |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1373 s.BindInt64(paramCounter++, to); |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1374 } |
5805 | 1375 |
5553
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1376 s.BindInt(paramCounter++, limit + 1); // we take limit+1 because we use the +1 to know if "Done" must be set to true |
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1377 GetChangesInternal(target, done, s, limit, returnFirstResults); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1378 } |
183 | 1379 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1380 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1381 virtual void GetChildrenMetadata(std::list<std::string>& target, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1382 int64_t resourceId, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1383 MetadataType metadata) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1384 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1385 IGetChildrenMetadata::Apply(*this, target, resourceId, metadata); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1386 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1387 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1388 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1389 virtual void GetChildrenInternalId(std::list<int64_t>& target, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1390 int64_t id) ORTHANC_OVERRIDE |
183 | 1391 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1392 SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT a.internalId FROM Resources AS a, Resources AS b " |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1393 "WHERE a.parentId = b.internalId AND b.internalId = ?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1394 s.BindInt64(0, id); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1395 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1396 target.clear(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1397 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1398 while (s.Step()) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1399 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1400 target.push_back(s.ColumnInt64(0)); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1401 } |
183 | 1402 } |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1403 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1404 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1405 virtual void GetChildrenPublicId(std::list<std::string>& target, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1406 int64_t id) ORTHANC_OVERRIDE |
183 | 1407 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1408 SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT a.publicId FROM Resources AS a, Resources AS b " |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1409 "WHERE a.parentId = b.internalId AND b.internalId = ?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1410 s.BindInt64(0, id); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1411 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1412 target.clear(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1413 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1414 while (s.Step()) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1415 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1416 target.push_back(s.ColumnString(0)); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1417 } |
183 | 1418 } |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1419 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1420 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1421 virtual void GetExportedResources(std::list<ExportedResource>& target, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1422 bool& done, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1423 int64_t since, |
5213
055428d92772
clarifying types of since/limit in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5193
diff
changeset
|
1424 uint32_t limit) ORTHANC_OVERRIDE |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1425 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1426 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1427 "SELECT * FROM ExportedResources WHERE seq>? ORDER BY seq LIMIT ?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1428 s.BindInt64(0, since); |
5213
055428d92772
clarifying types of since/limit in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5193
diff
changeset
|
1429 s.BindInt(1, limit + 1); |
055428d92772
clarifying types of since/limit in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5193
diff
changeset
|
1430 GetExportedResourcesInternal(target, done, s, limit); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1431 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1432 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1433 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1434 virtual void GetLastChange(std::list<ServerIndexChange>& target /*out*/) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1435 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1436 bool done; // Ignored |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1437 SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT * FROM Changes ORDER BY seq DESC LIMIT 1"); |
5553
28cc06e4859a
Added ExtendedApiV1: /changes
Alain Mazy <am@orthanc.team>
parents:
5521
diff
changeset
|
1438 GetChangesInternal(target, done, s, 1, true); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1439 } |
183 | 1440 |
1441 | |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1442 int64_t GetLastChangeIndex() ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1443 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1444 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1445 "SELECT seq FROM sqlite_sequence WHERE name='Changes'"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1446 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1447 if (s.Step()) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1448 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1449 int64_t c = s.ColumnInt(0); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1450 assert(!s.Step()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1451 return c; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1452 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1453 else |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1454 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1455 // No change has been recorded so far in the database |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1456 return 0; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1457 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1458 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1459 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1460 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1461 virtual void GetLastExportedResource(std::list<ExportedResource>& target) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1462 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1463 bool done; // Ignored |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1464 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1465 "SELECT * FROM ExportedResources ORDER BY seq DESC LIMIT 1"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1466 GetExportedResourcesInternal(target, done, s, 1); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1467 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1468 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1469 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1470 virtual void GetMainDicomTags(DicomMap& map, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1471 int64_t id) ORTHANC_OVERRIDE |
3809
2bf30ef727e3
enforcing SQLiteDatabaseWrapper::GetTableRecordCount() against SQL injection
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3712
diff
changeset
|
1472 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1473 map.Clear(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1474 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1475 SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT * FROM MainDicomTags WHERE id=?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1476 s.BindInt64(0, id); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1477 while (s.Step()) |
3809
2bf30ef727e3
enforcing SQLiteDatabaseWrapper::GetTableRecordCount() against SQL injection
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3712
diff
changeset
|
1478 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1479 map.SetValue(s.ColumnInt(1), |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1480 s.ColumnInt(2), |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1481 s.ColumnString(3), false); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1482 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1483 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1484 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1485 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1486 virtual std::string GetPublicId(int64_t resourceId) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1487 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1488 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1489 "SELECT publicId FROM Resources WHERE internalId=?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1490 s.BindInt64(0, resourceId); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1491 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1492 if (s.Step()) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1493 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1494 return s.ColumnString(0); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1495 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1496 else |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1497 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1498 throw OrthancException(ErrorCode_UnknownResource); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1499 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1500 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1501 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1502 |
4595
cc64385593ef
added OrthancPluginRegisterDatabaseBackendV3() to plugin sdk
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4594
diff
changeset
|
1503 virtual uint64_t GetResourcesCount(ResourceType resourceType) ORTHANC_OVERRIDE |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1504 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1505 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1506 "SELECT COUNT(*) FROM Resources WHERE resourceType=?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1507 s.BindInt(0, resourceType); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1508 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1509 if (!s.Step()) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1510 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1511 return 0; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1512 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1513 else |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1514 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1515 int64_t c = s.ColumnInt(0); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1516 assert(!s.Step()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1517 return c; |
3809
2bf30ef727e3
enforcing SQLiteDatabaseWrapper::GetTableRecordCount() against SQL injection
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3712
diff
changeset
|
1518 } |
2bf30ef727e3
enforcing SQLiteDatabaseWrapper::GetTableRecordCount() against SQL injection
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3712
diff
changeset
|
1519 } |
183 | 1520 |
3809
2bf30ef727e3
enforcing SQLiteDatabaseWrapper::GetTableRecordCount() against SQL injection
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3712
diff
changeset
|
1521 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1522 virtual ResourceType GetResourceType(int64_t resourceId) ORTHANC_OVERRIDE |
3809
2bf30ef727e3
enforcing SQLiteDatabaseWrapper::GetTableRecordCount() against SQL injection
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3712
diff
changeset
|
1523 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1524 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1525 "SELECT resourceType FROM Resources WHERE internalId=?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1526 s.BindInt64(0, resourceId); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1527 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1528 if (s.Step()) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1529 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1530 return static_cast<ResourceType>(s.ColumnInt(0)); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1531 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1532 else |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1533 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1534 throw OrthancException(ErrorCode_UnknownResource); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1535 } |
3809
2bf30ef727e3
enforcing SQLiteDatabaseWrapper::GetTableRecordCount() against SQL injection
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3712
diff
changeset
|
1536 } |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1537 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1538 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1539 virtual uint64_t GetTotalCompressedSize() ORTHANC_OVERRIDE |
218 | 1540 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1541 // Old SQL query that was used in Orthanc <= 1.5.0: |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1542 // SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT SUM(compressedSize) FROM AttachedFiles"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1543 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1544 SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT value FROM GlobalIntegers WHERE key=0"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1545 s.Run(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1546 return static_cast<uint64_t>(s.ColumnInt64(0)); |
218 | 1547 } |
183 | 1548 |
1549 | |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1550 virtual uint64_t GetTotalUncompressedSize() ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1551 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1552 // Old SQL query that was used in Orthanc <= 1.5.0: |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1553 // SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT SUM(uncompressedSize) FROM AttachedFiles"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1554 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1555 SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT value FROM GlobalIntegers WHERE key=1"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1556 s.Run(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1557 return static_cast<uint64_t>(s.ColumnInt64(0)); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1558 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1559 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1560 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1561 virtual bool IsDiskSizeAbove(uint64_t threshold) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1562 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1563 return GetTotalCompressedSize() > threshold; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1564 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1565 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1566 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1567 virtual bool IsProtectedPatient(int64_t internalId) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1568 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1569 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1570 "SELECT * FROM PatientRecyclingOrder WHERE patientId = ?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1571 s.BindInt64(0, internalId); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1572 return !s.Step(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1573 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1574 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1575 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1576 virtual void ListAvailableAttachments(std::set<FileContentType>& target, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1577 int64_t id) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1578 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1579 target.clear(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1580 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1581 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1582 "SELECT fileType FROM AttachedFiles WHERE id=?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1583 s.BindInt64(0, id); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1584 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1585 while (s.Step()) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1586 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1587 target.insert(static_cast<FileContentType>(s.ColumnInt(0))); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1588 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1589 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1590 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1591 |
5216
450ac804d3af
simplifying IDatabaseWrapper::LogChange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5213
diff
changeset
|
1592 virtual void LogChange(ChangeType changeType, |
450ac804d3af
simplifying IDatabaseWrapper::LogChange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5213
diff
changeset
|
1593 ResourceType resourceType, |
450ac804d3af
simplifying IDatabaseWrapper::LogChange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5213
diff
changeset
|
1594 int64_t internalId, |
450ac804d3af
simplifying IDatabaseWrapper::LogChange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5213
diff
changeset
|
1595 const std::string& /* publicId - unused */, |
450ac804d3af
simplifying IDatabaseWrapper::LogChange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5213
diff
changeset
|
1596 const std::string& date) ORTHANC_OVERRIDE |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1597 { |
5090
cc1a8b3ff319
Made the default SQLite DB more robust wrt future updates like adding new columns in DB.
Alain Mazy <am@osimis.io>
parents:
5057
diff
changeset
|
1598 SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO Changes (seq, changeType, internalId, resourceType, date) VALUES(NULL, ?, ?, ?, ?)"); |
5216
450ac804d3af
simplifying IDatabaseWrapper::LogChange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5213
diff
changeset
|
1599 s.BindInt(0, changeType); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1600 s.BindInt64(1, internalId); |
5216
450ac804d3af
simplifying IDatabaseWrapper::LogChange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5213
diff
changeset
|
1601 s.BindInt(2, resourceType); |
450ac804d3af
simplifying IDatabaseWrapper::LogChange()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5213
diff
changeset
|
1602 s.BindString(3, date); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1603 s.Run(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1604 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1605 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1606 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1607 virtual void LogExportedResource(const ExportedResource& resource) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1608 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1609 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
5090
cc1a8b3ff319
Made the default SQLite DB more robust wrt future updates like adding new columns in DB.
Alain Mazy <am@osimis.io>
parents:
5057
diff
changeset
|
1610 "INSERT INTO ExportedResources (seq, resourceType, publicId, remoteModality, patientId, studyInstanceUid, seriesInstanceUid, sopInstanceUid, date) VALUES(NULL, ?, ?, ?, ?, ?, ?, ?, ?)"); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1611 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1612 s.BindInt(0, resource.GetResourceType()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1613 s.BindString(1, resource.GetPublicId()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1614 s.BindString(2, resource.GetModality()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1615 s.BindString(3, resource.GetPatientId()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1616 s.BindString(4, resource.GetStudyInstanceUid()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1617 s.BindString(5, resource.GetSeriesInstanceUid()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1618 s.BindString(6, resource.GetSopInstanceUid()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1619 s.BindString(7, resource.GetDate()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1620 s.Run(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1621 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1622 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1623 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1624 virtual bool LookupAttachment(FileInfo& attachment, |
4627
f7d5372b59b3
handling revisions of attachments
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4623
diff
changeset
|
1625 int64_t& revision, |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1626 int64_t id, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1627 FileContentType contentType) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1628 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1629 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1630 "SELECT uuid, uncompressedSize, compressionType, compressedSize, " |
5084
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1631 "uncompressedMD5, compressedMD5, revision, customData FROM AttachedFiles WHERE id=? AND fileType=?"); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1632 s.BindInt64(0, id); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1633 s.BindInt(1, contentType); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1634 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1635 if (!s.Step()) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1636 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1637 return false; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1638 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1639 else |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1640 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1641 attachment = FileInfo(s.ColumnString(0), |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1642 contentType, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1643 s.ColumnInt64(1), |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1644 s.ColumnString(4), |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1645 static_cast<CompressionType>(s.ColumnInt(2)), |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1646 s.ColumnInt64(3), |
5080
d7274e43ea7c
allow plugins to store a customData in the Attachments table to e.g. store custom paths without requiring an external DB
Alain Mazy <am@osimis.io>
parents:
5057
diff
changeset
|
1647 s.ColumnString(5), |
5084
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1648 s.ColumnString(7)); |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1649 revision = s.ColumnInt(6); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1650 return true; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1651 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1652 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1653 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1654 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1655 virtual bool LookupGlobalProperty(std::string& target, |
4607
f75c63aa9de0
differentiating between shared and private global properties
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4595
diff
changeset
|
1656 GlobalProperty property, |
f75c63aa9de0
differentiating between shared and private global properties
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4595
diff
changeset
|
1657 bool shared) ORTHANC_OVERRIDE |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1658 { |
4607
f75c63aa9de0
differentiating between shared and private global properties
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4595
diff
changeset
|
1659 // The "shared" info is not used by the SQLite database, as it |
f75c63aa9de0
differentiating between shared and private global properties
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4595
diff
changeset
|
1660 // can only be used by one Orthanc server. |
f75c63aa9de0
differentiating between shared and private global properties
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4595
diff
changeset
|
1661 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1662 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1663 "SELECT value FROM GlobalProperties WHERE property=?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1664 s.BindInt(0, property); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1665 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1666 if (!s.Step()) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1667 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1668 return false; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1669 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1670 else |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1671 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1672 target = s.ColumnString(0); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1673 return true; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1674 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1675 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1676 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1677 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1678 virtual bool LookupMetadata(std::string& target, |
4623
95ffe3b6ef7c
handling of revisions for metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4607
diff
changeset
|
1679 int64_t& revision, |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1680 int64_t id, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1681 MetadataType type) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1682 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1683 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
5084
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1684 "SELECT value, revision FROM Metadata WHERE id=? AND type=?"); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1685 s.BindInt64(0, id); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1686 s.BindInt(1, type); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1687 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1688 if (!s.Step()) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1689 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1690 return false; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1691 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1692 else |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1693 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1694 target = s.ColumnString(0); |
5084
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1695 revision = s.ColumnInt(1); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1696 return true; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1697 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1698 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1699 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1700 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1701 virtual bool LookupParent(int64_t& parentId, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1702 int64_t resourceId) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1703 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1704 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1705 "SELECT parentId FROM Resources WHERE internalId=?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1706 s.BindInt64(0, resourceId); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1707 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1708 if (!s.Step()) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1709 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1710 throw OrthancException(ErrorCode_UnknownResource); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1711 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1712 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1713 if (s.ColumnIsNull(0)) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1714 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1715 return false; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1716 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1717 else |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1718 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1719 parentId = s.ColumnInt(0); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1720 return true; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1721 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1722 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1723 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1724 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1725 virtual bool LookupResourceAndParent(int64_t& id, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1726 ResourceType& type, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1727 std::string& parentPublicId, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1728 const std::string& publicId) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1729 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1730 return ILookupResourceAndParent::Apply(*this, id, type, parentPublicId, publicId); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1731 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1732 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1733 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1734 virtual bool LookupResource(int64_t& id, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1735 ResourceType& type, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1736 const std::string& publicId) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1737 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1738 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1739 "SELECT internalId, resourceType FROM Resources WHERE publicId=?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1740 s.BindString(0, publicId); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1741 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1742 if (!s.Step()) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1743 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1744 return false; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1745 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1746 else |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1747 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1748 id = s.ColumnInt(0); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1749 type = static_cast<ResourceType>(s.ColumnInt(1)); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1750 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1751 // Check whether there is a single resource with this public id |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1752 assert(!s.Step()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1753 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1754 return true; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1755 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1756 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1757 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1758 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1759 virtual bool SelectPatientToRecycle(int64_t& internalId) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1760 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1761 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1762 "SELECT patientId FROM PatientRecyclingOrder ORDER BY seq ASC LIMIT 1"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1763 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1764 if (!s.Step()) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1765 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1766 // No patient remaining or all the patients are protected |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1767 return false; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1768 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1769 else |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1770 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1771 internalId = s.ColumnInt(0); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1772 return true; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1773 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1774 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1775 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1776 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1777 virtual bool SelectPatientToRecycle(int64_t& internalId, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1778 int64_t patientIdToAvoid) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1779 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1780 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1781 "SELECT patientId FROM PatientRecyclingOrder " |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1782 "WHERE patientId != ? ORDER BY seq ASC LIMIT 1"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1783 s.BindInt64(0, patientIdToAvoid); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1784 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1785 if (!s.Step()) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1786 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1787 // No patient remaining or all the patients are protected |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1788 return false; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1789 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1790 else |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1791 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1792 internalId = s.ColumnInt(0); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1793 return true; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1794 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1795 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1796 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1797 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1798 virtual void SetGlobalProperty(GlobalProperty property, |
4607
f75c63aa9de0
differentiating between shared and private global properties
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4595
diff
changeset
|
1799 bool shared, |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1800 const std::string& value) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1801 { |
4607
f75c63aa9de0
differentiating between shared and private global properties
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4595
diff
changeset
|
1802 // The "shared" info is not used by the SQLite database, as it |
f75c63aa9de0
differentiating between shared and private global properties
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4595
diff
changeset
|
1803 // can only be used by one Orthanc server. |
f75c63aa9de0
differentiating between shared and private global properties
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4595
diff
changeset
|
1804 |
5090
cc1a8b3ff319
Made the default SQLite DB more robust wrt future updates like adding new columns in DB.
Alain Mazy <am@osimis.io>
parents:
5057
diff
changeset
|
1805 SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT OR REPLACE INTO GlobalProperties (property, value) VALUES(?, ?)"); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1806 s.BindInt(0, property); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1807 s.BindString(1, value); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1808 s.Run(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1809 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1810 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1811 |
4592 | 1812 // From the "ISetResourcesContent" interface |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1813 virtual void SetIdentifierTag(int64_t id, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1814 const DicomTag& tag, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1815 const std::string& value) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1816 { |
5090
cc1a8b3ff319
Made the default SQLite DB more robust wrt future updates like adding new columns in DB.
Alain Mazy <am@osimis.io>
parents:
5057
diff
changeset
|
1817 SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO DicomIdentifiers (id, tagGroup, tagElement, value) VALUES(?, ?, ?, ?)"); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1818 s.BindInt64(0, id); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1819 s.BindInt(1, tag.GetGroup()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1820 s.BindInt(2, tag.GetElement()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1821 s.BindString(3, value); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1822 s.Run(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1823 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1824 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1825 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1826 virtual void SetProtectedPatient(int64_t internalId, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1827 bool isProtected) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1828 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1829 if (isProtected) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1830 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1831 SQLite::Statement s(db_, SQLITE_FROM_HERE, "DELETE FROM PatientRecyclingOrder WHERE patientId=?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1832 s.BindInt64(0, internalId); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1833 s.Run(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1834 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1835 else if (IsProtectedPatient(internalId)) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1836 { |
5090
cc1a8b3ff319
Made the default SQLite DB more robust wrt future updates like adding new columns in DB.
Alain Mazy <am@osimis.io>
parents:
5057
diff
changeset
|
1837 SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO PatientRecyclingOrder (seq, patientId) VALUES(NULL, ?)"); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1838 s.BindInt64(0, internalId); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1839 s.Run(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1840 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1841 else |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1842 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1843 // Nothing to do: The patient is already unprotected |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1844 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1845 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1846 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1847 |
4592 | 1848 // From the "ISetResourcesContent" interface |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1849 virtual void SetMainDicomTag(int64_t id, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1850 const DicomTag& tag, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1851 const std::string& value) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1852 { |
5090
cc1a8b3ff319
Made the default SQLite DB more robust wrt future updates like adding new columns in DB.
Alain Mazy <am@osimis.io>
parents:
5057
diff
changeset
|
1853 SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO MainDicomTags (id, tagGroup, tagElement, value) VALUES(?, ?, ?, ?)"); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1854 s.BindInt64(0, id); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1855 s.BindInt(1, tag.GetGroup()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1856 s.BindInt(2, tag.GetElement()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1857 s.BindString(3, value); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1858 s.Run(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1859 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1860 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1861 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1862 virtual void SetMetadata(int64_t id, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1863 MetadataType type, |
4623
95ffe3b6ef7c
handling of revisions for metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4607
diff
changeset
|
1864 const std::string& value, |
95ffe3b6ef7c
handling of revisions for metadata
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4607
diff
changeset
|
1865 int64_t revision) ORTHANC_OVERRIDE |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1866 { |
5084
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1867 SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT OR REPLACE INTO Metadata (id, type, value, revision) VALUES(?, ?, ?, ?)"); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1868 s.BindInt64(0, id); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1869 s.BindInt(1, type); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1870 s.BindString(2, value); |
5084
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
1871 s.BindInt(3, revision); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1872 s.Run(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1873 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1874 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1875 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1876 virtual void SetResourcesContent(const Orthanc::ResourcesContent& content) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1877 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1878 ISetResourcesContent::Apply(*this, content); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1879 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1880 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1881 |
4592 | 1882 // From the "ICreateInstance" interface |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1883 virtual void TagMostRecentPatient(int64_t patient) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1884 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1885 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1886 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1887 "DELETE FROM PatientRecyclingOrder WHERE patientId=?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1888 s.BindInt64(0, patient); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1889 s.Run(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1890 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1891 assert(db_.GetLastChangeCount() == 0 || |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1892 db_.GetLastChangeCount() == 1); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1893 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1894 if (db_.GetLastChangeCount() == 0) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1895 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1896 // The patient was protected, there was nothing to delete from the recycling order |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1897 return; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1898 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1899 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1900 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1901 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1902 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
5090
cc1a8b3ff319
Made the default SQLite DB more robust wrt future updates like adding new columns in DB.
Alain Mazy <am@osimis.io>
parents:
5057
diff
changeset
|
1903 "INSERT INTO PatientRecyclingOrder (seq, patientId) VALUES(NULL, ?)"); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1904 s.BindInt64(0, patient); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1905 s.Run(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1906 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1907 } |
5220
df39c7583a49
preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5216
diff
changeset
|
1908 |
df39c7583a49
preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5216
diff
changeset
|
1909 |
df39c7583a49
preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5216
diff
changeset
|
1910 virtual void AddLabel(int64_t resource, |
df39c7583a49
preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5216
diff
changeset
|
1911 const std::string& label) ORTHANC_OVERRIDE |
df39c7583a49
preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5216
diff
changeset
|
1912 { |
5221
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1913 if (label.empty()) |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1914 { |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1915 throw OrthancException(ErrorCode_ParameterOutOfRange); |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1916 } |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1917 else |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1918 { |
5256 | 1919 SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT OR IGNORE INTO Labels (id, label) VALUES(?, ?)"); |
5221
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1920 s.BindInt64(0, resource); |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1921 s.BindString(1, label); |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1922 s.Run(); |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1923 } |
5220
df39c7583a49
preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5216
diff
changeset
|
1924 } |
df39c7583a49
preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5216
diff
changeset
|
1925 |
df39c7583a49
preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5216
diff
changeset
|
1926 |
df39c7583a49
preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5216
diff
changeset
|
1927 virtual void RemoveLabel(int64_t resource, |
df39c7583a49
preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5216
diff
changeset
|
1928 const std::string& label) ORTHANC_OVERRIDE |
df39c7583a49
preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5216
diff
changeset
|
1929 { |
5221
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1930 if (label.empty()) |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1931 { |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1932 throw OrthancException(ErrorCode_ParameterOutOfRange); |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1933 } |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1934 else |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1935 { |
5256 | 1936 SQLite::Statement s(db_, SQLITE_FROM_HERE, "DELETE FROM Labels WHERE id=? AND label=?"); |
5221
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1937 s.BindInt64(0, resource); |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1938 s.BindString(1, label); |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1939 s.Run(); |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1940 } |
5220
df39c7583a49
preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5216
diff
changeset
|
1941 } |
df39c7583a49
preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5216
diff
changeset
|
1942 |
df39c7583a49
preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5216
diff
changeset
|
1943 |
5221
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1944 virtual void ListLabels(std::set<std::string>& target, |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1945 int64_t resource) ORTHANC_OVERRIDE |
5220
df39c7583a49
preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5216
diff
changeset
|
1946 { |
5221
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1947 target.clear(); |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1948 |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1949 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
5256 | 1950 "SELECT label FROM Labels WHERE id=?"); |
5221
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1951 s.BindInt64(0, resource); |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1952 |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1953 while (s.Step()) |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1954 { |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1955 target.insert(s.ColumnString(0)); |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
1956 } |
5220
df39c7583a49
preparing virtual methods for labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5216
diff
changeset
|
1957 } |
5249
f22c8fac764b
added "/tools/labels" to list all the labels that are associated with any resource
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5248
diff
changeset
|
1958 |
f22c8fac764b
added "/tools/labels" to list all the labels that are associated with any resource
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5248
diff
changeset
|
1959 |
f22c8fac764b
added "/tools/labels" to list all the labels that are associated with any resource
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5248
diff
changeset
|
1960 virtual void ListAllLabels(std::set<std::string>& target) ORTHANC_OVERRIDE |
f22c8fac764b
added "/tools/labels" to list all the labels that are associated with any resource
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5248
diff
changeset
|
1961 { |
f22c8fac764b
added "/tools/labels" to list all the labels that are associated with any resource
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5248
diff
changeset
|
1962 target.clear(); |
f22c8fac764b
added "/tools/labels" to list all the labels that are associated with any resource
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5248
diff
changeset
|
1963 |
f22c8fac764b
added "/tools/labels" to list all the labels that are associated with any resource
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5248
diff
changeset
|
1964 SQLite::Statement s(db_, SQLITE_FROM_HERE, |
f22c8fac764b
added "/tools/labels" to list all the labels that are associated with any resource
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5248
diff
changeset
|
1965 "SELECT DISTINCT label FROM Labels"); |
f22c8fac764b
added "/tools/labels" to list all the labels that are associated with any resource
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5248
diff
changeset
|
1966 |
f22c8fac764b
added "/tools/labels" to list all the labels that are associated with any resource
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5248
diff
changeset
|
1967 while (s.Step()) |
f22c8fac764b
added "/tools/labels" to list all the labels that are associated with any resource
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5248
diff
changeset
|
1968 { |
f22c8fac764b
added "/tools/labels" to list all the labels that are associated with any resource
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5248
diff
changeset
|
1969 target.insert(s.ColumnString(0)); |
f22c8fac764b
added "/tools/labels" to list all the labels that are associated with any resource
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5248
diff
changeset
|
1970 } |
f22c8fac764b
added "/tools/labels" to list all the labels that are associated with any resource
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5248
diff
changeset
|
1971 } |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1972 }; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1973 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1974 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1975 class SQLiteDatabaseWrapper::SignalFileDeleted : public SQLite::IScalarFunction |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1976 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1977 private: |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1978 SQLiteDatabaseWrapper& sqlite_; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1979 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1980 public: |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1981 SignalFileDeleted(SQLiteDatabaseWrapper& sqlite) : |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1982 sqlite_(sqlite) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1983 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1984 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1985 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1986 virtual const char* GetName() const ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1987 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1988 return "SignalFileDeleted"; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1989 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1990 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1991 virtual unsigned int GetCardinality() const ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1992 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1993 return 7; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1994 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1995 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1996 virtual void Compute(SQLite::FunctionContext& context) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1997 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1998 if (sqlite_.activeTransaction_ != NULL) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
1999 { |
5084
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
2000 std::string id = context.GetStringValue(0); |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
2001 |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
2002 std::string customData; |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
2003 sqlite_.activeTransaction_->GetDeletedFileCustomData(customData, id); |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
2004 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2005 std::string uncompressedMD5, compressedMD5; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2006 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2007 if (!context.IsNullValue(5)) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2008 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2009 uncompressedMD5 = context.GetStringValue(5); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2010 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2011 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2012 if (!context.IsNullValue(6)) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2013 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2014 compressedMD5 = context.GetStringValue(6); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2015 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2016 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2017 FileInfo info(context.GetStringValue(0), |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2018 static_cast<FileContentType>(context.GetIntValue(1)), |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2019 static_cast<uint64_t>(context.GetInt64Value(2)), |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2020 uncompressedMD5, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2021 static_cast<CompressionType>(context.GetIntValue(3)), |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2022 static_cast<uint64_t>(context.GetInt64Value(4)), |
5080
d7274e43ea7c
allow plugins to store a customData in the Attachments table to e.g. store custom paths without requiring an external DB
Alain Mazy <am@osimis.io>
parents:
5057
diff
changeset
|
2023 compressedMD5, |
d7274e43ea7c
allow plugins to store a customData in the Attachments table to e.g. store custom paths without requiring an external DB
Alain Mazy <am@osimis.io>
parents:
5057
diff
changeset
|
2024 customData); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2025 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2026 sqlite_.activeTransaction_->GetListener().SignalAttachmentDeleted(info); |
5084
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
2027 sqlite_.activeTransaction_->DeleteDeletedFile(id); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2028 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2029 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2030 }; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2031 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2032 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2033 class SQLiteDatabaseWrapper::SignalResourceDeleted : public SQLite::IScalarFunction |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2034 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2035 private: |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2036 SQLiteDatabaseWrapper& sqlite_; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2037 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2038 public: |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2039 SignalResourceDeleted(SQLiteDatabaseWrapper& sqlite) : |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2040 sqlite_(sqlite) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2041 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2042 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2043 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2044 virtual const char* GetName() const ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2045 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2046 return "SignalResourceDeleted"; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2047 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2048 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2049 virtual unsigned int GetCardinality() const ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2050 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2051 return 2; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2052 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2053 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2054 virtual void Compute(SQLite::FunctionContext& context) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2055 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2056 if (sqlite_.activeTransaction_ != NULL) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2057 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2058 sqlite_.activeTransaction_->GetListener(). |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2059 SignalResourceDeleted(static_cast<ResourceType>(context.GetIntValue(1)), |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2060 context.GetStringValue(0)); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2061 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2062 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2063 }; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2064 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2065 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2066 class SQLiteDatabaseWrapper::ReadWriteTransaction : public SQLiteDatabaseWrapper::TransactionBase |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2067 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2068 private: |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2069 SQLiteDatabaseWrapper& that_; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2070 std::unique_ptr<SQLite::Transaction> transaction_; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2071 int64_t initialDiskSize_; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2072 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2073 public: |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2074 ReadWriteTransaction(SQLiteDatabaseWrapper& that, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2075 IDatabaseListener& listener) : |
5521
0d0f8788884a
removed unused variable dbCapabilities_ in SQLiteDatabaseWrapper::TransactionBase
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5519
diff
changeset
|
2076 TransactionBase(that.mutex_, that.db_, listener, *that.signalRemainingAncestor_), |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2077 that_(that), |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2078 transaction_(new SQLite::Transaction(that_.db_)) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2079 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2080 if (that_.activeTransaction_ != NULL) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2081 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2082 throw OrthancException(ErrorCode_InternalError); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2083 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2084 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2085 that_.activeTransaction_ = this; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2086 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2087 #if defined(NDEBUG) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2088 // Release mode |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2089 initialDiskSize_ = 0; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2090 #else |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2091 // Debug mode |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2092 initialDiskSize_ = static_cast<int64_t>(GetTotalCompressedSize()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2093 #endif |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2094 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2095 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2096 virtual ~ReadWriteTransaction() |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2097 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2098 assert(that_.activeTransaction_ != NULL); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2099 that_.activeTransaction_ = NULL; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2100 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2101 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2102 void Begin() |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2103 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2104 transaction_->Begin(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2105 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2106 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2107 virtual void Rollback() ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2108 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2109 transaction_->Rollback(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2110 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2111 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2112 virtual void Commit(int64_t fileSizeDelta /* only used in debug */) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2113 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2114 transaction_->Commit(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2115 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2116 assert(initialDiskSize_ + fileSizeDelta >= 0 && |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2117 initialDiskSize_ + fileSizeDelta == static_cast<int64_t>(GetTotalCompressedSize())); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2118 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2119 }; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2120 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2121 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2122 class SQLiteDatabaseWrapper::ReadOnlyTransaction : public SQLiteDatabaseWrapper::TransactionBase |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2123 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2124 private: |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2125 SQLiteDatabaseWrapper& that_; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2126 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2127 public: |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2128 ReadOnlyTransaction(SQLiteDatabaseWrapper& that, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2129 IDatabaseListener& listener) : |
5521
0d0f8788884a
removed unused variable dbCapabilities_ in SQLiteDatabaseWrapper::TransactionBase
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5519
diff
changeset
|
2130 TransactionBase(that.mutex_, that.db_, listener, *that.signalRemainingAncestor_), |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2131 that_(that) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2132 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2133 if (that_.activeTransaction_ != NULL) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2134 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2135 throw OrthancException(ErrorCode_InternalError); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2136 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2137 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2138 that_.activeTransaction_ = this; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2139 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2140 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2141 virtual ~ReadOnlyTransaction() |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2142 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2143 assert(that_.activeTransaction_ != NULL); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2144 that_.activeTransaction_ = NULL; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2145 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2146 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2147 virtual void Rollback() ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2148 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2149 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2150 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2151 virtual void Commit(int64_t fileSizeDelta /* only used in debug */) ORTHANC_OVERRIDE |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2152 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2153 if (fileSizeDelta != 0) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2154 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2155 throw OrthancException(ErrorCode_InternalError); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2156 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2157 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2158 }; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2159 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2160 |
3017
517fc4767ae0
renamed class DatabaseWrapper as SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2955
diff
changeset
|
2161 SQLiteDatabaseWrapper::SQLiteDatabaseWrapper(const std::string& path) : |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2162 activeTransaction_(NULL), |
1847 | 2163 signalRemainingAncestor_(NULL), |
5517
0d433132b249
refactoring IDatabaseWrapper::Capabilities
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5497
diff
changeset
|
2164 version_(0) |
183 | 2165 { |
5517
0d433132b249
refactoring IDatabaseWrapper::Capabilities
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5497
diff
changeset
|
2166 // TODO: implement revisions in SQLite |
0d433132b249
refactoring IDatabaseWrapper::Capabilities
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5497
diff
changeset
|
2167 dbCapabilities_.SetFlushToDisk(true); |
0d433132b249
refactoring IDatabaseWrapper::Capabilities
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5497
diff
changeset
|
2168 dbCapabilities_.SetLabelsSupport(true); |
5757 | 2169 dbCapabilities_.SetHasExtendedChanges(true); |
5776
de33982a0bf4
wip: started implementing Find in PostgreSQL
Alain Mazy <am@orthanc.team>
parents:
5774
diff
changeset
|
2170 dbCapabilities_.SetHasFindSupport(true); |
183 | 2171 db_.Open(path); |
2172 } | |
2173 | |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2174 |
3017
517fc4767ae0
renamed class DatabaseWrapper as SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2955
diff
changeset
|
2175 SQLiteDatabaseWrapper::SQLiteDatabaseWrapper() : |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2176 activeTransaction_(NULL), |
1847 | 2177 signalRemainingAncestor_(NULL), |
5517
0d433132b249
refactoring IDatabaseWrapper::Capabilities
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5497
diff
changeset
|
2178 version_(0) |
183 | 2179 { |
5517
0d433132b249
refactoring IDatabaseWrapper::Capabilities
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5497
diff
changeset
|
2180 // TODO: implement revisions in SQLite |
0d433132b249
refactoring IDatabaseWrapper::Capabilities
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5497
diff
changeset
|
2181 dbCapabilities_.SetFlushToDisk(true); |
0d433132b249
refactoring IDatabaseWrapper::Capabilities
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5497
diff
changeset
|
2182 dbCapabilities_.SetLabelsSupport(true); |
5757 | 2183 dbCapabilities_.SetHasExtendedChanges(true); |
5776
de33982a0bf4
wip: started implementing Find in PostgreSQL
Alain Mazy <am@orthanc.team>
parents:
5774
diff
changeset
|
2184 dbCapabilities_.SetHasFindSupport(true); |
183 | 2185 db_.OpenInMemory(); |
2186 } | |
2187 | |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2188 SQLiteDatabaseWrapper::~SQLiteDatabaseWrapper() |
3116 | 2189 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2190 if (activeTransaction_ != NULL) |
3116 | 2191 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2192 LOG(ERROR) << "A SQLite transaction is still active in the SQLiteDatabaseWrapper destructor: Expect a crash"; |
3116 | 2193 } |
2194 } | |
2195 | |
2196 | |
3017
517fc4767ae0
renamed class DatabaseWrapper as SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2955
diff
changeset
|
2197 void SQLiteDatabaseWrapper::Open() |
183 | 2198 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2199 { |
4594
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2200 boost::mutex::scoped_lock lock(mutex_); |
1717
3926e6317a43
SetIdentifierTagInternal
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1712
diff
changeset
|
2201 |
4594
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2202 if (signalRemainingAncestor_ != NULL) |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2203 { |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2204 throw OrthancException(ErrorCode_BadSequenceOfCalls); // Cannot open twice |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2205 } |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2206 |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2207 signalRemainingAncestor_ = dynamic_cast<SignalRemainingAncestor*>(db_.Register(new SignalRemainingAncestor)); |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2208 db_.Register(new SignalFileDeleted(*this)); |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2209 db_.Register(new SignalResourceDeleted(*this)); |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2210 |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2211 db_.Execute("PRAGMA ENCODING=\"UTF-8\";"); |
374 | 2212 |
4594
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2213 // Performance tuning of SQLite with PRAGMAs |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2214 // http://www.sqlite.org/pragma.html |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2215 db_.Execute("PRAGMA SYNCHRONOUS=NORMAL;"); |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2216 db_.Execute("PRAGMA JOURNAL_MODE=WAL;"); |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2217 db_.Execute("PRAGMA LOCKING_MODE=EXCLUSIVE;"); |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2218 db_.Execute("PRAGMA WAL_AUTOCHECKPOINT=1000;"); |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2219 //db_.Execute("PRAGMA TEMP_STORE=memory"); |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2220 |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2221 // Make "LIKE" case-sensitive in SQLite |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2222 db_.Execute("PRAGMA case_sensitive_like = true;"); |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2223 } |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2224 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2225 VoidDatabaseListener listener; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2226 |
183 | 2227 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2228 std::unique_ptr<ITransaction> transaction(StartTransaction(TransactionType_ReadOnly, listener)); |
1239 | 2229 |
3116 | 2230 if (!db_.DoesTableExist("GlobalProperties")) |
3018
e3b5c07146a3
speeding up the computation of the size of the attachments in SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3017
diff
changeset
|
2231 { |
3116 | 2232 LOG(INFO) << "Creating the database"; |
3018
e3b5c07146a3
speeding up the computation of the size of the attachments in SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3017
diff
changeset
|
2233 std::string query; |
4031
e3b3af80732d
ServerResources, and moving EmbeddedResourceHttpHandler from Core to OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4030
diff
changeset
|
2234 ServerResources::GetFileResource(query, ServerResources::PREPARE_DATABASE); |
3018
e3b5c07146a3
speeding up the computation of the size of the attachments in SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3017
diff
changeset
|
2235 db_.Execute(query); |
e3b5c07146a3
speeding up the computation of the size of the attachments in SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3017
diff
changeset
|
2236 } |
3116 | 2237 |
2238 // Check the version of the database | |
2239 std::string tmp; | |
4607
f75c63aa9de0
differentiating between shared and private global properties
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4595
diff
changeset
|
2240 if (!transaction->LookupGlobalProperty(tmp, GlobalProperty_DatabaseSchemaVersion, true /* unused in SQLite */)) |
3116 | 2241 { |
2242 tmp = "Unknown"; | |
2243 } | |
2244 | |
2245 bool ok = false; | |
2246 try | |
2247 { | |
2248 LOG(INFO) << "Version of the Orthanc database: " << tmp; | |
2249 version_ = boost::lexical_cast<unsigned int>(tmp); | |
2250 ok = true; | |
2251 } | |
2252 catch (boost::bad_lexical_cast&) | |
2253 { | |
2254 } | |
2255 | |
2256 if (!ok) | |
2257 { | |
2258 throw OrthancException(ErrorCode_IncompatibleDatabaseVersion, | |
2259 "Incompatible version of the Orthanc database: " + tmp); | |
2260 } | |
2261 | |
2262 if (version_ == 6) | |
2263 { | |
5221
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
2264 // New in Orthanc 1.5.1 |
4607
f75c63aa9de0
differentiating between shared and private global properties
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4595
diff
changeset
|
2265 if (!transaction->LookupGlobalProperty(tmp, GlobalProperty_GetTotalSizeIsFast, true /* unused in SQLite */) || |
3116 | 2266 tmp != "1") |
2267 { | |
2268 LOG(INFO) << "Installing the SQLite triggers to track the size of the attachments"; | |
2269 std::string query; | |
4031
e3b3af80732d
ServerResources, and moving EmbeddedResourceHttpHandler from Core to OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4030
diff
changeset
|
2270 ServerResources::GetFileResource(query, ServerResources::INSTALL_TRACK_ATTACHMENTS_SIZE); |
3116 | 2271 db_.Execute(query); |
2272 } | |
5221
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
2273 |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
2274 // New in Orthanc 1.12.0 |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
2275 if (!db_.DoesTableExist("Labels")) |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
2276 { |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
2277 LOG(INFO) << "Installing the \"Labels\" table"; |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
2278 std::string query; |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
2279 ServerResources::GetFileResource(query, ServerResources::INSTALL_LABELS_TABLE); |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
2280 db_.Execute(query); |
d0f7c742d397
started implementation of labels
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5220
diff
changeset
|
2281 } |
3116 | 2282 } |
2283 | |
5807 | 2284 // New in Orthanc 1.12.5 |
5084
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
2285 if (version_ >= 6) |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
2286 { |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
2287 if (!transaction->LookupGlobalProperty(tmp, GlobalProperty_SQLiteHasCustomDataAndRevision, true /* unused in SQLite */) |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
2288 || tmp != "1") |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
2289 { |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
2290 LOG(INFO) << "Upgrading SQLite schema to support revision and customData"; |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
2291 std::string query; |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
2292 ServerResources::GetFileResource(query, ServerResources::INSTALL_REVISION_AND_CUSTOM_DATA); |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
2293 db_.Execute(query); |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
2294 } |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
2295 } |
9770d537880d
added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents:
5080
diff
changeset
|
2296 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2297 transaction->Commit(0); |
3018
e3b5c07146a3
speeding up the computation of the size of the attachments in SQLite
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3017
diff
changeset
|
2298 } |
1247 | 2299 } |
2300 | |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2301 |
4594
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2302 void SQLiteDatabaseWrapper::Close() |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2303 { |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2304 boost::mutex::scoped_lock lock(mutex_); |
5057
e6f26be401fa
SQLite: close and delete WAL and SHM files on exit (contribution from Sebastian Höffner)
Alain Mazy <am@osimis.io>
parents:
4892
diff
changeset
|
2305 // close and delete the WAL when exiting properly -> the DB is stored in a single file (no more -wal and -shm files) |
e6f26be401fa
SQLite: close and delete WAL and SHM files on exit (contribution from Sebastian Höffner)
Alain Mazy <am@osimis.io>
parents:
4892
diff
changeset
|
2306 db_.Execute("PRAGMA JOURNAL_MODE=DELETE;"); |
4594
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2307 db_.Close(); |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2308 } |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2309 |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2310 |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2311 static void ExecuteUpgradeScript(SQLite::Connection& db, |
4031
e3b3af80732d
ServerResources, and moving EmbeddedResourceHttpHandler from Core to OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4030
diff
changeset
|
2312 ServerResources::FileResourceId script) |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2313 { |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2314 std::string upgrade; |
4031
e3b3af80732d
ServerResources, and moving EmbeddedResourceHttpHandler from Core to OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4030
diff
changeset
|
2315 ServerResources::GetFileResource(upgrade, script); |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2316 db.BeginTransaction(); |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2317 db.Execute(upgrade); |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2318 db.CommitTransaction(); |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2319 } |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2320 |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2321 |
3017
517fc4767ae0
renamed class DatabaseWrapper as SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2955
diff
changeset
|
2322 void SQLiteDatabaseWrapper::Upgrade(unsigned int targetVersion, |
517fc4767ae0
renamed class DatabaseWrapper as SQLiteDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2955
diff
changeset
|
2323 IStorageArea& storageArea) |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2324 { |
4594
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2325 boost::mutex::scoped_lock lock(mutex_); |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2326 |
5080
d7274e43ea7c
allow plugins to store a customData in the Attachments table to e.g. store custom paths without requiring an external DB
Alain Mazy <am@osimis.io>
parents:
5057
diff
changeset
|
2327 if (targetVersion != 7) |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2328 { |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2329 throw OrthancException(ErrorCode_IncompatibleDatabaseVersion); |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2330 } |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2331 |
1664
0c58f189782d
prepare migration to db v6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1615
diff
changeset
|
2332 // This version of Orthanc is only compatible with versions 3, 4, |
0c58f189782d
prepare migration to db v6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1615
diff
changeset
|
2333 // 5 and 6 of the DB schema |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2334 if (version_ != 3 && |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2335 version_ != 4 && |
1664
0c58f189782d
prepare migration to db v6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1615
diff
changeset
|
2336 version_ != 5 && |
5080
d7274e43ea7c
allow plugins to store a customData in the Attachments table to e.g. store custom paths without requiring an external DB
Alain Mazy <am@osimis.io>
parents:
5057
diff
changeset
|
2337 version_ != 6 && |
d7274e43ea7c
allow plugins to store a customData in the Attachments table to e.g. store custom paths without requiring an external DB
Alain Mazy <am@osimis.io>
parents:
5057
diff
changeset
|
2338 version_ != 7) |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2339 { |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2340 throw OrthancException(ErrorCode_IncompatibleDatabaseVersion); |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2341 } |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2342 |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2343 if (version_ == 3) |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2344 { |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2345 LOG(WARNING) << "Upgrading database version from 3 to 4"; |
4031
e3b3af80732d
ServerResources, and moving EmbeddedResourceHttpHandler from Core to OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4030
diff
changeset
|
2346 ExecuteUpgradeScript(db_, ServerResources::UPGRADE_DATABASE_3_TO_4); |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2347 version_ = 4; |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2348 } |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2349 |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2350 if (version_ == 4) |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2351 { |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2352 LOG(WARNING) << "Upgrading database version from 4 to 5"; |
4031
e3b3af80732d
ServerResources, and moving EmbeddedResourceHttpHandler from Core to OrthancServer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4030
diff
changeset
|
2353 ExecuteUpgradeScript(db_, ServerResources::UPGRADE_DATABASE_4_TO_5); |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2354 version_ = 5; |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2355 } |
1664
0c58f189782d
prepare migration to db v6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1615
diff
changeset
|
2356 |
0c58f189782d
prepare migration to db v6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1615
diff
changeset
|
2357 if (version_ == 5) |
0c58f189782d
prepare migration to db v6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1615
diff
changeset
|
2358 { |
0c58f189782d
prepare migration to db v6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1615
diff
changeset
|
2359 LOG(WARNING) << "Upgrading database version from 5 to 6"; |
1668
de1413733c97
reconstructing main dicom tags
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1665
diff
changeset
|
2360 // No change in the DB schema, the step from version 5 to 6 only |
1710 | 2361 // consists in reconstructing the main DICOM tags information |
2362 // (as more tags got included). | |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2363 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2364 VoidDatabaseListener listener; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2365 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2366 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2367 std::unique_ptr<ITransaction> transaction(StartTransaction(TransactionType_ReadWrite, listener)); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2368 ServerToolbox::ReconstructMainDicomTags(*transaction, storageArea, ResourceType_Patient); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2369 ServerToolbox::ReconstructMainDicomTags(*transaction, storageArea, ResourceType_Study); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2370 ServerToolbox::ReconstructMainDicomTags(*transaction, storageArea, ResourceType_Series); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2371 ServerToolbox::ReconstructMainDicomTags(*transaction, storageArea, ResourceType_Instance); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2372 db_.Execute("UPDATE GlobalProperties SET value=\"6\" WHERE property=" + |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2373 boost::lexical_cast<std::string>(GlobalProperty_DatabaseSchemaVersion) + ";"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2374 transaction->Commit(0); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2375 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2376 |
1664
0c58f189782d
prepare migration to db v6
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1615
diff
changeset
|
2377 version_ = 6; |
1729 | 2378 } |
5080
d7274e43ea7c
allow plugins to store a customData in the Attachments table to e.g. store custom paths without requiring an external DB
Alain Mazy <am@osimis.io>
parents:
5057
diff
changeset
|
2379 |
1615
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2380 } |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2381 |
c40fe92a68e7
Primitives to upgrade the database version in plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1509
diff
changeset
|
2382 |
4589
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
2383 IDatabaseWrapper::ITransaction* SQLiteDatabaseWrapper::StartTransaction(TransactionType type, |
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
2384 IDatabaseListener& listener) |
4570
648defffc8cc
new enum: TransactionType
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4556
diff
changeset
|
2385 { |
648defffc8cc
new enum: TransactionType
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4556
diff
changeset
|
2386 switch (type) |
648defffc8cc
new enum: TransactionType
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4556
diff
changeset
|
2387 { |
648defffc8cc
new enum: TransactionType
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4556
diff
changeset
|
2388 case TransactionType_ReadOnly: |
4589
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
2389 return new ReadOnlyTransaction(*this, listener); // This is a no-op transaction in SQLite (thanks to mutex) |
4570
648defffc8cc
new enum: TransactionType
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4556
diff
changeset
|
2390 |
648defffc8cc
new enum: TransactionType
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4556
diff
changeset
|
2391 case TransactionType_ReadWrite: |
648defffc8cc
new enum: TransactionType
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4556
diff
changeset
|
2392 { |
648defffc8cc
new enum: TransactionType
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4556
diff
changeset
|
2393 std::unique_ptr<ReadWriteTransaction> transaction; |
4589
bec74e29f86b
attaching the listener to transactions in IDatabaseWrapper
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4571
diff
changeset
|
2394 transaction.reset(new ReadWriteTransaction(*this, listener)); |
4570
648defffc8cc
new enum: TransactionType
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4556
diff
changeset
|
2395 transaction->Begin(); |
648defffc8cc
new enum: TransactionType
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4556
diff
changeset
|
2396 return transaction.release(); |
648defffc8cc
new enum: TransactionType
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4556
diff
changeset
|
2397 } |
648defffc8cc
new enum: TransactionType
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4556
diff
changeset
|
2398 |
648defffc8cc
new enum: TransactionType
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4556
diff
changeset
|
2399 default: |
648defffc8cc
new enum: TransactionType
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4556
diff
changeset
|
2400 throw OrthancException(ErrorCode_InternalError); |
648defffc8cc
new enum: TransactionType
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4556
diff
changeset
|
2401 } |
3019
8336204d95dc
refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3018
diff
changeset
|
2402 } |
8336204d95dc
refactoring computation of disk size for recycling
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3018
diff
changeset
|
2403 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2404 |
4594
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2405 void SQLiteDatabaseWrapper::FlushToDisk() |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2406 { |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2407 boost::mutex::scoped_lock lock(mutex_); |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2408 db_.FlushToDisk(); |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2409 } |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2410 |
d494b4f1103e
removed the global database mutex from ServerIndex and StatelessDatabaseOperations
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4592
diff
changeset
|
2411 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2412 int64_t SQLiteDatabaseWrapper::UnitTestsTransaction::CreateResource(const std::string& publicId, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2413 ResourceType type) |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2414 { |
5090
cc1a8b3ff319
Made the default SQLite DB more robust wrt future updates like adding new columns in DB.
Alain Mazy <am@osimis.io>
parents:
5057
diff
changeset
|
2415 SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO Resources (internalId, resourceType, publicId, parentId) VALUES(NULL, ?, ?, NULL)"); |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2416 s.BindInt(0, type); |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2417 s.BindString(1, publicId); |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2418 s.Run(); |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2419 return db_.GetLastInsertRowId(); |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2420 } |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2421 |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2422 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2423 void SQLiteDatabaseWrapper::UnitTestsTransaction::AttachChild(int64_t parent, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2424 int64_t child) |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2425 { |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2426 SQLite::Statement s(db_, SQLITE_FROM_HERE, "UPDATE Resources SET parentId = ? WHERE internalId = ?"); |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2427 s.BindInt64(0, parent); |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2428 s.BindInt64(1, child); |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2429 s.Run(); |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2430 } |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2431 |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2432 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2433 void SQLiteDatabaseWrapper::UnitTestsTransaction::SetIdentifierTag(int64_t id, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2434 const DicomTag& tag, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2435 const std::string& value) |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2436 { |
5090
cc1a8b3ff319
Made the default SQLite DB more robust wrt future updates like adding new columns in DB.
Alain Mazy <am@osimis.io>
parents:
5057
diff
changeset
|
2437 SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO DicomIdentifiers (id, tagGroup, tagElement, value) VALUES(?, ?, ?, ?)"); |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2438 s.BindInt64(0, id); |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2439 s.BindInt(1, tag.GetGroup()); |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2440 s.BindInt(2, tag.GetElement()); |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2441 s.BindString(3, value); |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2442 s.Run(); |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2443 } |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2444 |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2445 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2446 void SQLiteDatabaseWrapper::UnitTestsTransaction::SetMainDicomTag(int64_t id, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2447 const DicomTag& tag, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2448 const std::string& value) |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2449 { |
5090
cc1a8b3ff319
Made the default SQLite DB more robust wrt future updates like adding new columns in DB.
Alain Mazy <am@osimis.io>
parents:
5057
diff
changeset
|
2450 SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO MainDicomTags (id, tagGroup, tagElement, value) VALUES(?, ?, ?, ?)"); |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2451 s.BindInt64(0, id); |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2452 s.BindInt(1, tag.GetGroup()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2453 s.BindInt(2, tag.GetElement()); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2454 s.BindString(3, value); |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2455 s.Run(); |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2456 } |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2457 |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2458 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2459 int64_t SQLiteDatabaseWrapper::UnitTestsTransaction::GetTableRecordCount(const std::string& table) |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2460 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2461 /** |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2462 * "Generally one cannot use SQL parameters/placeholders for |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2463 * database identifiers (tables, columns, views, schemas, etc.) or |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2464 * database functions (e.g., CURRENT_DATE), but instead only for |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2465 * binding literal values." => To avoid any SQL injection, we |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2466 * check that the "table" parameter has only alphabetic |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2467 * characters. |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2468 * https://stackoverflow.com/a/1274764/881731 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2469 **/ |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2470 for (size_t i = 0; i < table.size(); i++) |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2471 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2472 if (!isalpha(table[i])) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2473 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2474 throw OrthancException(ErrorCode_ParameterOutOfRange); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2475 } |
2773
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2476 } |
bb63068844ae
moving DatabaseWrapperBase into graveyard
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2447
diff
changeset
|
2477 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2478 // Don't use "SQLITE_FROM_HERE", otherwise "table" would be cached |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2479 SQLite::Statement s(db_, "SELECT COUNT(*) FROM " + table); |
3105
2e1711f80f74
More consistent handling of the "Last" field returned by the "/changes" URI
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3093
diff
changeset
|
2480 |
2e1711f80f74
More consistent handling of the "Last" field returned by the "/changes" URI
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3093
diff
changeset
|
2481 if (s.Step()) |
2e1711f80f74
More consistent handling of the "Last" field returned by the "/changes" URI
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3093
diff
changeset
|
2482 { |
2e1711f80f74
More consistent handling of the "Last" field returned by the "/changes" URI
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3093
diff
changeset
|
2483 int64_t c = s.ColumnInt(0); |
2e1711f80f74
More consistent handling of the "Last" field returned by the "/changes" URI
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3093
diff
changeset
|
2484 assert(!s.Step()); |
2e1711f80f74
More consistent handling of the "Last" field returned by the "/changes" URI
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3093
diff
changeset
|
2485 return c; |
2e1711f80f74
More consistent handling of the "Last" field returned by the "/changes" URI
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3093
diff
changeset
|
2486 } |
2e1711f80f74
More consistent handling of the "Last" field returned by the "/changes" URI
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3093
diff
changeset
|
2487 else |
2e1711f80f74
More consistent handling of the "Last" field returned by the "/changes" URI
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3093
diff
changeset
|
2488 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2489 throw OrthancException(ErrorCode_InternalError); |
3105
2e1711f80f74
More consistent handling of the "Last" field returned by the "/changes" URI
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3093
diff
changeset
|
2490 } |
2e1711f80f74
More consistent handling of the "Last" field returned by the "/changes" URI
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3093
diff
changeset
|
2491 } |
3121 | 2492 |
2493 | |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2494 bool SQLiteDatabaseWrapper::UnitTestsTransaction::GetParentPublicId(std::string& target, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2495 int64_t id) |
3121 | 2496 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2497 SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT a.publicId FROM Resources AS a, Resources AS b " |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2498 "WHERE a.internalId = b.parentId AND b.internalId = ?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2499 s.BindInt64(0, id); |
3124
c0d7aee8c3f8
Fix issue #58 (Patient recycling order should be defined by their received last instance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3121
diff
changeset
|
2500 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2501 if (s.Step()) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2502 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2503 target = s.ColumnString(0); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2504 return true; |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2505 } |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2506 else |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2507 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2508 return false; |
3124
c0d7aee8c3f8
Fix issue #58 (Patient recycling order should be defined by their received last instance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3121
diff
changeset
|
2509 } |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2510 } |
3124
c0d7aee8c3f8
Fix issue #58 (Patient recycling order should be defined by their received last instance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3121
diff
changeset
|
2511 |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2512 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2513 void SQLiteDatabaseWrapper::UnitTestsTransaction::GetChildren(std::list<std::string>& childrenPublicIds, |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2514 int64_t id) |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2515 { |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2516 SQLite::Statement s(db_, SQLITE_FROM_HERE, "SELECT publicId FROM Resources WHERE parentId=?"); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2517 s.BindInt64(0, id); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2518 |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2519 childrenPublicIds.clear(); |
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2520 while (s.Step()) |
3124
c0d7aee8c3f8
Fix issue #58 (Patient recycling order should be defined by their received last instance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3121
diff
changeset
|
2521 { |
4591
ff8170d17d90
moving all accesses to databases from IDatabaseWrapper to ITransaction
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4589
diff
changeset
|
2522 childrenPublicIds.push_back(s.ColumnString(0)); |
3124
c0d7aee8c3f8
Fix issue #58 (Patient recycling order should be defined by their received last instance)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3121
diff
changeset
|
2523 } |
3121 | 2524 } |
183 | 2525 } |