diff --git a/api/openapi/readers.yml b/api/openapi/readers.yml index 420e8c4b0c2..ed8d3a96e31 100644 --- a/api/openapi/readers.yml +++ b/api/openapi/readers.yml @@ -244,10 +244,10 @@ components: type: string default: none enum: - - avg - - sum - - min - - max + - MAX + - SUM + - MIN + - MAX required: false Interval: name: interval diff --git a/readers/timescale/messages.go b/readers/timescale/messages.go index c9c6157f604..bc3d883e10d 100644 --- a/readers/timescale/messages.go +++ b/readers/timescale/messages.go @@ -31,7 +31,7 @@ func New(db *sqlx.DB) readers.MessageRepository { func (tr timescaleRepository) ReadAll(chanID string, rpm readers.PageMetadata) (readers.MessagesPage, error) { order := "time" format := defTable - baseQuery := fmt.Sprintf(`FROM %s WHERE %s GROUP BY time`, format, fmtCondition(rpm)) + baseQuery := fmt.Sprintf(`FROM %s WHERE %s GROUP BY 1`, format, fmtCondition(rpm)) if rpm.Format != "" && rpm.Format != defTable { order = "created" @@ -42,7 +42,7 @@ func (tr timescaleRepository) ReadAll(chanID string, rpm readers.PageMetadata) ( // If aggregation is provided, add time_bucket and aggregation to the query switch { case rpm.Aggregation != "": - q = fmt.Sprintf(`SELECT EXTRACT(epoch FROM time_bucket('%s', to_timestamp(time/1000))) AS time, %s(value) AS value %s ORDER BY %s DESC LIMIT :limit OFFSET :offset;`, rpm.Interval, rpm.Aggregation, baseQuery, order) + q = fmt.Sprintf(`SELECT EXTRACT(epoch FROM time_bucket('%s', to_timestamp(time/1000))) AS time, %s(value) AS value %s ORDER BY 1 DESC LIMIT :limit OFFSET :offset;`, rpm.Interval, rpm.Aggregation, baseQuery) default: // Construct the base query without time_bucket and aggregation q = fmt.Sprintf(`SELECT * FROM %s WHERE %s ORDER BY %s DESC LIMIT :limit OFFSET :offset;`, format, fmtCondition(rpm), order)