Go · 18154 bytes Raw Blame History
1 // Code generated by sqlc. DO NOT EDIT.
2 // versions:
3 // sqlc v1.31.1
4 // source: workflow_runners.sql
5
6 package actionsdb
7
8 import (
9 "context"
10
11 "github.com/jackc/pgx/v5/pgtype"
12 )
13
14 const clearRunnerDraining = `-- name: ClearRunnerDraining :one
15 UPDATE workflow_runners
16 SET draining_at = NULL,
17 drain_reason = '',
18 updated_at = now()
19 WHERE id = $1
20 AND revoked_at IS NULL
21 RETURNING id, name, labels, capacity, status, last_heartbeat_at,
22 host_name, version, draining_at, drain_reason, revoked_at,
23 revoked_reason, registered_by_user_id, created_at, updated_at
24 `
25
26 type ClearRunnerDrainingRow struct {
27 ID int64
28 Name string
29 Labels []string
30 Capacity int32
31 Status WorkflowRunnerStatus
32 LastHeartbeatAt pgtype.Timestamptz
33 HostName string
34 Version string
35 DrainingAt pgtype.Timestamptz
36 DrainReason string
37 RevokedAt pgtype.Timestamptz
38 RevokedReason string
39 RegisteredByUserID pgtype.Int8
40 CreatedAt pgtype.Timestamptz
41 UpdatedAt pgtype.Timestamptz
42 }
43
44 func (q *Queries) ClearRunnerDraining(ctx context.Context, db DBTX, id int64) (ClearRunnerDrainingRow, error) {
45 row := db.QueryRow(ctx, clearRunnerDraining, id)
46 var i ClearRunnerDrainingRow
47 err := row.Scan(
48 &i.ID,
49 &i.Name,
50 &i.Labels,
51 &i.Capacity,
52 &i.Status,
53 &i.LastHeartbeatAt,
54 &i.HostName,
55 &i.Version,
56 &i.DrainingAt,
57 &i.DrainReason,
58 &i.RevokedAt,
59 &i.RevokedReason,
60 &i.RegisteredByUserID,
61 &i.CreatedAt,
62 &i.UpdatedAt,
63 )
64 return i, err
65 }
66
67 const getRunnerByID = `-- name: GetRunnerByID :one
68 SELECT id, name, labels, capacity, status, last_heartbeat_at,
69 host_name, version, draining_at, drain_reason, revoked_at,
70 revoked_reason, registered_by_user_id, created_at, updated_at
71 FROM workflow_runners
72 WHERE id = $1
73 `
74
75 type GetRunnerByIDRow struct {
76 ID int64
77 Name string
78 Labels []string
79 Capacity int32
80 Status WorkflowRunnerStatus
81 LastHeartbeatAt pgtype.Timestamptz
82 HostName string
83 Version string
84 DrainingAt pgtype.Timestamptz
85 DrainReason string
86 RevokedAt pgtype.Timestamptz
87 RevokedReason string
88 RegisteredByUserID pgtype.Int8
89 CreatedAt pgtype.Timestamptz
90 UpdatedAt pgtype.Timestamptz
91 }
92
93 func (q *Queries) GetRunnerByID(ctx context.Context, db DBTX, id int64) (GetRunnerByIDRow, error) {
94 row := db.QueryRow(ctx, getRunnerByID, id)
95 var i GetRunnerByIDRow
96 err := row.Scan(
97 &i.ID,
98 &i.Name,
99 &i.Labels,
100 &i.Capacity,
101 &i.Status,
102 &i.LastHeartbeatAt,
103 &i.HostName,
104 &i.Version,
105 &i.DrainingAt,
106 &i.DrainReason,
107 &i.RevokedAt,
108 &i.RevokedReason,
109 &i.RegisteredByUserID,
110 &i.CreatedAt,
111 &i.UpdatedAt,
112 )
113 return i, err
114 }
115
116 const getRunnerByName = `-- name: GetRunnerByName :one
117 SELECT id, name, labels, capacity, status, last_heartbeat_at,
118 host_name, version, draining_at, drain_reason, revoked_at,
119 revoked_reason, registered_by_user_id, created_at, updated_at
120 FROM workflow_runners
121 WHERE name = $1
122 `
123
124 type GetRunnerByNameRow struct {
125 ID int64
126 Name string
127 Labels []string
128 Capacity int32
129 Status WorkflowRunnerStatus
130 LastHeartbeatAt pgtype.Timestamptz
131 HostName string
132 Version string
133 DrainingAt pgtype.Timestamptz
134 DrainReason string
135 RevokedAt pgtype.Timestamptz
136 RevokedReason string
137 RegisteredByUserID pgtype.Int8
138 CreatedAt pgtype.Timestamptz
139 UpdatedAt pgtype.Timestamptz
140 }
141
142 func (q *Queries) GetRunnerByName(ctx context.Context, db DBTX, name string) (GetRunnerByNameRow, error) {
143 row := db.QueryRow(ctx, getRunnerByName, name)
144 var i GetRunnerByNameRow
145 err := row.Scan(
146 &i.ID,
147 &i.Name,
148 &i.Labels,
149 &i.Capacity,
150 &i.Status,
151 &i.LastHeartbeatAt,
152 &i.HostName,
153 &i.Version,
154 &i.DrainingAt,
155 &i.DrainReason,
156 &i.RevokedAt,
157 &i.RevokedReason,
158 &i.RegisteredByUserID,
159 &i.CreatedAt,
160 &i.UpdatedAt,
161 )
162 return i, err
163 }
164
165 const getRunnerByTokenHash = `-- name: GetRunnerByTokenHash :one
166 SELECT r.id, r.name, r.labels, r.capacity, r.status,
167 r.last_heartbeat_at, r.host_name, r.version, r.draining_at,
168 r.drain_reason, r.revoked_at, r.revoked_reason, r.created_at
169 FROM workflow_runners r
170 JOIN runner_tokens t ON t.runner_id = r.id
171 WHERE t.token_hash = $1
172 AND t.revoked_at IS NULL
173 AND r.revoked_at IS NULL
174 AND (t.expires_at IS NULL OR t.expires_at > now())
175 `
176
177 type GetRunnerByTokenHashRow struct {
178 ID int64
179 Name string
180 Labels []string
181 Capacity int32
182 Status WorkflowRunnerStatus
183 LastHeartbeatAt pgtype.Timestamptz
184 HostName string
185 Version string
186 DrainingAt pgtype.Timestamptz
187 DrainReason string
188 RevokedAt pgtype.Timestamptz
189 RevokedReason string
190 CreatedAt pgtype.Timestamptz
191 }
192
193 func (q *Queries) GetRunnerByTokenHash(ctx context.Context, db DBTX, tokenHash []byte) (GetRunnerByTokenHashRow, error) {
194 row := db.QueryRow(ctx, getRunnerByTokenHash, tokenHash)
195 var i GetRunnerByTokenHashRow
196 err := row.Scan(
197 &i.ID,
198 &i.Name,
199 &i.Labels,
200 &i.Capacity,
201 &i.Status,
202 &i.LastHeartbeatAt,
203 &i.HostName,
204 &i.Version,
205 &i.DrainingAt,
206 &i.DrainReason,
207 &i.RevokedAt,
208 &i.RevokedReason,
209 &i.CreatedAt,
210 )
211 return i, err
212 }
213
214 const heartbeatRunner = `-- name: HeartbeatRunner :one
215 UPDATE workflow_runners
216 SET labels = $2,
217 capacity = $3,
218 last_heartbeat_at = now(),
219 status = $4,
220 host_name = $5,
221 version = $6,
222 updated_at = now()
223 WHERE id = $1
224 RETURNING id, name, labels, capacity, status, last_heartbeat_at,
225 host_name, version, draining_at, drain_reason, revoked_at,
226 revoked_reason, registered_by_user_id, created_at, updated_at
227 `
228
229 type HeartbeatRunnerParams struct {
230 ID int64
231 Labels []string
232 Capacity int32
233 Status WorkflowRunnerStatus
234 HostName string
235 Version string
236 }
237
238 type HeartbeatRunnerRow struct {
239 ID int64
240 Name string
241 Labels []string
242 Capacity int32
243 Status WorkflowRunnerStatus
244 LastHeartbeatAt pgtype.Timestamptz
245 HostName string
246 Version string
247 DrainingAt pgtype.Timestamptz
248 DrainReason string
249 RevokedAt pgtype.Timestamptz
250 RevokedReason string
251 RegisteredByUserID pgtype.Int8
252 CreatedAt pgtype.Timestamptz
253 UpdatedAt pgtype.Timestamptz
254 }
255
256 func (q *Queries) HeartbeatRunner(ctx context.Context, db DBTX, arg HeartbeatRunnerParams) (HeartbeatRunnerRow, error) {
257 row := db.QueryRow(ctx, heartbeatRunner,
258 arg.ID,
259 arg.Labels,
260 arg.Capacity,
261 arg.Status,
262 arg.HostName,
263 arg.Version,
264 )
265 var i HeartbeatRunnerRow
266 err := row.Scan(
267 &i.ID,
268 &i.Name,
269 &i.Labels,
270 &i.Capacity,
271 &i.Status,
272 &i.LastHeartbeatAt,
273 &i.HostName,
274 &i.Version,
275 &i.DrainingAt,
276 &i.DrainReason,
277 &i.RevokedAt,
278 &i.RevokedReason,
279 &i.RegisteredByUserID,
280 &i.CreatedAt,
281 &i.UpdatedAt,
282 )
283 return i, err
284 }
285
286 const insertRunner = `-- name: InsertRunner :one
287
288 INSERT INTO workflow_runners (name, labels, capacity, registered_by_user_id)
289 VALUES ($1, $2, $3, $4)
290 RETURNING id, name, labels, capacity, status, last_heartbeat_at,
291 host_name, version, draining_at, drain_reason, revoked_at,
292 revoked_reason, registered_by_user_id, created_at, updated_at
293 `
294
295 type InsertRunnerParams struct {
296 Name string
297 Labels []string
298 Capacity int32
299 RegisteredByUserID pgtype.Int8
300 }
301
302 type InsertRunnerRow struct {
303 ID int64
304 Name string
305 Labels []string
306 Capacity int32
307 Status WorkflowRunnerStatus
308 LastHeartbeatAt pgtype.Timestamptz
309 HostName string
310 Version string
311 DrainingAt pgtype.Timestamptz
312 DrainReason string
313 RevokedAt pgtype.Timestamptz
314 RevokedReason string
315 RegisteredByUserID pgtype.Int8
316 CreatedAt pgtype.Timestamptz
317 UpdatedAt pgtype.Timestamptz
318 }
319
320 // SPDX-License-Identifier: AGPL-3.0-or-later
321 func (q *Queries) InsertRunner(ctx context.Context, db DBTX, arg InsertRunnerParams) (InsertRunnerRow, error) {
322 row := db.QueryRow(ctx, insertRunner,
323 arg.Name,
324 arg.Labels,
325 arg.Capacity,
326 arg.RegisteredByUserID,
327 )
328 var i InsertRunnerRow
329 err := row.Scan(
330 &i.ID,
331 &i.Name,
332 &i.Labels,
333 &i.Capacity,
334 &i.Status,
335 &i.LastHeartbeatAt,
336 &i.HostName,
337 &i.Version,
338 &i.DrainingAt,
339 &i.DrainReason,
340 &i.RevokedAt,
341 &i.RevokedReason,
342 &i.RegisteredByUserID,
343 &i.CreatedAt,
344 &i.UpdatedAt,
345 )
346 return i, err
347 }
348
349 const insertRunnerToken = `-- name: InsertRunnerToken :one
350 INSERT INTO runner_tokens (runner_id, token_hash, expires_at)
351 VALUES ($1, $2, $3)
352 RETURNING id, runner_id, token_hash, expires_at, revoked_at, created_at
353 `
354
355 type InsertRunnerTokenParams struct {
356 RunnerID int64
357 TokenHash []byte
358 ExpiresAt pgtype.Timestamptz
359 }
360
361 func (q *Queries) InsertRunnerToken(ctx context.Context, db DBTX, arg InsertRunnerTokenParams) (RunnerToken, error) {
362 row := db.QueryRow(ctx, insertRunnerToken, arg.RunnerID, arg.TokenHash, arg.ExpiresAt)
363 var i RunnerToken
364 err := row.Scan(
365 &i.ID,
366 &i.RunnerID,
367 &i.TokenHash,
368 &i.ExpiresAt,
369 &i.RevokedAt,
370 &i.CreatedAt,
371 )
372 return i, err
373 }
374
375 const listRunners = `-- name: ListRunners :many
376 SELECT r.id, r.name, r.labels, r.capacity, r.status, r.last_heartbeat_at,
377 r.host_name, r.version, r.draining_at, r.drain_reason, r.revoked_at,
378 r.revoked_reason, r.created_at, COUNT(j.id)::integer AS active_job_count
379 FROM workflow_runners r
380 LEFT JOIN workflow_jobs j
381 ON j.runner_id = r.id
382 AND j.status = 'running'
383 GROUP BY r.id, r.name, r.labels, r.capacity, r.status, r.last_heartbeat_at,
384 r.host_name, r.version, r.draining_at, r.drain_reason, r.revoked_at,
385 r.revoked_reason, r.created_at
386 ORDER BY r.name ASC
387 `
388
389 type ListRunnersRow struct {
390 ID int64
391 Name string
392 Labels []string
393 Capacity int32
394 Status WorkflowRunnerStatus
395 LastHeartbeatAt pgtype.Timestamptz
396 HostName string
397 Version string
398 DrainingAt pgtype.Timestamptz
399 DrainReason string
400 RevokedAt pgtype.Timestamptz
401 RevokedReason string
402 CreatedAt pgtype.Timestamptz
403 ActiveJobCount int32
404 }
405
406 func (q *Queries) ListRunners(ctx context.Context, db DBTX) ([]ListRunnersRow, error) {
407 rows, err := db.Query(ctx, listRunners)
408 if err != nil {
409 return nil, err
410 }
411 defer rows.Close()
412 items := []ListRunnersRow{}
413 for rows.Next() {
414 var i ListRunnersRow
415 if err := rows.Scan(
416 &i.ID,
417 &i.Name,
418 &i.Labels,
419 &i.Capacity,
420 &i.Status,
421 &i.LastHeartbeatAt,
422 &i.HostName,
423 &i.Version,
424 &i.DrainingAt,
425 &i.DrainReason,
426 &i.RevokedAt,
427 &i.RevokedReason,
428 &i.CreatedAt,
429 &i.ActiveJobCount,
430 ); err != nil {
431 return nil, err
432 }
433 items = append(items, i)
434 }
435 if err := rows.Err(); err != nil {
436 return nil, err
437 }
438 return items, nil
439 }
440
441 const lockRunnerByID = `-- name: LockRunnerByID :one
442 SELECT id, name, labels, capacity, status, last_heartbeat_at,
443 host_name, version, draining_at, drain_reason, revoked_at,
444 revoked_reason, registered_by_user_id, created_at, updated_at
445 FROM workflow_runners
446 WHERE id = $1
447 FOR UPDATE
448 `
449
450 type LockRunnerByIDRow struct {
451 ID int64
452 Name string
453 Labels []string
454 Capacity int32
455 Status WorkflowRunnerStatus
456 LastHeartbeatAt pgtype.Timestamptz
457 HostName string
458 Version string
459 DrainingAt pgtype.Timestamptz
460 DrainReason string
461 RevokedAt pgtype.Timestamptz
462 RevokedReason string
463 RegisteredByUserID pgtype.Int8
464 CreatedAt pgtype.Timestamptz
465 UpdatedAt pgtype.Timestamptz
466 }
467
468 func (q *Queries) LockRunnerByID(ctx context.Context, db DBTX, id int64) (LockRunnerByIDRow, error) {
469 row := db.QueryRow(ctx, lockRunnerByID, id)
470 var i LockRunnerByIDRow
471 err := row.Scan(
472 &i.ID,
473 &i.Name,
474 &i.Labels,
475 &i.Capacity,
476 &i.Status,
477 &i.LastHeartbeatAt,
478 &i.HostName,
479 &i.Version,
480 &i.DrainingAt,
481 &i.DrainReason,
482 &i.RevokedAt,
483 &i.RevokedReason,
484 &i.RegisteredByUserID,
485 &i.CreatedAt,
486 &i.UpdatedAt,
487 )
488 return i, err
489 }
490
491 const markStaleRunnersOffline = `-- name: MarkStaleRunnersOffline :many
492 UPDATE workflow_runners
493 SET status = 'offline',
494 updated_at = now()
495 WHERE revoked_at IS NULL
496 AND status <> 'offline'
497 AND last_heartbeat_at IS NOT NULL
498 AND last_heartbeat_at < $1
499 RETURNING id, name, labels, capacity, status, last_heartbeat_at,
500 host_name, version, draining_at, drain_reason, revoked_at,
501 revoked_reason, registered_by_user_id, created_at, updated_at
502 `
503
504 type MarkStaleRunnersOfflineRow struct {
505 ID int64
506 Name string
507 Labels []string
508 Capacity int32
509 Status WorkflowRunnerStatus
510 LastHeartbeatAt pgtype.Timestamptz
511 HostName string
512 Version string
513 DrainingAt pgtype.Timestamptz
514 DrainReason string
515 RevokedAt pgtype.Timestamptz
516 RevokedReason string
517 RegisteredByUserID pgtype.Int8
518 CreatedAt pgtype.Timestamptz
519 UpdatedAt pgtype.Timestamptz
520 }
521
522 func (q *Queries) MarkStaleRunnersOffline(ctx context.Context, db DBTX, lastHeartbeatAt pgtype.Timestamptz) ([]MarkStaleRunnersOfflineRow, error) {
523 rows, err := db.Query(ctx, markStaleRunnersOffline, lastHeartbeatAt)
524 if err != nil {
525 return nil, err
526 }
527 defer rows.Close()
528 items := []MarkStaleRunnersOfflineRow{}
529 for rows.Next() {
530 var i MarkStaleRunnersOfflineRow
531 if err := rows.Scan(
532 &i.ID,
533 &i.Name,
534 &i.Labels,
535 &i.Capacity,
536 &i.Status,
537 &i.LastHeartbeatAt,
538 &i.HostName,
539 &i.Version,
540 &i.DrainingAt,
541 &i.DrainReason,
542 &i.RevokedAt,
543 &i.RevokedReason,
544 &i.RegisteredByUserID,
545 &i.CreatedAt,
546 &i.UpdatedAt,
547 ); err != nil {
548 return nil, err
549 }
550 items = append(items, i)
551 }
552 if err := rows.Err(); err != nil {
553 return nil, err
554 }
555 return items, nil
556 }
557
558 const revokeAllTokensForRunner = `-- name: RevokeAllTokensForRunner :exec
559 UPDATE runner_tokens
560 SET revoked_at = now()
561 WHERE runner_id = $1 AND revoked_at IS NULL
562 `
563
564 func (q *Queries) RevokeAllTokensForRunner(ctx context.Context, db DBTX, runnerID int64) error {
565 _, err := db.Exec(ctx, revokeAllTokensForRunner, runnerID)
566 return err
567 }
568
569 const revokeRunner = `-- name: RevokeRunner :one
570 UPDATE workflow_runners
571 SET revoked_at = COALESCE(revoked_at, now()),
572 revoked_reason = CASE WHEN revoked_at IS NULL THEN $2 ELSE revoked_reason END,
573 draining_at = COALESCE(draining_at, now()),
574 drain_reason = CASE
575 WHEN draining_at IS NULL THEN $2
576 ELSE drain_reason
577 END,
578 status = 'offline',
579 updated_at = now()
580 WHERE id = $1
581 RETURNING id, name, labels, capacity, status, last_heartbeat_at,
582 host_name, version, draining_at, drain_reason, revoked_at,
583 revoked_reason, registered_by_user_id, created_at, updated_at
584 `
585
586 type RevokeRunnerParams struct {
587 ID int64
588 RevokedReason string
589 }
590
591 type RevokeRunnerRow struct {
592 ID int64
593 Name string
594 Labels []string
595 Capacity int32
596 Status WorkflowRunnerStatus
597 LastHeartbeatAt pgtype.Timestamptz
598 HostName string
599 Version string
600 DrainingAt pgtype.Timestamptz
601 DrainReason string
602 RevokedAt pgtype.Timestamptz
603 RevokedReason string
604 RegisteredByUserID pgtype.Int8
605 CreatedAt pgtype.Timestamptz
606 UpdatedAt pgtype.Timestamptz
607 }
608
609 func (q *Queries) RevokeRunner(ctx context.Context, db DBTX, arg RevokeRunnerParams) (RevokeRunnerRow, error) {
610 row := db.QueryRow(ctx, revokeRunner, arg.ID, arg.RevokedReason)
611 var i RevokeRunnerRow
612 err := row.Scan(
613 &i.ID,
614 &i.Name,
615 &i.Labels,
616 &i.Capacity,
617 &i.Status,
618 &i.LastHeartbeatAt,
619 &i.HostName,
620 &i.Version,
621 &i.DrainingAt,
622 &i.DrainReason,
623 &i.RevokedAt,
624 &i.RevokedReason,
625 &i.RegisteredByUserID,
626 &i.CreatedAt,
627 &i.UpdatedAt,
628 )
629 return i, err
630 }
631
632 const setRunnerDraining = `-- name: SetRunnerDraining :one
633 UPDATE workflow_runners
634 SET draining_at = COALESCE(draining_at, now()),
635 drain_reason = $2,
636 updated_at = now()
637 WHERE id = $1
638 AND revoked_at IS NULL
639 RETURNING id, name, labels, capacity, status, last_heartbeat_at,
640 host_name, version, draining_at, drain_reason, revoked_at,
641 revoked_reason, registered_by_user_id, created_at, updated_at
642 `
643
644 type SetRunnerDrainingParams struct {
645 ID int64
646 DrainReason string
647 }
648
649 type SetRunnerDrainingRow struct {
650 ID int64
651 Name string
652 Labels []string
653 Capacity int32
654 Status WorkflowRunnerStatus
655 LastHeartbeatAt pgtype.Timestamptz
656 HostName string
657 Version string
658 DrainingAt pgtype.Timestamptz
659 DrainReason string
660 RevokedAt pgtype.Timestamptz
661 RevokedReason string
662 RegisteredByUserID pgtype.Int8
663 CreatedAt pgtype.Timestamptz
664 UpdatedAt pgtype.Timestamptz
665 }
666
667 func (q *Queries) SetRunnerDraining(ctx context.Context, db DBTX, arg SetRunnerDrainingParams) (SetRunnerDrainingRow, error) {
668 row := db.QueryRow(ctx, setRunnerDraining, arg.ID, arg.DrainReason)
669 var i SetRunnerDrainingRow
670 err := row.Scan(
671 &i.ID,
672 &i.Name,
673 &i.Labels,
674 &i.Capacity,
675 &i.Status,
676 &i.LastHeartbeatAt,
677 &i.HostName,
678 &i.Version,
679 &i.DrainingAt,
680 &i.DrainReason,
681 &i.RevokedAt,
682 &i.RevokedReason,
683 &i.RegisteredByUserID,
684 &i.CreatedAt,
685 &i.UpdatedAt,
686 )
687 return i, err
688 }
689
690 const touchRunnerHeartbeat = `-- name: TouchRunnerHeartbeat :exec
691 UPDATE workflow_runners
692 SET last_heartbeat_at = now(),
693 status = $2,
694 updated_at = now()
695 WHERE id = $1
696 `
697
698 type TouchRunnerHeartbeatParams struct {
699 ID int64
700 Status WorkflowRunnerStatus
701 }
702
703 func (q *Queries) TouchRunnerHeartbeat(ctx context.Context, db DBTX, arg TouchRunnerHeartbeatParams) error {
704 _, err := db.Exec(ctx, touchRunnerHeartbeat, arg.ID, arg.Status)
705 return err
706 }
707