From 91e9b2ed8ece828f9c349187c57d7c626530136f Mon Sep 17 00:00:00 2001 From: Daniel Ponte Date: Tue, 7 Jan 2025 20:00:31 -0500 Subject: [PATCH] slow version --- pkg/database/calls.sql.go | 29 ++++++++++++++--------------- sql/postgres/queries/calls.sql | 9 +++++---- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/pkg/database/calls.sql.go b/pkg/database/calls.sql.go index a58588f..3ea749f 100644 --- a/pkg/database/calls.sql.go +++ b/pkg/database/calls.sql.go @@ -255,13 +255,13 @@ SELECT c.id, c.call_date, c.duration, -tgs.system_id, -tgs.tgid, -sys.name system_name, -tgs.name tg_name +c.system, +c.talkgroup, +COUNT(ic.incident_id) incidents FROM calls c JOIN talkgroups tgs ON c.talkgroup = tgs.tgid AND c.system = tgs.system_id JOIN systems sys ON sys.id = tgs.system_id +LEFT JOIN incidents_calls ic ON c.id = ic.calls_tbl_id AND c.call_date = ic.call_date WHERE CASE WHEN $1::TIMESTAMPTZ IS NOT NULL THEN c.call_date >= $1 ELSE TRUE END AND @@ -279,6 +279,7 @@ CASE WHEN $4::TEXT[] IS NOT NULL THEN (CASE WHEN $6::NUMERIC IS NOT NULL THEN ( c.duration > $6 ) ELSE TRUE END) +GROUP BY c.id, c.call_date ORDER BY CASE WHEN $7::TEXT = 'asc' THEN c.call_date END ASC, CASE WHEN $7 = 'desc' THEN c.call_date END DESC @@ -299,13 +300,12 @@ type ListCallsPParams struct { } type ListCallsPRow struct { - ID uuid.UUID `json:"id"` - CallDate pgtype.Timestamptz `json:"call_date"` - Duration *int32 `json:"duration"` - SystemID int32 `json:"system_id"` - TGID int32 `json:"tgid"` - SystemName string `json:"system_name"` - TGName *string `json:"tg_name"` + ID uuid.UUID `json:"id"` + CallDate pgtype.Timestamptz `json:"call_date"` + Duration *int32 `json:"duration"` + System int `json:"system"` + Talkgroup int `json:"talkgroup"` + Incidents int64 `json:"incidents"` } func (q *Queries) ListCallsP(ctx context.Context, arg ListCallsPParams) ([]ListCallsPRow, error) { @@ -331,10 +331,9 @@ func (q *Queries) ListCallsP(ctx context.Context, arg ListCallsPParams) ([]ListC &i.ID, &i.CallDate, &i.Duration, - &i.SystemID, - &i.TGID, - &i.SystemName, - &i.TGName, + &i.System, + &i.Talkgroup, + &i.Incidents, ); err != nil { return nil, err } diff --git a/sql/postgres/queries/calls.sql b/sql/postgres/queries/calls.sql index 353d61c..edc7b76 100644 --- a/sql/postgres/queries/calls.sql +++ b/sql/postgres/queries/calls.sql @@ -101,13 +101,13 @@ SELECT c.id, c.call_date, c.duration, -tgs.system_id, -tgs.tgid, -sys.name system_name, -tgs.name tg_name +c.system, +c.talkgroup, +COUNT(ic.incident_id) incidents FROM calls c JOIN talkgroups tgs ON c.talkgroup = tgs.tgid AND c.system = tgs.system_id JOIN systems sys ON sys.id = tgs.system_id +LEFT JOIN incidents_calls ic ON c.id = ic.calls_tbl_id AND c.call_date = ic.call_date WHERE CASE WHEN sqlc.narg('start')::TIMESTAMPTZ IS NOT NULL THEN c.call_date >= @start ELSE TRUE END AND @@ -125,6 +125,7 @@ CASE WHEN sqlc.narg('tags_not')::TEXT[] IS NOT NULL THEN (CASE WHEN sqlc.narg('longer_than')::NUMERIC IS NOT NULL THEN ( c.duration > @longer_than ) ELSE TRUE END) +GROUP BY c.id, c.call_date ORDER BY CASE WHEN @direction::TEXT = 'asc' THEN c.call_date END ASC, CASE WHEN @direction = 'desc' THEN c.call_date END DESC