Cian Johnston
08343a7a9f
perf: reduce number of queries made by /api/v2/workspaceagents/{id} ( #21522 )
...
Relates to https://github.com/coder/internal/issues/1214
The `ExtractWorkspaceAgentParam` middleware ends up making 4 database
queries to follow the chain of `WorkspaceAgent` -> `WorkspaceResource`
-> `ProvisionerJob` -> `WorkspaceBuild` -- but then dropping all that
hard work on the floor. The `api.workspaceAgent` handler that references
this middleware then has to do all of that work again, plus one more
query to get the related `User` so we can get the username. This pattern
is also mirrored in `getDatabaseTerminal` but without the middleware.
This PR:
* Adds a new query `GetWorkspaceAgentAndWorkspaceByID` to fetch all
this information at once to avoid the multiple round-trips,
* Updates the existing usage of `GetWorkspaceAgentByID` to this new
query instead,
* Updates `ExtractWorkspaceAgentParam` to also store the workspace in
the request context
Dalibo: [0.63ms](https://explain.dalibo.com/plan/40bb597f3539gc6c )
2026-01-19 12:36:33 +00:00
..
2026-01-08 15:24:11 +04:00
2025-06-20 13:16:55 -06:00
2025-12-11 16:38:54 +01:00
2026-01-19 08:50:57 +00:00
2025-10-23 15:38:49 -05:00
2024-09-18 21:47:53 +10:00
2026-01-08 15:24:11 +04:00
2026-01-12 18:19:19 -08:00
2023-10-30 19:44:29 +00:00
2025-12-15 13:44:44 -09:00
2026-01-15 16:37:05 +00:00
2025-10-16 01:56:43 +11:00
2026-01-08 15:24:11 +04:00
2026-01-19 12:36:33 +00:00
2026-01-08 15:24:11 +04:00
2026-01-08 15:24:11 +04:00
2025-08-19 10:41:33 +02:00
2026-01-08 15:24:11 +04:00
2026-01-08 15:24:11 +04:00
2026-01-08 15:24:11 +04:00
2026-01-15 16:37:05 +00:00
2026-01-15 12:41:28 +03:00
2026-01-19 12:36:33 +00:00
2026-01-08 15:24:11 +04:00
2026-01-08 15:24:11 +04:00
2025-06-20 13:16:55 -06:00
2026-01-08 15:24:11 +04:00
2026-01-08 15:24:11 +04:00
2026-01-08 15:24:11 +04:00
2026-01-15 12:41:28 +03:00
2025-10-15 17:37:37 +00:00
2024-05-13 14:37:51 -04:00
2025-08-16 01:31:00 +10:00
2026-01-08 15:24:11 +04:00
2026-01-08 15:24:11 +04:00
2025-12-15 17:41:47 +00:00
2026-01-09 11:33:34 -06:00
2025-10-23 15:38:49 -05:00
2025-06-17 09:00:32 -08:00
2025-03-18 00:02:47 +01:00
2026-01-12 18:19:19 -08:00
2025-06-20 13:16:55 -06:00
2025-07-08 14:31:05 +00:00
2025-08-07 11:00:31 +10:00
2026-01-08 15:24:11 +04:00
2026-01-09 15:40:26 -07:00
2026-01-08 15:24:11 +04:00
2025-12-14 03:00:03 +00:00
2026-01-08 15:24:11 +04:00
2026-01-08 15:24:11 +04:00
2025-08-22 16:32:35 +10:00
2025-06-20 13:16:55 -06:00
2026-01-09 15:40:26 -07:00
2026-01-08 15:24:11 +04:00
2026-01-19 12:36:33 +00:00
2026-01-08 15:24:11 +04:00
2026-01-08 15:24:11 +04:00
2025-03-31 10:55:44 -04:00
2025-12-15 11:26:41 -06:00
2025-11-17 13:24:12 +00:00
2025-12-29 14:25:14 +00:00
2026-01-08 15:24:11 +04:00
2025-09-26 11:56:34 +02:00
2025-10-24 12:33:56 +01:00
2026-01-09 15:40:26 -07:00
2023-08-18 18:55:43 +00:00
2024-08-01 12:07:19 -05:00
2026-01-08 15:24:11 +04:00
2026-01-08 15:24:11 +04:00
2025-10-27 17:14:16 -06:00
2026-01-08 15:24:11 +04:00
2023-08-18 18:55:43 +00:00
2025-06-20 13:16:55 -06:00
2026-01-08 15:24:11 +04:00
2026-01-19 12:36:33 +00:00
2026-01-08 15:24:11 +04:00
2026-01-15 16:37:05 +00:00
2026-01-15 16:37:05 +00:00
2024-02-27 16:33:32 +00:00
2025-06-25 13:03:32 +00:00
2024-06-11 12:22:59 +10:00
2025-04-22 16:21:15 +00:00
2025-06-24 09:14:41 +01:00
2026-01-12 18:19:19 -08:00
2025-12-15 17:41:47 +00:00
2025-09-04 14:28:29 +10:00
2026-01-08 15:24:11 +04:00
2025-12-15 11:26:41 -06:00
2025-05-15 15:32:52 +01:00
2025-06-20 13:16:55 -06:00
2025-06-20 13:16:55 -06:00
2026-01-08 15:24:11 +04:00
2025-08-19 10:41:33 +02:00
2025-08-19 10:41:33 +02:00
2025-06-20 13:16:55 -06:00
2026-01-08 15:24:11 +04:00
2025-03-26 01:56:39 -05:00
2023-06-06 10:26:13 -05:00
2026-01-08 15:24:11 +04:00
2025-09-30 23:54:21 +01:00
2026-01-12 18:19:19 -08:00
2026-01-08 15:24:11 +04:00
2026-01-08 15:24:11 +04:00
2026-01-15 12:41:28 +03:00
2026-01-15 12:41:28 +03:00
2026-01-15 12:41:28 +03:00
2025-07-03 18:33:47 +02:00
2026-01-15 12:41:28 +03:00
2025-10-22 15:18:42 -05:00
2024-07-25 16:07:53 -05:00
2024-08-28 13:24:28 -05:00
2025-07-15 14:55:34 +10:00
2025-07-15 14:55:34 +10:00
2025-07-28 20:41:49 -05:00
2025-10-02 09:32:40 -05:00
2025-06-24 12:19:19 +02:00
2025-07-28 15:02:26 +01:00
2025-08-21 16:03:34 -04:00
2025-08-21 16:03:34 -04:00
2025-06-20 13:16:55 -06:00
2025-10-06 13:58:37 +02:00
2026-01-08 15:24:11 +04:00
2024-07-25 16:07:53 -05:00
2026-01-12 18:19:19 -08:00
2025-09-26 11:43:32 +02:00
2025-09-26 11:43:32 +02:00
2025-06-20 13:16:55 -06:00
2026-01-08 15:24:11 +04:00
2026-01-12 18:19:19 -08:00
2026-01-09 11:13:16 -06:00
2026-01-12 18:19:19 -08:00
2026-01-09 15:40:26 -07:00
2025-06-20 13:16:55 -06:00
2023-08-18 18:55:43 +00:00
2026-01-12 18:19:19 -08:00
2026-01-09 15:40:26 -07:00
2026-01-08 15:24:11 +04:00
2026-01-08 15:24:11 +04:00
2025-03-27 10:03:53 +00:00
2025-03-27 10:03:53 +00:00
2026-01-12 18:19:19 -08:00
2025-06-18 14:07:53 +00:00
2026-01-19 12:36:33 +00:00
2026-01-08 15:24:11 +04:00
2026-01-19 12:36:33 +00:00
2025-12-22 10:21:39 +04:00
2025-09-03 10:38:42 +04:00
2026-01-08 15:24:11 +04:00
2025-06-20 13:16:55 -06:00
2025-09-26 11:56:34 +02:00
2026-01-08 15:24:11 +04:00
2026-01-19 12:36:33 +00:00
2024-01-18 09:44:05 -06:00
2024-01-18 09:44:05 -06:00
2025-12-15 11:26:41 -06:00
2026-01-08 15:24:11 +04:00
2026-01-14 09:47:50 -08:00
2026-01-14 09:47:50 -08:00
2025-04-16 10:37:09 -06:00
2026-01-08 15:24:11 +04:00