Skip to content

Commit bd8cbbd

Browse files
committed
fix prebuilds view
1 parent 19edb7b commit bd8cbbd

File tree

3 files changed

+88
-1
lines changed

3 files changed

+88
-1
lines changed

coderd/database/dump.sql

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/migrations/000338_use_deleted_boolean_for_subagents.down.sql

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,46 @@ COMMENT ON TRIGGER workspace_agent_name_unique_trigger ON workspace_agents IS
5050
'Use a trigger instead of a unique constraint because existing data may violate
5151
the uniqueness requirement. A trigger allows us to enforce uniqueness going
5252
forward without requiring a migration to clean up historical data.';
53+
54+
-- Restore prebuilds, previously modified in 000323_workspace_latest_builds_optimization.up.sql.
55+
DROP VIEW workspace_prebuilds;
56+
57+
CREATE VIEW workspace_prebuilds AS
58+
WITH all_prebuilds AS (
59+
SELECT w.id,
60+
w.name,
61+
w.template_id,
62+
w.created_at
63+
FROM workspaces w
64+
WHERE (w.owner_id = 'c42fdf75-3097-471c-8c33-fb52454d81c0'::uuid)
65+
), workspaces_with_latest_presets AS (
66+
SELECT DISTINCT ON (workspace_builds.workspace_id) workspace_builds.workspace_id,
67+
workspace_builds.template_version_preset_id
68+
FROM workspace_builds
69+
WHERE (workspace_builds.template_version_preset_id IS NOT NULL)
70+
ORDER BY workspace_builds.workspace_id, workspace_builds.build_number DESC
71+
), workspaces_with_agents_status AS (
72+
SELECT w.id AS workspace_id,
73+
bool_and((wa.lifecycle_state = 'ready'::workspace_agent_lifecycle_state)) AS ready
74+
FROM (((workspaces w
75+
JOIN workspace_latest_builds wlb ON ((wlb.workspace_id = w.id)))
76+
JOIN workspace_resources wr ON ((wr.job_id = wlb.job_id)))
77+
JOIN workspace_agents wa ON ((wa.resource_id = wr.id)))
78+
WHERE (w.owner_id = 'c42fdf75-3097-471c-8c33-fb52454d81c0'::uuid)
79+
GROUP BY w.id
80+
), current_presets AS (
81+
SELECT w.id AS prebuild_id,
82+
wlp.template_version_preset_id
83+
FROM (workspaces w
84+
JOIN workspaces_with_latest_presets wlp ON ((wlp.workspace_id = w.id)))
85+
WHERE (w.owner_id = 'c42fdf75-3097-471c-8c33-fb52454d81c0'::uuid)
86+
)
87+
SELECT p.id,
88+
p.name,
89+
p.template_id,
90+
p.created_at,
91+
COALESCE(a.ready, false) AS ready,
92+
cp.template_version_preset_id AS current_preset_id
93+
FROM ((all_prebuilds p
94+
LEFT JOIN workspaces_with_agents_status a ON ((a.workspace_id = p.id)))
95+
JOIN current_presets cp ON ((cp.prebuild_id = p.id)));

coderd/database/migrations/000338_use_deleted_boolean_for_subagents.up.sql

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,47 @@ COMMENT ON TRIGGER workspace_agent_name_unique_trigger ON workspace_agents IS
5353
'Use a trigger instead of a unique constraint because existing data may violate
5454
the uniqueness requirement. A trigger allows us to enforce uniqueness going
5555
forward without requiring a migration to clean up historical data.';
56+
57+
-- Handle agent deletion in prebuilds, previously modified in 000323_workspace_latest_builds_optimization.up.sql.
58+
DROP VIEW workspace_prebuilds;
59+
60+
CREATE VIEW workspace_prebuilds AS
61+
WITH all_prebuilds AS (
62+
SELECT w.id,
63+
w.name,
64+
w.template_id,
65+
w.created_at
66+
FROM workspaces w
67+
WHERE (w.owner_id = 'c42fdf75-3097-471c-8c33-fb52454d81c0'::uuid)
68+
), workspaces_with_latest_presets AS (
69+
SELECT DISTINCT ON (workspace_builds.workspace_id) workspace_builds.workspace_id,
70+
workspace_builds.template_version_preset_id
71+
FROM workspace_builds
72+
WHERE (workspace_builds.template_version_preset_id IS NOT NULL)
73+
ORDER BY workspace_builds.workspace_id, workspace_builds.build_number DESC
74+
), workspaces_with_agents_status AS (
75+
SELECT w.id AS workspace_id,
76+
bool_and((wa.lifecycle_state = 'ready'::workspace_agent_lifecycle_state)) AS ready
77+
FROM (((workspaces w
78+
JOIN workspace_latest_builds wlb ON ((wlb.workspace_id = w.id)))
79+
JOIN workspace_resources wr ON ((wr.job_id = wlb.job_id)))
80+
-- ADD: deleted check for sub agents.
81+
JOIN workspace_agents wa ON ((wa.resource_id = wr.id AND wa.deleted = FALSE)))
82+
WHERE (w.owner_id = 'c42fdf75-3097-471c-8c33-fb52454d81c0'::uuid)
83+
GROUP BY w.id
84+
), current_presets AS (
85+
SELECT w.id AS prebuild_id,
86+
wlp.template_version_preset_id
87+
FROM (workspaces w
88+
JOIN workspaces_with_latest_presets wlp ON ((wlp.workspace_id = w.id)))
89+
WHERE (w.owner_id = 'c42fdf75-3097-471c-8c33-fb52454d81c0'::uuid)
90+
)
91+
SELECT p.id,
92+
p.name,
93+
p.template_id,
94+
p.created_at,
95+
COALESCE(a.ready, false) AS ready,
96+
cp.template_version_preset_id AS current_preset_id
97+
FROM ((all_prebuilds p
98+
LEFT JOIN workspaces_with_agents_status a ON ((a.workspace_id = p.id)))
99+
JOIN current_presets cp ON ((cp.prebuild_id = p.id)));

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy