@@ -20,24 +20,28 @@ import (
2020	"fmt" 
2121	"github.com/devtron-labs/devtron/api/bean" 
2222	"github.com/devtron-labs/devtron/internal/sql/repository/helper" 
23+ 	"github.com/go-pg/pg" 
2324)
2425
2526const  EmptyLikeRegex  =  "%%" 
2627
27- func  BuildQueryForParentTypeCIOrWebhook (listingFilterOpts  bean.ArtifactsListFilterOptions ) string  {
28- 	commonPaginatedQueryPart   :=  fmt . Sprintf ( " cia.image LIKE '%v' " , listingFilterOpts .SearchString ) 
28+ func  BuildQueryForParentTypeCIOrWebhook (listingFilterOpts  bean.ArtifactsListFilterOptions ) ( string , [] interface {})  {
29+ 	commonPaginatedQueryPart ,  commonPaginatedQueryParams   :=  " cia.image LIKE ? " , [] interface {}{ listingFilterOpts .SearchString } 
2930	orderByClause  :=  " ORDER BY cia.id DESC" 
30- 	limitOffsetQueryPart   :=  fmt .Sprintf (" LIMIT %v  OFFSET %v"  ,  listingFilterOpts .Limit , listingFilterOpts .Offset ) 
31+ 	limitOffsetQueryPart ,  limitOffsetQueryParams   :=  fmt .Sprintf (" LIMIT ?  OFFSET ?"  ), [] interface {}{ listingFilterOpts .Limit , listingFilterOpts .Offset } 
3132	finalQuery  :=  "" 
33+ 	var  finalQueryParams  []interface {}
34+ 	var  remainingQueryParams  []interface {}
3235	if  listingFilterOpts .ParentStageType  ==  bean .CI_WORKFLOW_TYPE  {
3336		selectQuery  :=  " SELECT cia.* " 
3437		remainingQuery  :=  " FROM ci_artifact cia"  + 
3538			" INNER JOIN ci_pipeline cp ON (cp.id=cia.pipeline_id or (cp.id=cia.component_id and cia.data_source='post_ci' ) )"  + 
36- 			" INNER JOIN pipeline p ON (p.ci_pipeline_id = cp.id and p.id=%v  )"  + 
39+ 			" INNER JOIN pipeline p ON (p.ci_pipeline_id = cp.id and p.id=?  )"  + 
3740			" WHERE " 
38- 		remainingQuery  =  fmt . Sprintf ( remainingQuery ,  listingFilterOpts .PipelineId ) 
41+ 		remainingQueryParams  =  [] interface {}{ listingFilterOpts .PipelineId } 
3942		if  len (listingFilterOpts .ExcludeArtifactIds ) >  0  {
40- 			remainingQuery  +=  fmt .Sprintf ("cia.id NOT IN (%s) AND " , helper .GetCommaSepratedString (listingFilterOpts .ExcludeArtifactIds ))
43+ 			remainingQuery  +=  "cia.id NOT IN (?) AND " 
44+ 			remainingQueryParams  =  append (remainingQueryParams , pg .In (listingFilterOpts .ExcludeArtifactIds ))
4145		}
4246
4347		countQuery  :=  " SELECT count(cia.id)  as total_count" 
@@ -47,19 +51,24 @@ func BuildQueryForParentTypeCIOrWebhook(listingFilterOpts bean.ArtifactsListFilt
4751	} else  if  listingFilterOpts .ParentStageType  ==  bean .WEBHOOK_WORKFLOW_TYPE  {
4852		selectQuery  :=  " SELECT cia.* " 
4953		remainingQuery  :=  " FROM ci_artifact cia "  + 
50- 			" WHERE cia.external_ci_pipeline_id = %v  AND " 
51- 		remainingQuery  =  fmt . Sprintf ( remainingQuery ,  listingFilterOpts .ParentId ) 
54+ 			" WHERE cia.external_ci_pipeline_id = ?  AND " 
55+ 		remainingQueryParams  =  [] interface {}{ listingFilterOpts .ParentId } 
5256		if  len (listingFilterOpts .ExcludeArtifactIds ) >  0  {
53- 			remainingQuery  +=  fmt .Sprintf ("cia.id NOT IN (%s) AND " , helper .GetCommaSepratedString (listingFilterOpts .ExcludeArtifactIds ))
57+ 			remainingQuery  +=  "cia.id NOT IN (?) AND " 
58+ 			remainingQueryParams  =  append (remainingQueryParams , pg .In (listingFilterOpts .ExcludeArtifactIds ))
5459		}
5560
5661		countQuery  :=  " SELECT count(cia.id)  as total_count" 
5762		totalCountQuery  :=  countQuery  +  remainingQuery  +  commonPaginatedQueryPart 
5863		selectQuery  =  fmt .Sprintf ("%s,(%s) " , selectQuery , totalCountQuery )
5964		finalQuery  =  selectQuery  +  remainingQuery  +  commonPaginatedQueryPart  +  orderByClause  +  limitOffsetQueryPart 
60- 
6165	}
62- 	return  finalQuery 
66+ 	finalQueryParams  =  append (finalQueryParams , remainingQueryParams ... )
67+ 	finalQueryParams  =  append (finalQueryParams , commonPaginatedQueryParams ... )
68+ 	finalQueryParams  =  append (finalQueryParams , remainingQueryParams ... )
69+ 	finalQueryParams  =  append (finalQueryParams , commonPaginatedQueryParams ... )
70+ 	finalQueryParams  =  append (finalQueryParams , limitOffsetQueryParams ... )
71+ 	return  finalQuery , finalQueryParams 
6372}
6473
6574func  BuildQueryForArtifactsForCdStage (listingFilterOptions  bean.ArtifactsListFilterOptions ) string  {
0 commit comments