mirror of
https://github.com/coder/coder.git
synced 2025-07-03 16:13:58 +00:00
38 lines
1.2 KiB
SQL
38 lines
1.2 KiB
SQL
-- name: InsertWorkspaceAppStats :exec
|
|
INSERT INTO
|
|
workspace_app_stats (
|
|
user_id,
|
|
workspace_id,
|
|
agent_id,
|
|
access_method,
|
|
slug_or_port,
|
|
session_id,
|
|
session_started_at,
|
|
session_ended_at,
|
|
requests
|
|
)
|
|
SELECT
|
|
unnest(@user_id::uuid[]) AS user_id,
|
|
unnest(@workspace_id::uuid[]) AS workspace_id,
|
|
unnest(@agent_id::uuid[]) AS agent_id,
|
|
unnest(@access_method::text[]) AS access_method,
|
|
unnest(@slug_or_port::text[]) AS slug_or_port,
|
|
unnest(@session_id::uuid[]) AS session_id,
|
|
unnest(@session_started_at::timestamptz[]) AS session_started_at,
|
|
unnest(@session_ended_at::timestamptz[]) AS session_ended_at,
|
|
unnest(@requests::int[]) AS requests
|
|
ON CONFLICT
|
|
(user_id, agent_id, session_id)
|
|
DO
|
|
UPDATE SET
|
|
session_ended_at = EXCLUDED.session_ended_at,
|
|
requests = EXCLUDED.requests
|
|
WHERE
|
|
workspace_app_stats.user_id = EXCLUDED.user_id
|
|
AND workspace_app_stats.agent_id = EXCLUDED.agent_id
|
|
AND workspace_app_stats.session_id = EXCLUDED.session_id
|
|
-- Since stats are updated in place as time progresses, we only
|
|
-- want to update this row if it's fresh.
|
|
AND workspace_app_stats.session_ended_at <= EXCLUDED.session_ended_at
|
|
AND workspace_app_stats.requests <= EXCLUDED.requests;
|