// Code generated by sqlc. DO NOT EDIT. // versions: // sqlc v1.27.0 // source: talkgroups.sql package database import ( "context" "dynatron.me/x/stillbox/internal/jsontypes" "dynatron.me/x/stillbox/pkg/alerting/rules" ) const addLearnedTalkgroup = `-- name: AddLearnedTalkgroup :one INSERT INTO talkgroups_learned( system_id, tgid, name, alpha_tag, tg_group ) VALUES ( $1, $2, $3, $4, $5 ) RETURNING id ` type AddLearnedTalkgroupParams struct { SystemID int `json:"system_id"` TGID int `json:"tgid"` Name *string `json:"name"` AlphaTag *string `json:"alpha_tag"` TGGroup *string `json:"tg_group"` } func (q *Queries) AddLearnedTalkgroup(ctx context.Context, arg AddLearnedTalkgroupParams) (int, error) { row := q.db.QueryRow(ctx, addLearnedTalkgroup, arg.SystemID, arg.TGID, arg.Name, arg.AlphaTag, arg.TGGroup, ) var id int err := row.Scan(&id) return id, err } const addTalkgroupWithLearnedFlag = `-- name: AddTalkgroupWithLearnedFlag :exec INSERT INTO talkgroups ( system_id, tgid, learned ) VALUES( $1, $2, TRUE ) ` func (q *Queries) AddTalkgroupWithLearnedFlag(ctx context.Context, systemID int32, tGID int32) error { _, err := q.db.Exec(ctx, addTalkgroupWithLearnedFlag, systemID, tGID) return err } const getSystemName = `-- name: GetSystemName :one SELECT name FROM systems WHERE id = $1 ` func (q *Queries) GetSystemName(ctx context.Context, systemID int) (string, error) { row := q.db.QueryRow(ctx, getSystemName, systemID) var name string err := row.Scan(&name) return name, err } const getTalkgroup = `-- name: GetTalkgroup :one SELECT talkgroups.id, talkgroups.system_id, talkgroups.tgid, talkgroups.name, talkgroups.alpha_tag, talkgroups.tg_group, talkgroups.frequency, talkgroups.metadata, talkgroups.tags, talkgroups.alert, talkgroups.alert_config, talkgroups.weight, talkgroups.learned FROM talkgroups WHERE (system_id, tgid) = ($1, $2) ` type GetTalkgroupRow struct { Talkgroup Talkgroup `json:"talkgroup"` } func (q *Queries) GetTalkgroup(ctx context.Context, systemID int32, tGID int32) (GetTalkgroupRow, error) { row := q.db.QueryRow(ctx, getTalkgroup, systemID, tGID) var i GetTalkgroupRow err := row.Scan( &i.Talkgroup.ID, &i.Talkgroup.SystemID, &i.Talkgroup.TGID, &i.Talkgroup.Name, &i.Talkgroup.AlphaTag, &i.Talkgroup.TGGroup, &i.Talkgroup.Frequency, &i.Talkgroup.Metadata, &i.Talkgroup.Tags, &i.Talkgroup.Alert, &i.Talkgroup.AlertConfig, &i.Talkgroup.Weight, &i.Talkgroup.Learned, ) return i, err } const getTalkgroupIDsByTags = `-- name: GetTalkgroupIDsByTags :many SELECT system_id, tgid FROM talkgroups WHERE (tags @> ARRAY[$1]) AND (tags && ARRAY[$2]) AND NOT (tags @> ARRAY[$3]) ` type GetTalkgroupIDsByTagsRow struct { SystemID int32 `json:"system_id"` TGID int32 `json:"tgid"` } func (q *Queries) GetTalkgroupIDsByTags(ctx context.Context, anyTags []string, allTags []string, notTags []string) ([]GetTalkgroupIDsByTagsRow, error) { rows, err := q.db.Query(ctx, getTalkgroupIDsByTags, anyTags, allTags, notTags) if err != nil { return nil, err } defer rows.Close() var items []GetTalkgroupIDsByTagsRow for rows.Next() { var i GetTalkgroupIDsByTagsRow if err := rows.Scan(&i.SystemID, &i.TGID); err != nil { return nil, err } items = append(items, i) } if err := rows.Err(); err != nil { return nil, err } return items, nil } const getTalkgroupTags = `-- name: GetTalkgroupTags :one SELECT tags FROM talkgroups WHERE system_id = $1 AND tgid = $2 ` func (q *Queries) GetTalkgroupTags(ctx context.Context, systemID int32, tGID int32) ([]string, error) { row := q.db.QueryRow(ctx, getTalkgroupTags, systemID, tGID) var tags []string err := row.Scan(&tags) return tags, err } const getTalkgroupWithLearned = `-- name: GetTalkgroupWithLearned :one SELECT tg.id, tg.system_id, tg.tgid, tg.name, tg.alpha_tag, tg.tg_group, tg.frequency, tg.metadata, tg.tags, tg.alert, tg.alert_config, tg.weight, tg.learned, sys.id, sys.name FROM talkgroups tg JOIN systems sys ON tg.system_id = sys.id WHERE (tg.system_id, tg.tgid) = ($1, $2) AND tg.learned IS NOT TRUE UNION SELECT tgl.id, tgl.system_id::INT4, tgl.tgid::INT4, tgl.name, tgl.alpha_tag, tgl.tg_group, NULL::INTEGER, NULL::JSONB, CASE WHEN tgl.tg_group IS NULL THEN NULL ELSE ARRAY[tgl.tg_group] END, NOT tgl.ignored, NULL::JSONB, 1.0, TRUE learned, sys.id, sys.name FROM talkgroups_learned tgl JOIN systems sys ON tgl.system_id = sys.id WHERE tgl.system_id = $1 AND tgl.tgid = $2 AND ignored IS NOT TRUE ` type GetTalkgroupWithLearnedRow struct { Talkgroup Talkgroup `json:"talkgroup"` System System `json:"system"` } func (q *Queries) GetTalkgroupWithLearned(ctx context.Context, systemID int32, tGID int32) (GetTalkgroupWithLearnedRow, error) { row := q.db.QueryRow(ctx, getTalkgroupWithLearned, systemID, tGID) var i GetTalkgroupWithLearnedRow err := row.Scan( &i.Talkgroup.ID, &i.Talkgroup.SystemID, &i.Talkgroup.TGID, &i.Talkgroup.Name, &i.Talkgroup.AlphaTag, &i.Talkgroup.TGGroup, &i.Talkgroup.Frequency, &i.Talkgroup.Metadata, &i.Talkgroup.Tags, &i.Talkgroup.Alert, &i.Talkgroup.AlertConfig, &i.Talkgroup.Weight, &i.Talkgroup.Learned, &i.System.ID, &i.System.Name, ) return i, err } const getTalkgroupsWithAllTags = `-- name: GetTalkgroupsWithAllTags :many SELECT talkgroups.id, talkgroups.system_id, talkgroups.tgid, talkgroups.name, talkgroups.alpha_tag, talkgroups.tg_group, talkgroups.frequency, talkgroups.metadata, talkgroups.tags, talkgroups.alert, talkgroups.alert_config, talkgroups.weight, talkgroups.learned FROM talkgroups WHERE tags && ARRAY[$1] ` type GetTalkgroupsWithAllTagsRow struct { Talkgroup Talkgroup `json:"talkgroup"` } func (q *Queries) GetTalkgroupsWithAllTags(ctx context.Context, tags []string) ([]GetTalkgroupsWithAllTagsRow, error) { rows, err := q.db.Query(ctx, getTalkgroupsWithAllTags, tags) if err != nil { return nil, err } defer rows.Close() var items []GetTalkgroupsWithAllTagsRow for rows.Next() { var i GetTalkgroupsWithAllTagsRow if err := rows.Scan( &i.Talkgroup.ID, &i.Talkgroup.SystemID, &i.Talkgroup.TGID, &i.Talkgroup.Name, &i.Talkgroup.AlphaTag, &i.Talkgroup.TGGroup, &i.Talkgroup.Frequency, &i.Talkgroup.Metadata, &i.Talkgroup.Tags, &i.Talkgroup.Alert, &i.Talkgroup.AlertConfig, &i.Talkgroup.Weight, &i.Talkgroup.Learned, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Err(); err != nil { return nil, err } return items, nil } const getTalkgroupsWithAnyTags = `-- name: GetTalkgroupsWithAnyTags :many SELECT talkgroups.id, talkgroups.system_id, talkgroups.tgid, talkgroups.name, talkgroups.alpha_tag, talkgroups.tg_group, talkgroups.frequency, talkgroups.metadata, talkgroups.tags, talkgroups.alert, talkgroups.alert_config, talkgroups.weight, talkgroups.learned FROM talkgroups WHERE tags @> ARRAY[$1] ` type GetTalkgroupsWithAnyTagsRow struct { Talkgroup Talkgroup `json:"talkgroup"` } func (q *Queries) GetTalkgroupsWithAnyTags(ctx context.Context, tags []string) ([]GetTalkgroupsWithAnyTagsRow, error) { rows, err := q.db.Query(ctx, getTalkgroupsWithAnyTags, tags) if err != nil { return nil, err } defer rows.Close() var items []GetTalkgroupsWithAnyTagsRow for rows.Next() { var i GetTalkgroupsWithAnyTagsRow if err := rows.Scan( &i.Talkgroup.ID, &i.Talkgroup.SystemID, &i.Talkgroup.TGID, &i.Talkgroup.Name, &i.Talkgroup.AlphaTag, &i.Talkgroup.TGGroup, &i.Talkgroup.Frequency, &i.Talkgroup.Metadata, &i.Talkgroup.Tags, &i.Talkgroup.Alert, &i.Talkgroup.AlertConfig, &i.Talkgroup.Weight, &i.Talkgroup.Learned, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Err(); err != nil { return nil, err } return items, nil } const getTalkgroupsWithLearned = `-- name: GetTalkgroupsWithLearned :many SELECT tg.id, tg.system_id, tg.tgid, tg.name, tg.alpha_tag, tg.tg_group, tg.frequency, tg.metadata, tg.tags, tg.alert, tg.alert_config, tg.weight, tg.learned, sys.id, sys.name FROM talkgroups tg JOIN systems sys ON tg.system_id = sys.id WHERE tg.learned IS NOT TRUE UNION SELECT tgl.id, tgl.system_id::INT4, tgl.tgid::INT4, tgl.name, tgl.alpha_tag, tgl.tg_group, NULL::INTEGER, NULL::JSONB, CASE WHEN tgl.tg_group IS NULL THEN NULL ELSE ARRAY[tgl.tg_group] END, NOT tgl.ignored, NULL::JSONB, 1.0, TRUE learned, sys.id, sys.name FROM talkgroups_learned tgl JOIN systems sys ON tgl.system_id = sys.id WHERE ignored IS NOT TRUE ` type GetTalkgroupsWithLearnedRow struct { Talkgroup Talkgroup `json:"talkgroup"` System System `json:"system"` } func (q *Queries) GetTalkgroupsWithLearned(ctx context.Context) ([]GetTalkgroupsWithLearnedRow, error) { rows, err := q.db.Query(ctx, getTalkgroupsWithLearned) if err != nil { return nil, err } defer rows.Close() var items []GetTalkgroupsWithLearnedRow for rows.Next() { var i GetTalkgroupsWithLearnedRow if err := rows.Scan( &i.Talkgroup.ID, &i.Talkgroup.SystemID, &i.Talkgroup.TGID, &i.Talkgroup.Name, &i.Talkgroup.AlphaTag, &i.Talkgroup.TGGroup, &i.Talkgroup.Frequency, &i.Talkgroup.Metadata, &i.Talkgroup.Tags, &i.Talkgroup.Alert, &i.Talkgroup.AlertConfig, &i.Talkgroup.Weight, &i.Talkgroup.Learned, &i.System.ID, &i.System.Name, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Err(); err != nil { return nil, err } return items, nil } const getTalkgroupsWithLearnedBySystem = `-- name: GetTalkgroupsWithLearnedBySystem :many SELECT tg.id, tg.system_id, tg.tgid, tg.name, tg.alpha_tag, tg.tg_group, tg.frequency, tg.metadata, tg.tags, tg.alert, tg.alert_config, tg.weight, tg.learned, sys.id, sys.name FROM talkgroups tg JOIN systems sys ON tg.system_id = sys.id WHERE tg.system_id = $1 AND tg.learned IS NOT TRUE UNION SELECT tgl.id, tgl.system_id::INT4, tgl.tgid::INT4, tgl.name, tgl.alpha_tag, tgl.tg_group, NULL::INTEGER, NULL::JSONB, CASE WHEN tgl.tg_group IS NULL THEN NULL ELSE ARRAY[tgl.tg_group] END, NOT tgl.ignored, NULL::JSONB, 1.0, TRUE learned, sys.id, sys.name FROM talkgroups_learned tgl JOIN systems sys ON tgl.system_id = sys.id WHERE tgl.system_id = $1 AND ignored IS NOT TRUE ` type GetTalkgroupsWithLearnedBySystemRow struct { Talkgroup Talkgroup `json:"talkgroup"` System System `json:"system"` } func (q *Queries) GetTalkgroupsWithLearnedBySystem(ctx context.Context, system int32) ([]GetTalkgroupsWithLearnedBySystemRow, error) { rows, err := q.db.Query(ctx, getTalkgroupsWithLearnedBySystem, system) if err != nil { return nil, err } defer rows.Close() var items []GetTalkgroupsWithLearnedBySystemRow for rows.Next() { var i GetTalkgroupsWithLearnedBySystemRow if err := rows.Scan( &i.Talkgroup.ID, &i.Talkgroup.SystemID, &i.Talkgroup.TGID, &i.Talkgroup.Name, &i.Talkgroup.AlphaTag, &i.Talkgroup.TGGroup, &i.Talkgroup.Frequency, &i.Talkgroup.Metadata, &i.Talkgroup.Tags, &i.Talkgroup.Alert, &i.Talkgroup.AlertConfig, &i.Talkgroup.Weight, &i.Talkgroup.Learned, &i.System.ID, &i.System.Name, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Err(); err != nil { return nil, err } return items, nil } const setTalkgroupTags = `-- name: SetTalkgroupTags :exec UPDATE talkgroups SET tags = $1 WHERE system_id = $2 AND tgid = $3 ` func (q *Queries) SetTalkgroupTags(ctx context.Context, tags []string, systemID int32, tGID int32) error { _, err := q.db.Exec(ctx, setTalkgroupTags, tags, systemID, tGID) return err } const updateTalkgroup = `-- name: UpdateTalkgroup :one UPDATE talkgroups SET name = COALESCE($1, name), alpha_tag = COALESCE($2, alpha_tag), tg_group = COALESCE($3, tg_group), frequency = COALESCE($4, frequency), metadata = COALESCE($5, metadata), tags = COALESCE($6, tags), alert = COALESCE($7, alert), alert_config = COALESCE($8, alert_config), weight = COALESCE($9, weight), learned = COALESCE($10, learned) WHERE id = $11 OR (system_id = $12 AND tgid = $13) RETURNING id, system_id, tgid, name, alpha_tag, tg_group, frequency, metadata, tags, alert, alert_config, weight, learned ` type UpdateTalkgroupParams struct { Name *string `json:"name"` AlphaTag *string `json:"alpha_tag"` TGGroup *string `json:"tg_group"` Frequency *int32 `json:"frequency"` Metadata jsontypes.Metadata `json:"metadata"` Tags []string `json:"tags"` Alert *bool `json:"alert"` AlertConfig rules.AlertRules `json:"alert_config"` Weight *float32 `json:"weight"` Learned *bool `json:"learned"` ID *int32 `json:"id"` SystemID *int32 `json:"system_id"` TGID *int32 `json:"tgid"` } func (q *Queries) UpdateTalkgroup(ctx context.Context, arg UpdateTalkgroupParams) (Talkgroup, error) { row := q.db.QueryRow(ctx, updateTalkgroup, arg.Name, arg.AlphaTag, arg.TGGroup, arg.Frequency, arg.Metadata, arg.Tags, arg.Alert, arg.AlertConfig, arg.Weight, arg.Learned, arg.ID, arg.SystemID, arg.TGID, ) var i Talkgroup err := row.Scan( &i.ID, &i.SystemID, &i.TGID, &i.Name, &i.AlphaTag, &i.TGGroup, &i.Frequency, &i.Metadata, &i.Tags, &i.Alert, &i.AlertConfig, &i.Weight, &i.Learned, ) return i, err }