Skip to content

Commit d43b0ea

Browse files
committed
fix migrations
1 parent af6789a commit d43b0ea

File tree

3 files changed

+58
-44
lines changed

3 files changed

+58
-44
lines changed

coderd/database/dbmem/dbmem.go

Lines changed: 58 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -3758,50 +3758,6 @@ func (q *FakeQuerier) GetProvisionerDaemonsWithStatusByOrganization(ctx context.
37583758
q.mutex.RLock()
37593759
defer q.mutex.RUnlock()
37603760

3761-
/*
3762-
-- name: GetProvisionerDaemonsWithStatusByOrganization :many
3763-
SELECT
3764-
sqlc.embed(pd),
3765-
CASE
3766-
WHEN pd.last_seen_at IS NULL OR pd.last_seen_at < (NOW() - (@stale_interval_ms::bigint || ' ms')::interval)
3767-
THEN 'offline'
3768-
ELSE CASE
3769-
WHEN current_job.id IS NOT NULL THEN 'busy'
3770-
ELSE 'idle'
3771-
END
3772-
END::provisioner_daemon_status AS status,
3773-
-- NOTE(mafredri): sqlc.embed doesn't support nullable tables nor renaming them.
3774-
current_job.id AS current_job_id,
3775-
current_job.job_status AS current_job_status,
3776-
previous_job.id AS previous_job_id,
3777-
previous_job.job_status AS previous_job_status
3778-
FROM
3779-
provisioner_daemons pd
3780-
LEFT JOIN
3781-
provisioner_jobs current_job ON (
3782-
current_job.worker_id = pd.id
3783-
AND current_job.completed_at IS NULL
3784-
)
3785-
LEFT JOIN
3786-
provisioner_jobs previous_job ON (
3787-
previous_job.id = (
3788-
SELECT
3789-
id
3790-
FROM
3791-
provisioner_jobs
3792-
WHERE
3793-
worker_id = pd.id
3794-
AND completed_at IS NOT NULL
3795-
ORDER BY
3796-
completed_at DESC
3797-
LIMIT 1
3798-
)
3799-
)
3800-
WHERE
3801-
pd.organization_id = @organization_id::uuid
3802-
AND (COALESCE(array_length(@ids::uuid[], 1), 1) > 0 OR pd.id = ANY(@ids::uuid[]))
3803-
AND (@tags::tagset = 'null'::tagset OR provisioner_tagset_contains(pd.tags::tagset, @tags::tagset));
3804-
*/
38053761
var rows []database.GetProvisionerDaemonsWithStatusByOrganizationRow
38063762
for _, daemon := range q.provisionerDaemons {
38073763
if daemon.OrganizationID != arg.OrganizationID {
@@ -4072,6 +4028,64 @@ func (q *FakeQuerier) GetProvisionerJobsByOrganizationAndStatusWithQueuePosition
40724028
pj.created_at DESC
40734029
LIMIT
40744030
sqlc.narg('limit')::int;
4031+
4032+
AMENDED QUERY:
4033+
4034+
-- name: GetProvisionerJobsByOrganizationAndStatusWithQueuePositionAndProvisioner :many
4035+
WITH pending_jobs AS (
4036+
SELECT
4037+
id, created_at
4038+
FROM
4039+
provisioner_jobs
4040+
WHERE
4041+
started_at IS NULL
4042+
AND
4043+
canceled_at IS NULL
4044+
AND
4045+
completed_at IS NULL
4046+
AND
4047+
error IS NULL
4048+
),
4049+
queue_position AS (
4050+
SELECT
4051+
id,
4052+
ROW_NUMBER() OVER (ORDER BY created_at ASC) AS queue_position
4053+
FROM
4054+
pending_jobs
4055+
),
4056+
queue_size AS (
4057+
SELECT COUNT(*) AS count FROM pending_jobs
4058+
)
4059+
SELECT
4060+
sqlc.embed(pj),
4061+
COALESCE(qp.queue_position, 0) AS queue_position,
4062+
COALESCE(qs.count, 0) AS queue_size,
4063+
array_agg(DISTINCT pd.id) FILTER (WHERE pd.id IS NOT NULL)::uuid[] AS available_workers
4064+
FROM
4065+
provisioner_jobs pj
4066+
LEFT JOIN
4067+
queue_position qp ON qp.id = pj.id
4068+
LEFT JOIN
4069+
queue_size qs ON TRUE
4070+
LEFT JOIN
4071+
provisioner_daemons pd ON (
4072+
-- See AcquireProvisionerJob.
4073+
pj.started_at IS NULL
4074+
AND pj.organization_id = pd.organization_id
4075+
AND pj.provisioner = ANY(pd.provisioners)
4076+
AND provisioner_tagset_contains(pd.tags, pj.tags)
4077+
)
4078+
WHERE
4079+
(sqlc.narg('organization_id')::uuid IS NULL OR pj.organization_id = @organization_id)
4080+
AND (COALESCE(array_length(@status::provisioner_job_status[], 1), 1) > 0 OR pj.job_status = ANY(@status::provisioner_job_status[]))
4081+
GROUP BY
4082+
pj.id,
4083+
qp.queue_position,
4084+
qs.count
4085+
ORDER BY
4086+
pj.created_at DESC
4087+
LIMIT
4088+
sqlc.narg('limit')::int;
40754089
*/
40764090
var rows []database.GetProvisionerJobsByOrganizationAndStatusWithQueuePositionAndProvisionerRow
40774091
var queuedJobs []database.ProvisionerJob

0 commit comments

Comments
 (0)