stillbox/sql/postgres/queries/talkgroups.sql

97 lines
3.1 KiB
MySQL
Raw Normal View History

2024-07-17 19:30:16 -04:00
-- name: GetTalkgroupsWithAnyTags :many
2024-11-03 08:44:34 -05:00
SELECT sqlc.embed(talkgroups) FROM talkgroups
2024-07-17 19:30:16 -04:00
WHERE tags @> ARRAY[$1];
-- name: GetTalkgroupsWithAllTags :many
2024-11-03 08:44:34 -05:00
SELECT sqlc.embed(talkgroups) FROM talkgroups
2024-07-17 19:30:16 -04:00
WHERE tags && ARRAY[$1];
2024-08-06 11:19:30 -04:00
-- name: GetTalkgroupIDsByTags :many
SELECT system_id, tgid FROM talkgroups
2024-11-15 11:34:54 -05:00
WHERE (tags @> ARRAY[@any_tags])
AND (tags && ARRAY[@all_tags])
AND NOT (tags @> ARRAY[@not_tags]);
2024-08-06 11:19:30 -04:00
2024-07-17 19:30:16 -04:00
-- name: GetTalkgroupTags :one
2024-07-28 23:07:04 -04:00
SELECT tags FROM talkgroups
2024-11-15 10:37:58 -05:00
WHERE system_id = @system_id AND tgid = @tg_id;
2024-07-17 19:30:16 -04:00
-- name: SetTalkgroupTags :exec
2024-11-15 10:37:58 -05:00
UPDATE talkgroups SET tags = @tags
WHERE system_id = @system_id AND tgid = @tg_id;
2024-08-16 14:54:50 -04:00
-- name: GetTalkgroup :one
2024-11-03 08:44:34 -05:00
SELECT sqlc.embed(talkgroups) FROM talkgroups
2024-11-15 10:37:58 -05:00
WHERE (system_id, tgid) = (@system_id, @tg_id);
2024-08-16 16:47:39 -04:00
-- name: GetTalkgroupWithLearned :one
SELECT
2024-11-03 08:44:34 -05:00
sqlc.embed(tg), sqlc.embed(sys),
2024-08-16 16:47:39 -04:00
FALSE learned
FROM talkgroups tg
2024-08-20 08:17:02 -04:00
JOIN systems sys ON tg.system_id = sys.id
2024-11-15 10:37:58 -05:00
WHERE (tg.system_id, tg.tgid) = (@system_id, @tgid)
2024-08-16 16:47:39 -04:00
UNION
SELECT
2024-11-15 23:25:57 -05:00
tgl.id, tgl.system_id::INT4, tgl.tgid::INT4, tgl.name,
2024-11-03 09:45:51 -05:00
tgl.alpha_tag, tgl.alpha_tag, NULL::INTEGER, NULL::JSONB,
CASE WHEN tgl.alpha_tag IS NULL THEN NULL ELSE ARRAY[tgl.alpha_tag] END,
TRUE, NULL::JSONB, 1.0, sys.id, sys.name,
2024-08-16 16:47:39 -04:00
TRUE learned
FROM talkgroups_learned tgl
2024-08-20 08:17:02 -04:00
JOIN systems sys ON tgl.system_id = sys.id
2024-11-15 10:37:58 -05:00
WHERE tgl.system_id = @system_id AND tgl.tgid = @tgid AND ignored IS NOT TRUE;
2024-10-31 00:10:53 -04:00
2024-11-04 23:41:52 -05:00
-- name: GetTalkgroupsWithLearnedBySystem :many
SELECT
sqlc.embed(tg), sqlc.embed(sys),
FALSE learned
FROM talkgroups tg
JOIN systems sys ON tg.system_id = sys.id
WHERE tg.system_id = @system
UNION
SELECT
2024-11-15 23:25:57 -05:00
tgl.id, tgl.system_id::INT4, tgl.tgid::INT4, tgl.name,
2024-11-04 23:41:52 -05:00
tgl.alpha_tag, tgl.alpha_tag, NULL::INTEGER, NULL::JSONB,
CASE WHEN tgl.alpha_tag IS NULL THEN NULL ELSE ARRAY[tgl.alpha_tag] END,
TRUE, NULL::JSONB, 1.0, sys.id, sys.name,
TRUE learned
FROM talkgroups_learned tgl
JOIN systems sys ON tgl.system_id = sys.id
WHERE tgl.system_id = @system AND ignored IS NOT TRUE;
-- name: GetTalkgroupsWithLearned :many
SELECT
sqlc.embed(tg), sqlc.embed(sys),
FALSE learned
FROM talkgroups tg
JOIN systems sys ON tg.system_id = sys.id
UNION
SELECT
2024-11-15 23:25:57 -05:00
tgl.id, tgl.system_id::INT4, tgl.tgid::INT4, tgl.name,
2024-11-04 23:41:52 -05:00
tgl.alpha_tag, tgl.alpha_tag, NULL::INTEGER, NULL::JSONB,
CASE WHEN tgl.alpha_tag IS NULL THEN NULL ELSE ARRAY[tgl.alpha_tag] END,
TRUE, NULL::JSONB, 1.0, sys.id, sys.name,
TRUE learned
FROM talkgroups_learned tgl
JOIN systems sys ON tgl.system_id = sys.id
WHERE ignored IS NOT TRUE;
2024-10-31 00:10:53 -04:00
-- name: GetSystemName :one
2024-11-15 10:37:58 -05:00
SELECT name FROM systems WHERE id = @system_id;
2024-11-10 10:13:38 -05:00
-- name: UpdateTalkgroup :one
UPDATE talkgroups
SET
name = COALESCE(sqlc.narg('name'), name),
alpha_tag = COALESCE(sqlc.narg('alpha_tag'), alpha_tag),
tg_group = COALESCE(sqlc.narg('tg_group'), tg_group),
frequency = COALESCE(sqlc.narg('frequency'), frequency),
metadata = COALESCE(sqlc.narg('metadata'), metadata),
tags = COALESCE(sqlc.narg('tags'), tags),
alert = COALESCE(sqlc.narg('alert'), alert),
alert_config = COALESCE(sqlc.narg('alert_config'), alert_config),
weight = COALESCE(sqlc.narg('weight'), weight)
2024-11-14 08:37:19 -05:00
WHERE id = sqlc.narg('id') OR (system_id = sqlc.narg('system_id') AND tgid = sqlc.narg('tgid'))
2024-11-10 10:13:38 -05:00
RETURNING *;