in plugins/storage/rdbms/events.go [40:78]
func buildEventQuery(baseQuery bytes.Buffer, eventQuery *event.Query) ([]string, []interface{}) {
selectClauses := []string{}
fields := []interface{}{}
if eventQuery != nil && eventQuery.JobID != 0 {
selectClauses = append(selectClauses, "job_id=?")
fields = append(fields, eventQuery.JobID)
}
if eventQuery != nil && len(eventQuery.EventNames) != 0 {
if len(eventQuery.EventNames) == 1 {
selectClauses = append(selectClauses, "event_name=?")
} else {
queryStr := "event_name in"
for i := 0; i < len(eventQuery.EventNames); i++ {
if i == 0 {
queryStr = fmt.Sprintf("%s (?", queryStr)
} else if i < len(eventQuery.EventNames)-1 {
queryStr = fmt.Sprintf("%s, ?", queryStr)
} else {
queryStr = fmt.Sprintf("%s, ?)", queryStr)
}
}
selectClauses = append(selectClauses, queryStr)
}
for i := 0; i < len(eventQuery.EventNames); i++ {
fields = append(fields, eventQuery.EventNames[i])
}
}
if eventQuery != nil && !eventQuery.EmittedStartTime.IsZero() {
selectClauses = append(selectClauses, "emit_time>=?")
fields = append(fields, eventQuery.EmittedStartTime)
}
if eventQuery != nil && !eventQuery.EmittedEndTime.IsZero() {
selectClauses = append(selectClauses, "emit_time<=?")
fields = append(fields, eventQuery.EmittedStartTime)
}
return selectClauses, fields
}