@@ -140,7 +140,18 @@ Method versionsGet() As %ListOfDataTypes
140
140
Set tList = ##class (%ListOfDataTypes ).%New ()
141
141
142
142
Set name = ..name
143
- &sql (SELECT %DLIST(version) INTO :versions FROM Package WHERE name = :name )
143
+ Set tPrerelease = $Select ($Data (%request ) # 2 : %request .Get (" includePrerelease" , 0 ), 1 : 1 )
144
+ Set tSnapshot = $Select ($Data (%request ) # 2 : %request .Get (" includeSnapshots" , 0 ), 1 : 1 )
145
+ &sql (
146
+ SELECT %DLIST(version) INTO :versions
147
+ FROM Package
148
+ WHERE name = :name
149
+ AND (
150
+ versionPrerelease IS NULL
151
+ OR (:tSnapshot = 1 AND LOWER (versionPrerelease ) = 'snapshot ')
152
+ OR (:tPrerelease = 1 AND LOWER (versionPrerelease ) <> 'snapshot ')
153
+ )
154
+ )
144
155
If (SQLCODE =0 ) {
145
156
Set ptr = 0
146
157
While $ListNext (versions , ptr , version ) {
@@ -158,20 +169,33 @@ Method versionsGet() As %ListOfDataTypes
158
169
Return tList
159
170
}
160
171
161
- ClassMethod VersionFind (pkg As %String = " " , version As %String = " " ) As %String
172
+ ClassMethod VersionFind (pkg As %String = " " , version As %String = " " , pPrerelease As %Boolean = 1 , pSnapshot As %Boolean = 1 ) As %String
162
173
{
163
174
If (version = " " ) || (version = " latest" ) || (version = " *" ) {
164
175
// package was published directly in this registry - return the last version
165
- &sql (SELECT TOP 1 Version INTO :version FROM ZPM .Package WHERE Name = :pkg AND UpLink IS NULL
166
- ORDER BY versionMajor DESC , versionMinor DESC , versionPatch DESC , versionPrerelease DESC , versionBuildmetadata DESC
176
+ &sql (SELECT TOP 1 Version INTO :version FROM ZPM .Package
177
+ WHERE Name = :pkg
178
+ AND UpLink IS NULL
179
+ AND (
180
+ versionPrerelease IS NULL
181
+ OR (:pSnapshot = 1 AND LOWER (versionPrerelease) = 'snapshot ')
182
+ OR (:pPrerelease = 1 AND LOWER (versionPrerelease ) <> 'snapshot ')
183
+ )
184
+ ORDER BY versionMajor DESC , versionMinor DESC , versionPatch DESC , versionPrerelease DESC , versionBuildmetadata DESC
167
185
)
168
186
If SQLCODE =0 {
169
187
// found
170
188
Return version
171
189
} Else {
172
190
// find the latest version in UpLinks
173
191
Do ##class (ZPM.UpLink ).LoadPackageFromAllUpLinks (pkg , " latest" )
174
- &sql (SELECT TOP 1 Version INTO :version FROM ZPM .Package WHERE Name = :pkg
192
+ &sql (SELECT TOP 1 Version INTO :version FROM ZPM .Package
193
+ WHERE Name = :pkg
194
+ AND (
195
+ versionPrerelease IS NULL
196
+ OR (:pSnapshot = 1 AND LOWER (versionPrerelease) = 'snapshot ')
197
+ OR (:pPrerelease = 1 AND LOWER (versionPrerelease ) <> 'snapshot ')
198
+ )
175
199
ORDER BY versionMajor DESC , versionMinor DESC , versionPatch DESC , versionPrerelease DESC , versionBuildmetadata DESC
176
200
)
177
201
If SQLCODE =0 {
0 commit comments