func buildEventQuery()

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
}