2 * Copyright (C) 2019 Bell Canada.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.onap.ccsdk.cds.blueprintsprocessor.functions.resource.resolution.db
18 import org.springframework.data.jpa.repository.JpaRepository
19 import org.springframework.data.jpa.repository.Modifying
20 import org.springframework.data.jpa.repository.Query
21 import org.springframework.data.repository.query.Param
22 import org.springframework.stereotype.Repository
23 import javax.transaction.Transactional
26 interface TemplateResolutionRepository : JpaRepository<TemplateResolution, String> {
30 SELECT * FROM TEMPLATE_RESOLUTION
31 WHERE resource_type = :resourceType AND resource_id = :resourceId
32 AND blueprint_name = :blueprintName AND blueprint_version = :blueprintVersion
33 AND artifact_name = :artifactName AND occurrence = :occurrence
34 ORDER BY creation_date DESC LIMIT 1
38 fun findByResourceIdAndResourceTypeAndBlueprintNameAndBlueprintVersionAndArtifactNameAndOccurrence(
41 blueprintName: String?,
42 blueprintVersion: String?,
45 ): TemplateResolution?
49 SELECT * FROM TEMPLATE_RESOLUTION WHERE resolution_key = :key
50 AND blueprint_name = :blueprintName AND blueprint_version = :blueprintVersion
51 AND artifact_name = :artifactName AND occurrence = :occurrence
52 ORDER BY creation_date DESC LIMIT 1
56 fun findByResolutionKeyAndBlueprintNameAndBlueprintVersionAndArtifactNameAndOccurrence(
58 blueprintName: String?,
59 blueprintVersion: String?,
62 ): TemplateResolution?
66 SELECT * FROM TEMPLATE_RESOLUTION WHERE resolution_key = :key
67 AND blueprint_name = :blueprintName AND blueprint_version = :blueprintVersion
68 AND artifact_name = :artifactName
69 AND occurrence <= :firstN
73 fun findFirstNOccurrences(
74 @Param("key")key: String,
75 @Param("blueprintName")blueprintName: String,
76 @Param("blueprintVersion")blueprintVersion: String,
77 @Param("artifactName")artifactName: String,
78 @Param("firstN")begin: Int
79 ): List<TemplateResolution>
83 SELECT * FROM TEMPLATE_RESOLUTION WHERE resolution_key = :key
84 AND blueprint_name = :blueprintName AND blueprint_version = :blueprintVersion
85 AND artifact_name = :artifactName
87 select max(occurrence) - :lastN from RESOURCE_RESOLUTION
88 WHERE resolution_key = :key
89 AND blueprint_name = :blueprintName AND blueprint_version = :blueprintVersion
90 AND artifact_name = :artifactName)
91 ORDER BY occurrence DESC, creation_date DESC
95 fun findLastNOccurrences(
96 @Param("key")key: String,
97 @Param("blueprintName")blueprintName: String,
98 @Param("blueprintVersion")blueprintVersion: String,
99 @Param("artifactName")artifactName: String,
100 @Param("lastN")begin: Int
101 ): List<TemplateResolution>
105 SELECT * FROM TEMPLATE_RESOLUTION WHERE resolution_key = :key
106 AND blueprint_name = :blueprintName AND blueprint_version = :blueprintVersion
107 AND artifact_name = :artifactName
108 AND occurrence BETWEEN :begin AND :end
109 ORDER BY occurrence DESC, creation_date DESC
113 fun findOccurrencesWithinRange(
114 @Param("key")key: String,
115 @Param("blueprintName")blueprintName: String,
116 @Param("blueprintVersion")blueprintVersion: String,
117 @Param("artifactName")artifactName: String,
118 @Param("begin")begin: Int,
119 @Param("end")end: Int
120 ): List<TemplateResolution>
122 fun findByResolutionKeyAndBlueprintNameAndBlueprintVersionAndArtifactName(
123 resolutionKey: String,
124 blueprintName: String,
125 blueprintVersion: String,
126 artifactPrefix: String
127 ): List<TemplateResolution>
130 "select tr.resolutionKey from TemplateResolution tr where tr.blueprintName = :blueprintName and tr.blueprintVersion = :blueprintVersion and tr.artifactName = :artifactName and tr.occurrence = :occurrence"
132 fun findResolutionKeysByBlueprintNameAndBlueprintVersionAndArtifactNameAndOccurrence(
133 @Param("blueprintName") blueprintName: String?,
134 @Param("blueprintVersion") blueprintVersion: String?,
135 @Param("artifactName") artifactName: String,
136 @Param("occurrence") occurrence: Int
140 "select tr.artifactName as artifactName, tr.resolutionKey as resolutionKey from TemplateResolution tr where tr.blueprintName = :blueprintName and tr.blueprintVersion = :blueprintVersion and tr.occurrence = :occurrence"
142 fun findArtifactNamesAndResolutionKeysByBlueprintNameAndBlueprintVersionAndOccurrence(
143 @Param("blueprintName") blueprintName: String?,
144 @Param("blueprintVersion") blueprintVersion: String?,
145 @Param("occurrence") occurrence: Int
146 ): List<TemplateResolutionSelector>?
149 fun deleteByResourceIdAndResourceTypeAndBlueprintNameAndBlueprintVersionAndArtifactNameAndOccurrence(
151 resourceType: String,
152 blueprintName: String?,
153 blueprintVersion: String?,
154 artifactName: String,
159 fun deleteByResolutionKeyAndBlueprintNameAndBlueprintVersionAndArtifactNameAndOccurrence(
161 blueprintName: String?,
162 blueprintVersion: String?,
163 artifactName: String,
168 fun deleteByResourceIdAndResourceTypeAndBlueprintNameAndBlueprintVersionAndArtifactName(
170 resourceType: String,
171 blueprintName: String,
172 blueprintVersion: String,
177 fun deleteByResolutionKeyAndBlueprintNameAndBlueprintVersionAndArtifactName(
179 blueprintName: String,
180 blueprintVersion: String,
188 DELETE FROM TEMPLATE_RESOLUTION WHERE resolution_key = :resolutionKey
189 AND blueprint_name = :blueprintName AND blueprint_version = :blueprintVersion
190 AND artifact_name = :artifactName
192 SELECT MAX(occurrence) - :lastN FROM (
193 SELECT occurrence FROM TEMPLATE_RESOLUTION
194 WHERE resolution_key = :resolutionKey
195 AND blueprint_name = :blueprintName
196 AND blueprint_version = :blueprintVersion
197 AND artifact_name = :artifactName) AS o
203 blueprintName: String,
204 blueprintVersion: String,
205 artifactName: String,
206 resolutionKey: String,
214 DELETE FROM TEMPLATE_RESOLUTION WHERE resource_type = :resourceType
215 AND resource_id = :resourceId AND artifact_name = :artifactName
216 AND blueprint_name = :blueprintName AND blueprint_version = :blueprintVersion
218 SELECT MAX(occurrence) - :lastN FROM (
219 SELECT occurrence FROM TEMPLATE_RESOLUTION
220 WHERE resource_type = :resourceType
221 AND resource_id = :resourceId
222 AND blueprint_name = :blueprintName
223 AND blueprint_version = :blueprintVersion
224 AND artifact_name = :artifactName) AS o
230 blueprintName: String,
231 blueprintVersion: String,
232 artifactName: String,
233 resourceType: String,