1-- name: UpsertSessionState :exec
2INSERT INTO session_states (session_id, state_json, version, tab_count, pane_count, updated_at)
3VALUES (?, ?, ?, ?, ?, ?)
4ON CONFLICT(session_id) DO UPDATE SET
5 state_json = excluded.state_json,
6 version = excluded.version,
7 tab_count = excluded.tab_count,
8 pane_count = excluded.pane_count,
9 updated_at = excluded.updated_at;
10
11-- name: GetSessionState :one
12SELECT session_id, state_json, version, tab_count, pane_count, updated_at
13FROM session_states
14WHERE session_id = ?;
15
16-- name: GetAllSessionStates :many
17SELECT session_id, state_json, version, tab_count, pane_count, updated_at
18FROM session_states
19ORDER BY updated_at DESC;
20
21-- name: DeleteSessionState :exec
22DELETE FROM session_states WHERE session_id = ?;
23
24-- name: GetSessionsWithState :many
25SELECT
26 s.id, s.type, s.started_at, s.ended_at,
27 ss.state_json, ss.tab_count, ss.pane_count, ss.updated_at as state_updated_at
28FROM sessions s
29LEFT JOIN session_states ss ON s.id = ss.session_id
30WHERE s.type = 'browser'
31ORDER BY s.started_at DESC
32LIMIT ?;
33
34-- name: GetTotalSessionStatesSize :one
35SELECT COALESCE(SUM(LENGTH(state_json)), 0) as total_size
36FROM session_states;