mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
chore: replace GetManagedAgentCount query with aggregate table (#19636)
- Removes GetManagedAgentCount query - Adds new table `usage_events_daily` which stores aggregated usage events by the type and UTC day - Adds trigger to update the values in this table when a new row is inserted into `usage_events` - Adds a migration that adds `usage_events_daily` rows for existing data in `usage_events` - Adds tests for the trigger - Adds tests for the backfill query in the migration Since the `usage_events` table is unreleased currently, this migration will do nothing on real deployments and will only affect preview deployments such as dogfood. Closes https://github.com/coder/internal/issues/943
This commit is contained in:
@@ -35,28 +35,3 @@ DELETE
|
||||
FROM licenses
|
||||
WHERE id = $1
|
||||
RETURNING id;
|
||||
|
||||
-- name: GetManagedAgentCount :one
|
||||
-- This isn't strictly a license query, but it's related to license enforcement.
|
||||
SELECT
|
||||
COUNT(DISTINCT wb.id) AS count
|
||||
FROM
|
||||
workspace_builds AS wb
|
||||
JOIN
|
||||
provisioner_jobs AS pj
|
||||
ON
|
||||
wb.job_id = pj.id
|
||||
WHERE
|
||||
wb.transition = 'start'::workspace_transition
|
||||
AND wb.has_ai_task = true
|
||||
-- Only count jobs that are pending, running or succeeded. Other statuses
|
||||
-- like cancel(ed|ing), failed or unknown are not considered as managed
|
||||
-- agent usage. These workspace builds are typically unusable anyway.
|
||||
AND pj.job_status IN (
|
||||
'pending'::provisioner_job_status,
|
||||
'running'::provisioner_job_status,
|
||||
'succeeded'::provisioner_job_status
|
||||
)
|
||||
-- Jobs are counted at the time they are created, not when they are
|
||||
-- completed, as pending jobs haven't completed yet.
|
||||
AND wb.created_at BETWEEN @start_time::timestamptz AND @end_time::timestamptz;
|
||||
|
||||
Reference in New Issue
Block a user