133 lines
2.9 KiB
Go
133 lines
2.9 KiB
Go
|
// Code generated by sqlc. DO NOT EDIT.
|
||
|
// versions:
|
||
|
// sqlc v1.27.0
|
||
|
// source: batch.go
|
||
|
|
||
|
package database
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"errors"
|
||
|
|
||
|
"dynatron.me/x/stillbox/internal/jsontypes"
|
||
|
"dynatron.me/x/stillbox/pkg/alerting/rules"
|
||
|
"github.com/jackc/pgx/v5"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
ErrBatchAlreadyClosed = errors.New("batch already closed")
|
||
|
)
|
||
|
|
||
|
const upsertTalkgroup = `-- name: UpsertTalkgroup :batchone
|
||
|
INSERT INTO talkgroups AS tg (
|
||
|
system_id, tgid, name, alpha_tag, tg_group, frequency, metadata, tags, alert, alert_config, weight, learned
|
||
|
) VALUES (
|
||
|
$1,
|
||
|
$2,
|
||
|
$3,
|
||
|
$4,
|
||
|
$5,
|
||
|
$6,
|
||
|
$7,
|
||
|
$8,
|
||
|
$9,
|
||
|
$10,
|
||
|
$11,
|
||
|
$12
|
||
|
)
|
||
|
ON CONFLICT (system_id, tgid) DO UPDATE
|
||
|
SET
|
||
|
name = COALESCE($3, tg.name),
|
||
|
alpha_tag = COALESCE($4, tg.alpha_tag),
|
||
|
tg_group = COALESCE($5, tg.tg_group),
|
||
|
frequency = COALESCE($6, tg.frequency),
|
||
|
metadata = COALESCE($7, tg.metadata),
|
||
|
tags = COALESCE($8, tg.tags),
|
||
|
alert = COALESCE($9, tg.alert),
|
||
|
alert_config = COALESCE($10, tg.alert_config),
|
||
|
weight = COALESCE($11, tg.weight),
|
||
|
learned = COALESCE($12, tg.learned)
|
||
|
RETURNING id, system_id, tgid, name, alpha_tag, tg_group, frequency, metadata, tags, alert, alert_config, weight, learned
|
||
|
`
|
||
|
|
||
|
type UpsertTalkgroupBatchResults struct {
|
||
|
br pgx.BatchResults
|
||
|
tot int
|
||
|
closed bool
|
||
|
}
|
||
|
|
||
|
type UpsertTalkgroupParams struct {
|
||
|
SystemID int32 `json:"system_id"`
|
||
|
TGID int32 `json:"tgid"`
|
||
|
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"`
|
||
|
}
|
||
|
|
||
|
func (q *Queries) UpsertTalkgroup(ctx context.Context, arg []UpsertTalkgroupParams) *UpsertTalkgroupBatchResults {
|
||
|
batch := &pgx.Batch{}
|
||
|
for _, a := range arg {
|
||
|
vals := []interface{}{
|
||
|
a.SystemID,
|
||
|
a.TGID,
|
||
|
a.Name,
|
||
|
a.AlphaTag,
|
||
|
a.TGGroup,
|
||
|
a.Frequency,
|
||
|
a.Metadata,
|
||
|
a.Tags,
|
||
|
a.Alert,
|
||
|
a.AlertConfig,
|
||
|
a.Weight,
|
||
|
a.Learned,
|
||
|
}
|
||
|
batch.Queue(upsertTalkgroup, vals...)
|
||
|
}
|
||
|
br := q.db.SendBatch(ctx, batch)
|
||
|
return &UpsertTalkgroupBatchResults{br, len(arg), false}
|
||
|
}
|
||
|
|
||
|
func (b *UpsertTalkgroupBatchResults) QueryRow(f func(int, Talkgroup, error)) {
|
||
|
defer b.br.Close()
|
||
|
for t := 0; t < b.tot; t++ {
|
||
|
var i Talkgroup
|
||
|
if b.closed {
|
||
|
if f != nil {
|
||
|
f(t, i, ErrBatchAlreadyClosed)
|
||
|
}
|
||
|
continue
|
||
|
}
|
||
|
row := b.br.QueryRow()
|
||
|
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,
|
||
|
)
|
||
|
if f != nil {
|
||
|
f(t, i, err)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (b *UpsertTalkgroupBatchResults) Close() error {
|
||
|
b.closed = true
|
||
|
return b.br.Close()
|
||
|
}
|