Juan Denis and Claude Opus 5
2eeb58daa0
perf(api): opt /servers into the query layer
...
Second endpoint after /apps, same pattern. Server.to_dict grows a `fields`
parameter so $select skips the derived work rather than only trimming the
payload: `onboarding_progress` is a JSON walk that is ~29% of a row and is read
by exactly one screen, and `group_name` is a relationship load. A caller that
needs {id, name} -- Domains and Backups both do -- now pays for neither.
`group_name` is eager-loaded when it IS wanted, so the list stops issuing one
SELECT per server for it.
Two details this route needed that /apps did not: it answers with a bare JSON
array, so no paging envelope is emitted (that would break every caller), and an
explicit $orderby now wins over the hardcoded by-name sort while the default is
preserved when absent.
3 more tests; the 293 existing server/fleet/agent tests still pass.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-12 13:16:58 -04:00
..
2026-01-17 04:22:12 -05:00
2026-08-12 12:11:39 -04:00
2026-08-09 13:53:59 -04:00
2026-03-23 02:15:16 -04:00
2026-03-23 02:08:00 -04:00
2026-07-18 01:23:47 -04:00
2026-06-01 02:39:05 -04:00
2026-03-07 12:15:02 -05:00
2026-06-23 18:23:47 -04:00
2026-07-08 02:05:50 -04:00
2026-08-12 12:11:39 -04:00
2026-07-18 00:59:19 -04:00
2026-08-05 01:18:11 -04:00
2026-07-07 20:29:31 -04:00
2026-06-23 18:49:04 -04:00
2026-07-22 16:37:08 -04:00
2026-07-01 01:35:44 -04:00
2026-07-08 02:05:50 -04:00
2026-07-18 01:23:47 -04:00
2026-07-25 19:30:51 -04:00
2026-07-26 00:19:46 -04:00
2026-08-04 08:53:27 -04:00
2026-07-03 14:24:03 -04:00
2026-07-18 00:51:21 -04:00
2026-08-11 19:43:46 -04:00
2026-08-04 08:53:27 -04:00
2026-07-07 20:29:31 -04:00
2026-07-09 04:50:16 -04:00
2026-07-03 23:18:08 -04:00
2026-06-23 00:34:55 -04:00
2026-08-04 08:53:27 -04:00
2026-03-04 01:53:46 -05:00
2026-07-03 15:21:09 -04:00
2026-08-12 09:27:05 -04:00
2026-07-08 02:05:50 -04:00
2026-06-23 19:33:44 -04:00
2026-03-04 01:53:46 -05:00
2026-07-26 15:40:14 -04:00
2026-07-03 14:23:11 -04:00
2026-03-24 06:10:58 -04:00
2026-05-01 00:37:48 -04:00
2026-08-03 23:44:56 -04:00
2026-07-03 15:22:05 -04:00
2026-07-07 20:29:31 -04:00
2026-03-04 02:34:49 -05:00
2026-07-08 23:01:12 -04:00
2026-07-22 00:35:33 -04:00
2026-06-21 02:11:47 -04:00
2026-07-03 14:24:15 -04:00
2026-07-09 03:05:08 -04:00
2026-08-05 13:36:20 -04:00
2026-02-08 23:14:13 -05:00
2026-03-04 01:37:22 -05:00
2026-03-24 06:10:58 -04:00
2026-07-01 21:34:54 -04:00
2026-06-21 02:11:47 -04:00
2026-07-28 00:22:56 -04:00
2026-03-23 02:19:33 -04:00
2026-06-21 02:11:47 -04:00
2026-07-09 04:55:53 -04:00
2026-07-18 01:23:47 -04:00
2026-06-21 20:44:12 -04:00
2026-06-21 02:11:47 -04:00
2026-08-05 13:36:20 -04:00
2026-07-07 20:29:31 -04:00
2026-07-08 02:05:50 -04:00
2026-06-21 02:11:47 -04:00
2026-06-23 19:33:44 -04:00
2026-06-23 20:57:40 -04:00
2026-07-08 02:05:50 -04:00
2026-08-04 08:53:27 -04:00
2026-08-12 07:14:55 -04:00
2026-06-15 09:19:56 -04:00
2026-07-11 00:26:40 -04:00
2026-08-04 08:53:27 -04:00
2026-07-08 02:05:50 -04:00
2026-03-23 02:11:16 -04:00
2026-08-12 13:16:58 -04:00
2026-07-07 20:29:23 -04:00
2026-08-04 08:53:27 -04:00
2026-07-07 20:29:26 -04:00
2026-07-08 02:05:50 -04:00
2026-07-10 23:06:09 -04:00
2026-07-03 14:23:29 -04:00
2026-06-21 02:11:47 -04:00
2026-05-03 15:57:02 -04:00
2026-07-03 15:21:22 -04:00
2026-07-07 20:29:24 -04:00
2026-07-31 14:56:37 -04:00
2026-06-21 20:19:57 -04:00
2026-07-25 23:44:34 -04:00
2026-07-20 22:26:19 -04:00
2026-07-23 00:24:00 -04:00
2026-07-18 00:59:19 -04:00
2026-01-17 13:37:40 -05:00
2026-08-09 02:32:55 -04:00
2026-07-07 20:29:31 -04:00
2026-06-23 19:33:44 -04:00
2026-07-07 20:29:22 -04:00