Exemplo n.º 1
0
func getActiveImageArtifacts(db *postgres.DB) ([]*ct.Artifact, error) {
	sql := `
SELECT artifact_id, uri FROM artifacts
WHERE type = 'docker'
AND meta->>'docker-receive.repository' IS NOT NULL
AND deleted_at IS NULL
AND artifact_id IN (
  SELECT artifact_id FROM release_artifacts
  WHERE release_id IN (
    SELECT release_id FROM releases
    WHERE meta->>'docker-receive' = 'true'
    AND release_id IN (
      SELECT release_id
      FROM formations, json_each_text(formations.processes::json)
      WHERE processes != 'null'
      GROUP BY app_id, release_id
      HAVING SUM(value::int) > 0
    )
    OR release_id IN (
      SELECT release_id FROM apps
    )
  )
)
`
	rows, err := db.Query(sql)
	if err != nil {
		return nil, err
	}
	defer rows.Close()
	var artifacts []*ct.Artifact
	for rows.Next() {
		var artifact ct.Artifact
		if err := rows.Scan(&artifact.ID, &artifact.URI); err != nil {
			return nil, err
		}
		artifacts = append(artifacts, &artifact)
	}
	return artifacts, rows.Err()
}