|
18 | 18 | package appStoreDiscoverRepository
|
19 | 19 |
|
20 | 20 | import (
|
| 21 | + "fmt" |
21 | 22 | appStoreBean "github.com/devtron-labs/devtron/pkg/appStore/bean"
|
22 | 23 | "github.com/devtron-labs/devtron/pkg/sql"
|
23 | 24 | "github.com/go-pg/pg"
|
@@ -114,27 +115,33 @@ func updateFindWithFilterQuery(filter *appStoreBean.AppStoreFilter, updateAction
|
114 | 115 | query = " ch.name as chart_name, das.id as docker_artifact_store_id"
|
115 | 116 | }
|
116 | 117 | }
|
| 118 | + |
| 119 | + latestAppStoreVersionQuery := " SELECT MAX(asv.id) as id " + |
| 120 | + " FROM app_store_application_version asv " + |
| 121 | + " INNER JOIN app_store aps ON (asv.app_store_id = aps.id and aps.active = true) " + |
| 122 | + " GROUP BY asv.app_store_id " |
| 123 | + |
117 | 124 | if updateAction == QUERY_JOIN_UPDTAE {
|
118 | 125 | if len(filter.ChartRepoId) > 0 && len(filter.RegistryId) > 0 {
|
119 | 126 | query = " LEFT JOIN chart_repo ch ON (aps.chart_repo_id = ch.id and ch.deleted IS FALSE)" +
|
120 | 127 | " LEFT JOIN docker_artifact_store das ON aps.docker_artifact_store_id = das.id" +
|
121 | 128 | " LEFT JOIN oci_registry_config oci ON oci.docker_artifact_store_id = das.id" +
|
122 |
| - " WHERE (asv.latest IS TRUE AND (ch.active IS TRUE OR (das.active IS TRUE AND oci.deleted IS FALSE AND oci.is_chart_pull_active IS TRUE)))" + |
| 129 | + fmt.Sprintf(" WHERE (asv.id IN (%s) AND (ch.active IS TRUE OR (das.active IS TRUE AND oci.deleted IS FALSE AND oci.is_chart_pull_active IS TRUE)))", latestAppStoreVersionQuery) + |
123 | 130 | " AND (ch.id IN (?) OR das.id IN (?))"
|
124 | 131 | } else if len(filter.RegistryId) > 0 {
|
125 | 132 | query = " LEFT JOIN docker_artifact_store das ON aps.docker_artifact_store_id = das.id" +
|
126 | 133 | " LEFT JOIN oci_registry_config oci ON oci.docker_artifact_store_id = das.id" +
|
127 |
| - " WHERE asv.latest IS TRUE AND (das.active IS TRUE AND oci.deleted IS FALSE AND oci.is_chart_pull_active IS TRUE)" + |
| 134 | + fmt.Sprintf(" WHERE asv.id IN (%s) AND (das.active IS TRUE AND oci.deleted IS FALSE AND oci.is_chart_pull_active IS TRUE)", latestAppStoreVersionQuery) + |
128 | 135 | " AND das.id IN (?)"
|
129 | 136 | } else if len(filter.ChartRepoId) > 0 {
|
130 | 137 | query = " LEFT JOIN chart_repo ch ON (aps.chart_repo_id = ch.id and ch.deleted IS FALSE)" +
|
131 |
| - " WHERE asv.latest IS TRUE AND ch.active IS TRUE" + |
| 138 | + fmt.Sprintf(" WHERE asv.id IN (%s) AND ch.active IS TRUE", latestAppStoreVersionQuery) + |
132 | 139 | " AND ch.id IN (?)"
|
133 | 140 | } else {
|
134 | 141 | query = " LEFT JOIN chart_repo ch ON (aps.chart_repo_id = ch.id and ch.deleted IS FALSE)" +
|
135 | 142 | " LEFT JOIN docker_artifact_store das ON aps.docker_artifact_store_id = das.id" +
|
136 | 143 | " LEFT JOIN oci_registry_config oci ON oci.docker_artifact_store_id = das.id" +
|
137 |
| - " WHERE (asv.latest IS TRUE AND (ch.active IS TRUE OR (das.active IS TRUE AND oci.deleted IS FALSE AND oci.is_chart_pull_active IS TRUE)))" |
| 144 | + fmt.Sprintf(" WHERE (asv.id IN (%s) AND (ch.active IS TRUE OR (das.active IS TRUE AND oci.deleted IS FALSE AND oci.is_chart_pull_active IS TRUE)))", latestAppStoreVersionQuery) |
138 | 145 | }
|
139 | 146 | }
|
140 | 147 | return query
|
@@ -249,7 +256,7 @@ func (impl *AppStoreApplicationVersionRepositoryImpl) FindByAppStoreName(name st
|
249 | 256 |
|
250 | 257 | func (impl *AppStoreApplicationVersionRepositoryImpl) SearchAppStoreChartByName(chartName string) ([]*appStoreBean.ChartRepoSearch, error) {
|
251 | 258 | var chartRepos []*appStoreBean.ChartRepoSearch
|
252 |
| - //eryTemp := "select asv.version, asv.icon,asv.deprecated ,asv.id as app_store_application_version_id, aps.*, ch.name as chart_name from app_store_application_version asv inner join app_store aps on asv.app_store_id = aps.id inner join chart_repo ch on aps.chart_repo_id = ch.id where asv.latest is TRUE order by aps.name asc;" |
| 259 | + // eryTemp := "select asv.version, asv.icon,asv.deprecated ,asv.id as app_store_application_version_id, aps.*, ch.name as chart_name from app_store_application_version asv inner join app_store aps on asv.app_store_id = aps.id inner join chart_repo ch on aps.chart_repo_id = ch.id where asv.latest is TRUE order by aps.name asc;" |
253 | 260 | queryTemp := "select asv.id as app_store_application_version_id, asv.version, asv.deprecated, aps.id as chart_id," +
|
254 | 261 | " aps.name as chart_name, chr.id as chart_repo_id, chr.name as chart_repo_name" +
|
255 | 262 | " from app_store_application_version asv" +
|
|
0 commit comments