blob: 4119f94d9df1a3cbb20cc5c05dcf9be89c0fcdda [file] [log] [blame]
Serge Bazanski60a00a92023-01-03 13:45:20 +01001-- name: NewMachine :one
2INSERT INTO machines (
3 machine_created_at
4) VALUES (
5 now()
6)
7RETURNING *;
8
9-- name: NewSession :one
10INSERT INTO sessions (
11 session_component_name, session_runtime_info, session_created_at, session_interval_seconds, session_deadline
12) VALUES (
13 $1, $2, now(), $3, (now() + $3 * interval '1 second')
14)
15RETURNING *;
16
17-- name: SessionPoke :exec
18-- Update a given session with a new deadline. Must be called in the same
19-- transaction as SessionCheck to ensure the session is still alive.
20UPDATE sessions
21SET session_deadline = now() + session_interval_seconds * interval '1 second'
22WHERE session_id = $1;
23
24-- name: SessionCheck :many
25-- SessionCheck returns a session by ID if that session is still valid (ie. its
26-- deadline hasn't expired).
27SELECT *
28FROM sessions
29WHERE session_id = $1
30AND session_deadline > now();
31
32-- name: StartWork :exec
33INSERT INTO work (
34 machine_id, session_id, process
35) VALUES (
36 $1, $2, $3
37);
38
39-- name: FinishWork :exec
40DELETE FROM work
41WHERE machine_id = $1
42 AND session_id = $2
43 AND process = $3;
44
Serge Bazanskia9580a72023-01-12 14:44:35 +010045
46-- name: WorkHistoryInsert :exec
47-- Insert an entry into the work_history audit table.
48INSERT INTO work_history (
49 machine_id, process, event, timestamp, failed_cause
50) VALUES (
51 $1, $2, $3, now(), $4
52);
53
54-- name: WorkBackoffInsert :exec
55-- Upsert a backoff for a given machine/process.
56INSERT INTO work_backoff (
57 machine_id, process, cause, until
58) VALUES (
59 $1, $2, $3, now() + (sqlc.arg(seconds)::int * interval '1 second')
60) ON CONFLICT (machine_id, process) DO UPDATE SET
61 cause = $3,
62 until = now() + (sqlc.arg(seconds)::int * interval '1 second')
63;
64
65-- name: ListHistoryOf :many
66-- Retrieve full audit history of a machine.
67SELECT *
68FROM work_history
69WHERE machine_id = $1
Serge Bazanski77628312023-02-15 23:33:22 +010070ORDER BY timestamp ASC;
71
72-- name: GetSession :many
73-- Retrieve session information by session ID.
74SELECT *
75FROM sessions
76WHERE session_id = $1;