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() }