feat(store): schedules, notification_channels, domain last_check_status + методы
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
-- name: CreateChannel :one
|
||||
INSERT INTO notification_channels (id, project_id, type, config, secret_enc)
|
||||
VALUES ($1, $2, $3, $4, $5) RETURNING *;
|
||||
|
||||
-- name: ListChannels :many
|
||||
SELECT * FROM notification_channels WHERE project_id = $1 ORDER BY created_at;
|
||||
|
||||
-- name: ListEnabledChannels :many
|
||||
SELECT * FROM notification_channels WHERE project_id = $1 AND enabled ORDER BY created_at;
|
||||
|
||||
-- name: GetChannel :one
|
||||
SELECT * FROM notification_channels WHERE id = $1 AND project_id = $2;
|
||||
|
||||
-- name: DeleteChannel :exec
|
||||
DELETE FROM notification_channels WHERE id = $1 AND project_id = $2;
|
||||
@@ -28,3 +28,9 @@ FROM domains d
|
||||
JOIN provider_accounts a ON a.id = d.provider_account_id
|
||||
LEFT JOIN templates t ON t.id = d.template_id
|
||||
WHERE d.id = $1 AND d.project_id = $2;
|
||||
|
||||
-- name: GetDomainStatus :one
|
||||
SELECT last_check_status FROM domains WHERE id = $1;
|
||||
|
||||
-- name: SetDomainStatus :exec
|
||||
UPDATE domains SET last_check_status = $2 WHERE id = $1;
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
-- name: GetSchedule :one
|
||||
SELECT * FROM schedules WHERE project_id = $1;
|
||||
|
||||
-- name: UpsertSchedule :one
|
||||
INSERT INTO schedules (id, project_id, interval_seconds, enabled)
|
||||
VALUES ($1, $2, $3, $4)
|
||||
ON CONFLICT (project_id) DO UPDATE SET interval_seconds = $3, enabled = $4
|
||||
RETURNING *;
|
||||
|
||||
-- name: ListDueSchedules :many
|
||||
SELECT * FROM schedules
|
||||
WHERE enabled AND (last_run_at IS NULL OR last_run_at + (interval_seconds || ' seconds')::interval <= $1);
|
||||
|
||||
-- name: TouchScheduleRun :exec
|
||||
UPDATE schedules SET last_run_at = $2 WHERE project_id = $1;
|
||||
Reference in New Issue
Block a user