database

package
v0.0.0-...-1a3a2fa Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 11, 2026 License: BSD-3-Clause Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
const (
	APIKeysOwnerIDNameKey              = "api_keys_owner_id_name_key"
	AudioRefJournalCallIDBackendRefKey = "audio_ref_journal_call_id_backend_ref_key"
	SweptCallsPK                       = "swept_calls_pkey"
	TGConstraintName                   = "calls_system_talkgroup_fkey"
	SysConstraintName                  = "talkgroups_system_id_fkey"
	UsernameConstraintName             = "users_username_key"
	EmailConstraintName                = "users_email_key"
)
View Source
const DBCtxKey dBCtxKey = "dbctx"

Variables

View Source
var (
	ErrLowerBoundAfterUpperBound = errors.New("lower bound after upper bound")
	ErrCantDecodePartitionBounds = errors.New("cannot decode partition bounds")
)
View Source
var Constraints = map[string]Constraint{
	APIKeysOwnerIDNameKey:              {"API key with this name already exists"},
	AudioRefJournalCallIDBackendRefKey: {"delete entry for call already exists"},
	SweptCallsPK:                       {"call already swept"},
	TGConstraintName:                   {"talkgroup already exists in system"},
	SysConstraintName:                  {"system already exists"},
	UsernameConstraintName:             {"username already taken"},
	EmailConstraintName:                {"an account with that email already exists"},
}
View Source
var (
	ErrBatchAlreadyClosed = errors.New("batch already closed")
)

Functions

func Close

func Close(c Store)

func ConstraintViolation

func ConstraintViolation(e error) error

func CtxWithDB

func CtxWithDB(ctx context.Context, conn Store) context.Context

CtxWithDB returns a Context with the provided database handle.

func ErrIsConstraintViolation

func ErrIsConstraintViolation(e error) *string

func IsConstraintViolation

func IsConstraintViolation(err error, constraint string) bool

IsConstraintViolation is a convenience function to test whether an error is a PgError indicating constraint violation.

func IsNoRows

func IsNoRows(err error) bool

IsNoRows is a convenience function that returns whether a returned error is a database no rows error.

func IsSystemConstraintViolation

func IsSystemConstraintViolation(e error) bool

func IsTGConstraintViolation

func IsTGConstraintViolation(e error) bool

func RegisterDataTypes

func RegisterDataTypes(ctx context.Context, conn *pgx.Conn) error

Types

type AddAlertParams

type AddAlertParams struct {
	Time          time.Time                        `db:"time" json:"time"`
	TGID          int                              `db:"tgid" json:"tgid"`
	SystemID      int                              `db:"system_id" json:"systemId"`
	Weight        *float32                         `db:"weight" json:"weight"`
	Score         *float32                         `db:"score" json:"score"`
	OrigScore     *float32                         `db:"orig_score" json:"origScore"`
	Notified      bool                             `db:"notified" json:"notified"`
	Metadata      []byte                           `db:"metadata" json:"metadata"`
	ContextWindow pgtype.Range[pgtype.Timestamptz] `db:"context_window" json:"contextWindow"`
	URLTag        *string                          `db:"url_tag" json:"urlTag"`
}

type AddCallParams

type AddCallParams struct {
	ID          uuid.UUID     `db:"id" json:"id"`
	Submitter   *int32        `db:"submitter" json:"submitter"`
	System      int           `db:"system" json:"system"`
	Talkgroup   int           `db:"talkgroup" json:"talkgroup"`
	CallDate    time.Time     `db:"call_date" json:"callDate"`
	AudioName   *string       `db:"audio_name" json:"audioName"`
	AudioBlob   []byte        `db:"audio_blob" json:"audioBlob"`
	AudioType   NullAudioMIME `db:"audio_type" json:"audioType"`
	AudioRef    []byte        `db:"audio_ref" json:"audioRef"`
	Duration    *int32        `db:"duration" json:"duration"`
	Frequency   int           `db:"frequency" json:"frequency"`
	Frequencies []int         `db:"frequencies" json:"frequencies"`
	Patches     []int         `db:"patches" json:"patches"`
	TalkerAlias *string       `db:"talker_alias" json:"talkerAlias,omitempty"`
	TGLabel     *string       `db:"tg_label" json:"tgLabel"`
	TGAlphaTag  *string       `db:"tg_alpha_tag" json:"tgAlphaTag"`
	TGGroup     *string       `db:"tg_group" json:"tgGroup"`
	Source      int           `db:"source" json:"source"`
}

type AddLearnedTalkgroupParams

type AddLearnedTalkgroupParams struct {
	SystemID int32   `db:"system_id" json:"systemId"`
	TGID     int32   `db:"tgid" json:"tgid"`
	Name     *string `db:"name" json:"name"`
	AlphaTag *string `db:"alpha_tag" json:"alphaTag"`
	TGGroup  *string `db:"tg_group" json:"tgGroup"`
}

type AddRefJournalParams

type AddRefJournalParams struct {
	CallID     pgtype.UUID `db:"call_id" json:"callId"`
	Backend    string      `db:"backend" json:"backend"`
	Ref        []byte      `db:"ref" json:"ref"`
	PruneAfter *time.Time  `db:"prune_after" json:"pruneAfter"`
	Tries      int         `db:"tries" json:"tries"`
}

type Alert

type Alert struct {
	ID            int                              `db:"id" json:"id,omitempty" yaml:"id,omitempty"`
	Time          time.Time                        `db:"time" json:"time,omitempty" yaml:"time,omitempty"`
	TGID          int                              `db:"tgid" json:"tgid,omitempty" yaml:"tgid,omitempty"`
	SystemID      int                              `db:"system_id" json:"systemId,omitempty" yaml:"system_id,omitempty"`
	Weight        *float32                         `db:"weight" json:"weight,omitempty" yaml:"weight,omitempty"`
	Score         *float32                         `db:"score" json:"score,omitempty" yaml:"score,omitempty"`
	OrigScore     *float32                         `db:"orig_score" json:"origScore,omitempty" yaml:"orig_score,omitempty"`
	Notified      bool                             `db:"notified" json:"notified,omitempty" yaml:"notified,omitempty"`
	Metadata      []byte                           `db:"metadata" json:"metadata,omitempty" yaml:"metadata,omitempty"`
	ContextWindow pgtype.Range[pgtype.Timestamptz] `db:"context_window" json:"contextWindow,omitempty" yaml:"context_window,omitempty"`
	URLTag        *string                          `db:"url_tag" json:"urlTag,omitempty" yaml:"url_tag,omitempty"`
}

type ApiKey

type ApiKey struct {
	ID        int         `db:"id" json:"id,omitempty" yaml:"id,omitempty"`
	OwnerID   int         `db:"owner_id" json:"ownerId,omitempty" yaml:"owner_id,omitempty"`
	Name      *string     `db:"name" json:"name,omitempty" yaml:"name,omitempty"`
	CreatedAt time.Time   `db:"created_at" json:"createdAt,omitempty" yaml:"created_at,omitempty"`
	Expires   *time.Time  `db:"expires" json:"expires,omitempty" yaml:"expires,omitempty"`
	Disabled  bool        `db:"disabled" json:"disabled,omitempty" yaml:"disabled,omitempty"`
	Kind      int         `db:"kind" json:"kind,omitempty" yaml:"kind,omitempty"`
	ApiKey    *string     `db:"api_key" json:"apiKey,omitempty" yaml:"api_key,omitempty"`
	JwtID     pgtype.UUID `db:"jwt_id" json:"jwtId,omitempty" yaml:"jwt_id,omitempty"`
	Scopes    []string    `db:"scopes" json:"scopes,omitempty" yaml:"scopes,omitempty"`
}

type AudioMIME

type AudioMIME string
const (
	AudioMIMEAudioMPEG AudioMIME = "audio/mpeg"
	AudioMIMEAudioWAV  AudioMIME = "audio/wav"
)

func (*AudioMIME) Scan

func (e *AudioMIME) Scan(src interface{}) error

type AudioRefJournal

type AudioRefJournal struct {
	ID         int64       `db:"id" json:"id,omitempty" yaml:"id,omitempty"`
	CallID     pgtype.UUID `db:"call_id" json:"callId,omitempty" yaml:"call_id,omitempty"`
	Backend    string      `db:"backend" json:"backend,omitempty" yaml:"backend,omitempty"`
	Ref        []byte      `db:"ref" json:"ref,omitempty" yaml:"ref,omitempty"`
	PruneAfter *time.Time  `db:"prune_after" json:"pruneAfter,omitempty" yaml:"prune_after,omitempty"`
	LastTry    time.Time   `db:"last_try" json:"lastTry,omitempty" yaml:"last_try,omitempty"`
	Tries      int         `db:"tries" json:"tries,omitempty" yaml:"tries,omitempty"`
}

type Call

type Call struct {
	ID          uuid.UUID     `db:"id" json:"id,omitempty" yaml:"id,omitempty"`
	Submitter   *int32        `db:"submitter" json:"submitter,omitempty" yaml:"submitter,omitempty"`
	System      int           `db:"system" json:"system,omitempty" yaml:"system,omitempty"`
	Talkgroup   int           `db:"talkgroup" json:"talkgroup,omitempty" yaml:"talkgroup,omitempty"`
	CallDate    time.Time     `db:"call_date" json:"callDate,omitempty" yaml:"call_date,omitempty"`
	AudioName   *string       `db:"audio_name" json:"audioName,omitempty" yaml:"audio_name,omitempty"`
	AudioBlob   []byte        `db:"audio_blob" json:"audioBlob,omitempty" yaml:"audio_blob,omitempty"`
	Duration    *int32        `db:"duration" json:"duration,omitempty" yaml:"duration,omitempty"`
	AudioType   NullAudioMIME `db:"audio_type" json:"audioType,omitempty" yaml:"audio_type,omitempty"`
	AudioRef    []byte        `db:"audio_ref" json:"audioRef,omitempty" yaml:"audio_ref,omitempty"`
	Frequency   int           `db:"frequency" json:"frequency,omitempty" yaml:"frequency,omitempty"`
	Frequencies []int         `db:"frequencies" json:"frequencies,omitempty" yaml:"frequencies,omitempty"`
	Patches     []int         `db:"patches" json:"patches,omitempty" yaml:"patches,omitempty"`
	TalkerAlias *string       `db:"talker_alias" json:"talkerAlias,omitempty" yaml:"talker_alias,omitempty"`
	TGLabel     *string       `db:"tg_label" json:"tgLabel,omitempty" yaml:"tg_label,omitempty"`
	TGAlphaTag  *string       `db:"tg_alpha_tag" json:"tgAlphaTag,omitempty" yaml:"tg_alpha_tag,omitempty"`
	TGGroup     *string       `db:"tg_group" json:"tgGroup,omitempty" yaml:"tg_group,omitempty"`
	Source      int           `db:"source" json:"source,omitempty" yaml:"source,omitempty"`
	Transcript  *string       `db:"transcript" json:"transcript,omitempty" yaml:"transcript,omitempty"`
	DanglingAt  *time.Time    `db:"dangling_at" json:"danglingAt,omitempty" yaml:"dangling_at,omitempty"`
}

func (*Call) UnmarshalYAML

func (c *Call) UnmarshalYAML(n *yaml.Node) error

type Constraint

type Constraint struct {
	// contains filtered or unexported fields
}

func (Constraint) Error

func (c Constraint) Error() error

type CopyFromUUIDIter

type CopyFromUUIDIter struct {
	// contains filtered or unexported fields
}

func NewCopyFromUUIDIter

func NewCopyFromUUIDIter(it iter.Seq[uuid.UUID], progressChan chan<- int64) *CopyFromUUIDIter

func (*CopyFromUUIDIter) Close

func (cfi *CopyFromUUIDIter) Close()

func (*CopyFromUUIDIter) Err

func (cfi *CopyFromUUIDIter) Err() error

func (*CopyFromUUIDIter) Next

func (cfi *CopyFromUUIDIter) Next() bool

func (*CopyFromUUIDIter) Stop

func (cfi *CopyFromUUIDIter) Stop()

func (*CopyFromUUIDIter) Values

func (cfi *CopyFromUUIDIter) Values() ([]any, error)

type CopyFromer

type CopyFromer interface {
	CopyFrom(ctx context.Context, tableName pgx.Identifier, columnNames []string, rowSrc pgx.CopyFromSource) (int64, error)
}

type CreateAPIKeyParams

type CreateAPIKeyParams struct {
	OwnerID   int         `db:"owner_id" json:"ownerId"`
	Name      *string     `db:"name" json:"name"`
	Kind      int         `db:"kind" json:"kind"`
	CreatedAt time.Time   `db:"created_at" json:"createdAt"`
	Expires   *time.Time  `db:"expires" json:"expires"`
	JwtID     pgtype.UUID `db:"jwt_id" json:"jwtId"`
	Scopes    []string    `db:"scopes" json:"scopes"`
	Disabled  bool        `db:"disabled" json:"disabled"`
	HashedKey *string     `db:"hashed_key" json:"hashedKey"`
}

type CreateIncidentParams

type CreateIncidentParams struct {
	ID          uuid.UUID          `db:"id" json:"id"`
	Name        string             `db:"name" json:"name"`
	OwnerID     int                `db:"owner_id" json:"ownerId"`
	Description *string            `db:"description" json:"description"`
	StartTime   *time.Time         `db:"start_time" json:"startTime"`
	EndTime     *time.Time         `db:"end_time" json:"endTime"`
	Location    []byte             `db:"location" json:"location"`
	Metadata    jsontypes.Metadata `db:"metadata" json:"metadata"`
}

type CreateShareParams

type CreateShareParams struct {
	ID         string     `db:"id" json:"id"`
	EntityType string     `db:"entity_type" json:"entityType"`
	EntityID   uuid.UUID  `db:"entity_id" json:"entityId"`
	EntityDate *time.Time `db:"entity_date" json:"entityDate"`
	OwnerID    int        `db:"owner_id" json:"ownerId"`
	Expiration *time.Time `db:"expiration" json:"expiration"`
}

type CreateUserParams

type CreateUserParams struct {
	Username string   `db:"username" json:"username"`
	Password string   `db:"password" json:"password"`
	Email    string   `db:"email" json:"email"`
	RealName *string  `db:"real_name" json:"realName"`
	Roles    []string `db:"roles" json:"roles"`
}

type CreateWebPushSubscriptionParams

type CreateWebPushSubscriptionParams struct {
	UserID       int        `db:"user_id" json:"userId"`
	Expiration   *time.Time `db:"expiration" json:"expiration"`
	Subscription []byte     `db:"subscription" json:"subscription"`
	Client       *string    `db:"client" json:"client"`
}

type DBTX

type DBTX interface {
	Exec(context.Context, string, ...interface{}) (pgconn.CommandTag, error)
	Query(context.Context, string, ...interface{}) (pgx.Rows, error)
	QueryRow(context.Context, string, ...interface{}) pgx.Row
	SendBatch(context.Context, *pgx.Batch) pgx.BatchResults
}

type DetailedCountRefJournalRow

type DetailedCountRefJournalRow struct {
	Count   int64  `db:"count" json:"count"`
	Backend string `db:"backend" json:"backend"`
	HasRef  bool   `db:"has_ref" json:"hasRef"`
}

type GetAPIKeyRow

type GetAPIKeyRow struct {
	ID        int         `db:"id" json:"id"`
	OwnerID   int         `db:"owner_id" json:"ownerId"`
	Name      *string     `db:"name" json:"name"`
	Kind      int         `db:"kind" json:"kind"`
	CreatedAt time.Time   `db:"created_at" json:"createdAt"`
	Expires   *time.Time  `db:"expires" json:"expires"`
	Disabled  bool        `db:"disabled" json:"disabled"`
	ApiKey    *string     `db:"api_key" json:"apiKey"`
	JwtID     pgtype.UUID `db:"jwt_id" json:"jwtId"`
	Scopes    []string    `db:"scopes" json:"scopes"`
	Username  string      `db:"username" json:"username"`
}

type GetCallAudioByIDRow

type GetCallAudioByIDRow struct {
	CallDate  time.Time     `db:"call_date" json:"callDate"`
	AudioName *string       `db:"audio_name" json:"audioName"`
	AudioType NullAudioMIME `db:"audio_type" json:"audioType"`
	AudioRef  []byte        `db:"audio_ref" json:"audioRef"`
	AudioBlob []byte        `db:"audio_blob" json:"audioBlob"`
}

type GetCallAudioParams

type GetCallAudioParams struct {
	Count         int32          `db:"count" json:"count"`
	Swept         *bool          `db:"swept" json:"swept"`
	Start         *time.Time     `db:"start" json:"start"`
	End           *time.Time     `db:"end" json:"end"`
	TagsAny       []string       `db:"tags_any" json:"tagsAny"`
	TagsNot       []string       `db:"tags_not" json:"tagsNot"`
	LongerThan    pgtype.Numeric `db:"longer_than" json:"longerThan"`
	HasBackend    *string        `db:"has_backend" json:"hasBackend"`
	NotHasBackend *string        `db:"not_has_backend" json:"notHasBackend"`
	HasBlob       *bool          `db:"has_blob" json:"hasBlob"`
}

type GetCallAudioRow

type GetCallAudioRow struct {
	ID        uuid.UUID     `db:"id" json:"id"`
	CallDate  time.Time     `db:"call_date" json:"callDate"`
	AudioName *string       `db:"audio_name" json:"audioName"`
	AudioType NullAudioMIME `db:"audio_type" json:"audioType"`
	AudioRef  []byte        `db:"audio_ref" json:"audioRef"`
	AudioBlob []byte        `db:"audio_blob" json:"audioBlob"`
	Swept     bool          `db:"swept" json:"swept"`
}

type GetCallRow

type GetCallRow struct {
	ID          uuid.UUID     `db:"id" json:"id"`
	Submitter   *int32        `db:"submitter" json:"submitter"`
	System      int           `db:"system" json:"system"`
	Talkgroup   int           `db:"talkgroup" json:"talkgroup"`
	CallDate    time.Time     `db:"call_date" json:"callDate"`
	AudioName   *string       `db:"audio_name" json:"audioName"`
	AudioType   NullAudioMIME `db:"audio_type" json:"audioType"`
	AudioRef    []byte        `db:"audio_ref" json:"audioRef"`
	Duration    *int32        `db:"duration" json:"duration"`
	Frequency   int           `db:"frequency" json:"frequency"`
	Frequencies []int         `db:"frequencies" json:"frequencies"`
	Patches     []int         `db:"patches" json:"patches"`
	TalkerAlias *string       `db:"talker_alias" json:"talkerAlias,omitempty"`
	TGLabel     *string       `db:"tg_label" json:"tgLabel"`
	TGAlphaTag  *string       `db:"tg_alpha_tag" json:"tgAlphaTag"`
	TGGroup     *string       `db:"tg_group" json:"tgGroup"`
	Source      int           `db:"source" json:"source"`
	Transcript  *string       `db:"transcript" json:"transcript"`
	DanglingAt  *time.Time    `db:"dangling_at" json:"danglingAt"`
}

type GetCallStatsByIntervalRow

type GetCallStatsByIntervalRow struct {
	Count int64     `db:"count" json:"count"`
	Date  time.Time `db:"date" json:"date"`
}

type GetCallStatsByTalkgroupRow

type GetCallStatsByTalkgroupRow struct {
	Count     int64           `db:"count" json:"count"`
	System    int             `db:"system" json:"system"`
	Talkgroup int             `db:"talkgroup" json:"talkgroup"`
	DateTrunc pgtype.Interval `db:"date_trunc" json:"dateTrunc"`
}

type GetCallsRow

type GetCallsRow struct {
	Call Call `db:"call" json:"call"`
}

type GetIncidentCallsRow

type GetIncidentCallsRow struct {
	CallID      uuid.UUID     `db:"call_id" json:"callId"`
	CallDate    *time.Time    `db:"call_date" json:"callDate"`
	Duration    *int32        `db:"duration" json:"duration"`
	SystemID    int           `db:"system_id" json:"systemId"`
	TGID        int           `db:"tgid" json:"tgid"`
	Notes       []byte        `db:"notes" json:"notes"`
	Submitter   *int32        `db:"submitter" json:"submitter"`
	AudioName   *string       `db:"audio_name" json:"audioName"`
	AudioType   NullAudioMIME `db:"audio_type" json:"audioType"`
	AudioRef    []byte        `db:"audio_ref" json:"audioRef"`
	Frequency   int           `db:"frequency" json:"frequency"`
	Frequencies []int         `db:"frequencies" json:"frequencies"`
	TalkerAlias *string       `db:"talker_alias" json:"talkerAlias"`
	Patches     []int         `db:"patches" json:"patches"`
	Source      int           `db:"source" json:"source"`
	Transcript  *string       `db:"transcript" json:"transcript"`
}

type GetIncidentRow

type GetIncidentRow struct {
	Incident  Incident   `db:"incident" json:"incident"`
	StartTime *time.Time `db:"start_time" json:"startTime"`
	EndTime   *time.Time `db:"end_time" json:"endTime"`
	Owner     string     `db:"owner" json:"owner"`
}

type GetIncidentTalkgroupsRow

type GetIncidentTalkgroupsRow struct {
	System    int `db:"system" json:"system"`
	Talkgroup int `db:"talkgroup" json:"talkgroup"`
}

type GetPrunableAudioRefsRow

type GetPrunableAudioRefsRow struct {
	Backend   string `db:"backend" json:"backend"`
	PathFirst string `db:"path_first" json:"pathFirst"`
}

type GetPushSubscriptionsRow

type GetPushSubscriptionsRow struct {
	ID           int64   `db:"id" json:"id"`
	UserID       int     `db:"user_id" json:"userId"`
	Client       *string `db:"client" json:"client"`
	Subscription []byte  `db:"subscription" json:"subscription"`
}

type GetRefJournalParams

type GetRefJournalParams struct {
	Missing *bool      `db:"missing" json:"missing"`
	Since   *time.Time `db:"since" json:"since"`
	Until   *time.Time `db:"until" json:"until"`
	Num     *int32     `db:"num" json:"num"`
}

type GetSharesPParams

type GetSharesPParams struct {
	OwnerID   *int32 `db:"owner_id" json:"ownerId"`
	Direction string `db:"direction" json:"direction"`
	Offset    int32  `db:"offset" json:"offset"`
	PerPage   int32  `db:"per_page" json:"perPage"`
}

type GetSharesPRow

type GetSharesPRow struct {
	Share    Share  `db:"share" json:"share"`
	Username string `db:"username" json:"username"`
}

type GetSweptCallsWithRefRow

type GetSweptCallsWithRefRow struct {
	ID        uuid.UUID `db:"id" json:"id"`
	CallDate  time.Time `db:"call_date" json:"callDate"`
	AudioRef  []byte    `db:"audio_ref" json:"audioRef"`
	AudioBlob []byte    `db:"audio_blob" json:"audioBlob"`
}

type GetTalkgroupIDsByTagsRow

type GetTalkgroupIDsByTagsRow struct {
	SystemID int32 `db:"system_id" json:"systemId"`
	TGID     int32 `db:"tgid" json:"tgid"`
}

type GetTalkgroupRow

type GetTalkgroupRow struct {
	Talkgroup Talkgroup `db:"talkgroup" json:"talkgroup"`
	System    System    `db:"system" json:"system"`
}

func (GetTalkgroupRow) GetLearned

func (g GetTalkgroupRow) GetLearned() bool

func (GetTalkgroupRow) GetSystem

func (g GetTalkgroupRow) GetSystem() System

func (GetTalkgroupRow) GetTalkgroup

func (g GetTalkgroupRow) GetTalkgroup() Talkgroup

type GetTalkgroupSubscriptionsRow

type GetTalkgroupSubscriptionsRow struct {
	SystemID int32 `db:"system_id" json:"systemId"`
	TGID     int32 `db:"tgid" json:"tgid"`
}

type GetTalkgroupsPParams

type GetTalkgroupsPParams struct {
	System      *int32  `db:"system" json:"system"`
	WithIgnored bool    `db:"with_ignored" json:"withIgnored"`
	Filter      *string `db:"filter" json:"filter"`
	OrderBy     string  `db:"order_by" json:"orderBy"`
	Offset      int32   `db:"offset" json:"offset"`
	PerPage     int32   `db:"per_page" json:"perPage"`
}

type GetTalkgroupsPRow

type GetTalkgroupsPRow struct {
	Talkgroup Talkgroup `db:"talkgroup" json:"talkgroup"`
	System    System    `db:"system" json:"system"`
}

func (GetTalkgroupsPRow) GetLearned

func (g GetTalkgroupsPRow) GetLearned() bool

func (GetTalkgroupsPRow) GetSystem

func (g GetTalkgroupsPRow) GetSystem() System

func (GetTalkgroupsPRow) GetTalkgroup

func (g GetTalkgroupsPRow) GetTalkgroup() Talkgroup

type GetTalkgroupsRow

type GetTalkgroupsRow struct {
	Talkgroup Talkgroup `db:"talkgroup" json:"talkgroup"`
	System    System    `db:"system" json:"system"`
}

func (GetTalkgroupsRow) GetLearned

func (d GetTalkgroupsRow) GetLearned() bool

func (GetTalkgroupsRow) GetSystem

func (d GetTalkgroupsRow) GetSystem() System

func (GetTalkgroupsRow) GetTalkgroup

func (d GetTalkgroupsRow) GetTalkgroup() Talkgroup

type GetTalkgroupsWithAllTagsRow

type GetTalkgroupsWithAllTagsRow struct {
	Talkgroup Talkgroup `db:"talkgroup" json:"talkgroup"`
}

type GetTalkgroupsWithAnyTagsRow

type GetTalkgroupsWithAnyTagsRow struct {
	Talkgroup Talkgroup `db:"talkgroup" json:"talkgroup"`
}

type GetTranscriptsContextParams

type GetTranscriptsContextParams struct {
	System         int             `db:"system" json:"system"`
	Talkgroup      int             `db:"talkgroup" json:"talkgroup"`
	Lookback       pgtype.Interval `db:"lookback" json:"lookback"`
	DurationMS     *int32          `db:"duration_ms" json:"durationMs"`
	NumTranscripts int32           `db:"num_transcripts" json:"numTranscripts"`
}

type GetTranscriptsContextRow

type GetTranscriptsContextRow struct {
	CallDate   time.Time `db:"call_date" json:"callDate"`
	Transcript *string   `db:"transcript" json:"transcript"`
}

type GetWebPushSubscriptionsSubscribedRow

type GetWebPushSubscriptionsSubscribedRow struct {
	ID           int64   `db:"id" json:"id"`
	UserID       int     `db:"user_id" json:"userId"`
	Subscription []byte  `db:"subscription" json:"subscription"`
	Client       *string `db:"client" json:"client"`
}

type Incident

type Incident struct {
	ID          uuid.UUID          `db:"id" json:"id,omitempty" yaml:"id,omitempty"`
	Name        string             `db:"name" json:"name,omitempty" yaml:"name,omitempty"`
	OwnerID     int                `db:"owner_id" json:"ownerId,omitempty" yaml:"owner_id,omitempty"`
	Description *string            `db:"description" json:"description,omitempty" yaml:"description,omitempty"`
	CreatedAt   *time.Time         `db:"created_at" json:"createdAt,omitempty" yaml:"created_at,omitempty"`
	StartTime   *time.Time         `db:"start_time" json:"startTime,omitempty" yaml:"start_time,omitempty"`
	EndTime     *time.Time         `db:"end_time" json:"endTime,omitempty" yaml:"end_time,omitempty"`
	Location    []byte             `db:"location" json:"location,omitempty" yaml:"location,omitempty"`
	Metadata    jsontypes.Metadata `db:"metadata" json:"metadata,omitempty" yaml:"metadata,omitempty"`
}

type IncidentsCall

type IncidentsCall struct {
	IncidentID  uuid.UUID   `db:"incident_id" json:"incidentId,omitempty" yaml:"incident_id,omitempty"`
	CallID      uuid.UUID   `db:"call_id" json:"callId,omitempty" yaml:"call_id,omitempty"`
	CallsTblID  pgtype.UUID `db:"calls_tbl_id" json:"callsTblId,omitempty" yaml:"calls_tbl_id,omitempty"`
	SweptCallID pgtype.UUID `db:"swept_call_id" json:"sweptCallId,omitempty" yaml:"swept_call_id,omitempty"`
	CallDate    *time.Time  `db:"call_date" json:"callDate,omitempty" yaml:"call_date,omitempty"`
	Notes       []byte      `db:"notes" json:"notes,omitempty" yaml:"notes,omitempty"`
}

func (*IncidentsCall) UnmarshalYAML

func (c *IncidentsCall) UnmarshalYAML(n *yaml.Node) error

type ListCallsCountParams

type ListCallsCountParams struct {
	Start            *time.Time     `db:"start" json:"start"`
	End              *time.Time     `db:"end" json:"end"`
	TagsAny          []string       `db:"tags_any" json:"tagsAny"`
	TagsNot          []string       `db:"tags_not" json:"tagsNot"`
	TGFilter         *string        `db:"tg_filter" json:"tgFilter"`
	SourceFilter     *string        `db:"source_filter" json:"sourceFilter"`
	LongerThan       pgtype.Numeric `db:"longer_than" json:"longerThan"`
	UnknownTG        bool           `db:"unknown_tg" json:"unknownTg"`
	TranscriptSearch *string        `db:"transcript_search" json:"transcriptSearch"`
	Dangling         bool           `db:"dangling" json:"dangling"`
}

type ListCallsPParams

type ListCallsPParams struct {
	TranscriptSearch *string        `db:"transcript_search" json:"transcriptSearch"`
	Start            *time.Time     `db:"start" json:"start"`
	End              *time.Time     `db:"end" json:"end"`
	TagsAny          []string       `db:"tags_any" json:"tagsAny"`
	TagsNot          []string       `db:"tags_not" json:"tagsNot"`
	TGFilter         *string        `db:"tg_filter" json:"tgFilter"`
	SourceFilter     *string        `db:"source_filter" json:"sourceFilter"`
	LongerThan       pgtype.Numeric `db:"longer_than" json:"longerThan"`
	UnknownTG        bool           `db:"unknown_tg" json:"unknownTg"`
	Dangling         bool           `db:"dangling" json:"dangling"`
	Direction        string         `db:"direction" json:"direction"`
	Offset           int32          `db:"offset" json:"offset"`
	PerPage          int32          `db:"per_page" json:"perPage"`
}

type ListCallsPRow

type ListCallsPRow struct {
	ID            uuid.UUID   `db:"id" json:"id"`
	CallDate      time.Time   `db:"call_date" json:"callDate"`
	Duration      *int32      `db:"duration" json:"duration"`
	SystemID      int         `db:"system_id" json:"systemId"`
	TGID          int         `db:"tgid" json:"tgid"`
	TalkerAlias   *string     `db:"talker_alias" json:"talkerAlias,omitempty"`
	Source        int         `db:"source" json:"source,omitzero"`
	Transcript    interface{} `db:"transcript" json:"transcript,omitempty"`
	Incidents     int64       `db:"incidents" json:"incidents,omitempty,omitzero"`
	HasTranscript bool        `db:"has_transcript" json:"hasTranscript,omitzero"`
	MissingAudio  bool        `db:"missing_audio" json:"missingAudio,omitzero"`
}

type ListIncidentsPParams

type ListIncidentsPParams struct {
	Start   *time.Time `db:"start" json:"start"`
	End     *time.Time `db:"end" json:"end"`
	Filter  *string    `db:"filter" json:"filter"`
	OrderBy string     `db:"order_by" json:"orderBy"`
	Offset  int32      `db:"offset" json:"offset"`
	PerPage int32      `db:"per_page" json:"perPage"`
}

type ListIncidentsPRow

type ListIncidentsPRow struct {
	ID          uuid.UUID          `db:"id" json:"id"`
	Name        string             `db:"name" json:"name"`
	OwnerID     int                `db:"owner_id" json:"ownerId"`
	Description *string            `db:"description" json:"description"`
	CreatedAt   *time.Time         `db:"created_at" json:"createdAt"`
	StartTime   *time.Time         `db:"start_time" json:"startTime"`
	EndTime     *time.Time         `db:"end_time" json:"endTime"`
	Location    []byte             `db:"location" json:"location"`
	Metadata    jsontypes.Metadata `db:"metadata" json:"metadata"`
	Owner       string             `db:"owner" json:"owner"`
	CallsCount  int64              `db:"calls_count" json:"callsCount"`
}

type NullAudioMIME

type NullAudioMIME struct {
	AudioMIME AudioMIME `json:"audioMime,omitempty" yaml:"audio_mime,omitempty"`
	Valid     bool      `json:"valid,omitempty" yaml:"valid,omitempty"` // Valid is true if AudioMIME is not NULL
}

func (*NullAudioMIME) Scan

func (ns *NullAudioMIME) Scan(value interface{}) error

Scan implements the Scanner interface.

func (*NullAudioMIME) UnmarshalJSON

func (ns *NullAudioMIME) UnmarshalJSON(b []byte) error

func (*NullAudioMIME) UnmarshalText

func (ns *NullAudioMIME) UnmarshalText(b []byte) error

func (NullAudioMIME) Value

func (ns NullAudioMIME) Value() (driver.Value, error)

Value implements the driver Valuer interface.

type PartitionResult

type PartitionResult struct {
	ParentTable string
	Schema      string
	Name        string
	LowerBound  string
	UpperBound  string
}

func (PartitionResult) ParseBounds

func (partition PartitionResult) ParseBounds() (lowerBound time.Time, upperBound time.Time, err error)

type Postgres

type Postgres struct {
	*pgxpool.Pool
	*Queries
}

func NewClient

func NewClient(ctx context.Context, conf config.DB) (*Postgres, error)

NewClient creates a new DB using the provided config.

func (*Postgres) DB

func (db *Postgres) DB() *Postgres

func (*Postgres) InTx

func (db *Postgres) InTx(ctx context.Context, f func(Store) error) error

func (*Postgres) PoolTx

func (db *Postgres) PoolTx(ctx context.Context, opts pgx.TxOptions) (dbtx *Postgres, tx pgx.Tx, err error)

type Querier

type Querier interface {
	AddAlert(ctx context.Context, arg AddAlertParams) error
	AddCall(ctx context.Context, arg AddCallParams) error
	AddLearnedTalkgroup(ctx context.Context, arg AddLearnedTalkgroupParams) (Talkgroup, error)
	AddRefJournal(ctx context.Context, arg AddRefJournalParams) (int64, error)
	AddToIncident(ctx context.Context, incidentID uuid.UUID, callIds []uuid.UUID, notes [][]byte) error
	CallInIncident(ctx context.Context, incidentID uuid.UUID, callID uuid.UUID) (bool, error)
	CleanupSweptCalls(ctx context.Context, rangeStart time.Time, rangeEnd time.Time) (int64, error)
	CountRefJournal(ctx context.Context, missing *bool, since *time.Time, until *time.Time) (int64, error)
	CreateAPIKey(ctx context.Context, arg CreateAPIKeyParams) error
	CreateIncident(ctx context.Context, arg CreateIncidentParams) (Incident, error)
	CreateShare(ctx context.Context, arg CreateShareParams) error
	CreateSystem(ctx context.Context, iD int, name string, learned bool) error
	CreateUser(ctx context.Context, arg CreateUserParams) (User, error)
	CreateWebPushSubscription(ctx context.Context, arg CreateWebPushSubscriptionParams) error
	DeleteAPIKey(ctx context.Context, apiKey *string) error
	DeleteCall(ctx context.Context, id uuid.UUID) error
	DeleteExpiredPushSubscriptions(ctx context.Context) (int64, error)
	DeleteIncident(ctx context.Context, id uuid.UUID) error
	DeletePushSubscriptionByID(ctx context.Context, id int64) error
	DeletePushSubscriptionBySub(ctx context.Context, subscription []byte) error
	DeleteSetting(ctx context.Context, name string) error
	DeleteShare(ctx context.Context, id string) error
	DeleteSystem(ctx context.Context, id int) error
	DeleteTalkgroup(ctx context.Context, systemID int32, tGID int32) error
	DeleteUser(ctx context.Context, username string) error
	DetailedCountRefJournal(ctx context.Context) ([]DetailedCountRefJournalRow, error)
	DisableUser(ctx context.Context, username string) error
	DropRefJournal(ctx context.Context, id int64) error
	GetAPIKey(ctx context.Context, key *string, jwtID pgtype.UUID, kind int) (GetAPIKeyRow, error)
	GetAlertByURLTag(ctx context.Context, urlTag *string) (Alert, error)
	GetAllTalkgroupTags(ctx context.Context) ([]string, error)
	GetAppPrefs(ctx context.Context, appName string, uid int) ([]byte, error)
	GetCall(ctx context.Context, id uuid.UUID) (GetCallRow, error)
	// For now, this must be kept in sync with pkg/database/calls.go GetCallAudioCount and GetCallAudioCb Scan
	GetCallAudio(ctx context.Context, arg GetCallAudioParams) ([]GetCallAudioRow, error)
	GetCallAudioByID(ctx context.Context, id uuid.UUID) (GetCallAudioByIDRow, error)
	GetCallStatsByInterval(ctx context.Context, truncField string, start *time.Time, end *time.Time) ([]GetCallStatsByIntervalRow, error)
	GetCallStatsByTalkgroup(ctx context.Context, truncField string, start *time.Time, end *time.Time) ([]GetCallStatsByTalkgroupRow, error)
	GetCallSubmitter(ctx context.Context, id uuid.UUID) (*int32, error)
	GetCalls(ctx context.Context, ids []uuid.UUID) ([]GetCallsRow, error)
	GetDatabaseSize(ctx context.Context) (string, error)
	GetIncident(ctx context.Context, id uuid.UUID) (GetIncidentRow, error)
	GetIncidentCallCount(ctx context.Context, incidentID uuid.UUID) (int64, error)
	GetIncidentCalls(ctx context.Context, iD uuid.UUID, offset int32, perPage *int32) ([]GetIncidentCallsRow, error)
	GetIncidentOwner(ctx context.Context, id uuid.UUID) (int, error)
	GetIncidentTalkgroups(ctx context.Context, incidentID uuid.UUID) ([]GetIncidentTalkgroupsRow, error)
	GetPrunableAudioRefs(ctx context.Context, partitionStart time.Time, partitionEnd time.Time) ([]GetPrunableAudioRefsRow, error)
	GetPushSubscriptions(ctx context.Context) ([]GetPushSubscriptionsRow, error)
	GetRefJournal(ctx context.Context, arg GetRefJournalParams) ([]AudioRefJournal, error)
	GetSetting(ctx context.Context, name string) ([]byte, error)
	GetShare(ctx context.Context, id string) (Share, error)
	GetSharesP(ctx context.Context, arg GetSharesPParams) ([]GetSharesPRow, error)
	GetSharesPCount(ctx context.Context, ownerID *int32) (int64, error)
	GetSweptCallsWithRef(ctx context.Context) ([]GetSweptCallsWithRefRow, error)
	GetSystemName(ctx context.Context, systemID int) (string, error)
	GetSystemSubscriptions(ctx context.Context, userID int) ([]int32, error)
	GetTalkgroup(ctx context.Context, systemID int32, tGID int32) (GetTalkgroupRow, error)
	GetTalkgroupIDsByTags(ctx context.Context, allTags []string, anyTags []string, notAnyTags []string) ([]GetTalkgroupIDsByTagsRow, error)
	GetTalkgroupSubscriptions(ctx context.Context, userID int) ([]GetTalkgroupSubscriptionsRow, error)
	GetTalkgroupTags(ctx context.Context, systemID int32, tGID int32) ([]string, error)
	GetTalkgroups(ctx context.Context, system *int32, withIgnored bool, filter *string) ([]GetTalkgroupsRow, error)
	GetTalkgroupsCount(ctx context.Context, system *int32, withIgnored bool, filter *string) (int64, error)
	GetTalkgroupsP(ctx context.Context, arg GetTalkgroupsPParams) ([]GetTalkgroupsPRow, error)
	GetTalkgroupsWithAllTags(ctx context.Context, tags []string) ([]GetTalkgroupsWithAllTagsRow, error)
	GetTalkgroupsWithAnyTags(ctx context.Context, tags []string) ([]GetTalkgroupsWithAnyTagsRow, error)
	GetTranscriptsContext(ctx context.Context, arg GetTranscriptsContextParams) ([]GetTranscriptsContextRow, error)
	GetUserByID(ctx context.Context, id int) (User, error)
	GetUserByUsername(ctx context.Context, username string) (User, error)
	GetUsers(ctx context.Context) ([]User, error)
	GetWebPushSubscriptionsSubscribed(ctx context.Context, systemID int32, tGID int32) ([]GetWebPushSubscriptionsSubscribedRow, error)
	IncrementRefJournal(ctx context.Context, id int64) error
	ListCallsCount(ctx context.Context, arg ListCallsCountParams) (int64, error)
	ListCallsP(ctx context.Context, arg ListCallsPParams) ([]ListCallsPRow, error)
	ListIncidentsCount(ctx context.Context, start *time.Time, end *time.Time, filter *string) (int64, error)
	ListIncidentsP(ctx context.Context, arg ListIncidentsPParams) ([]ListIncidentsPRow, error)
	PruneAlerts(ctx context.Context, before time.Time) (int64, error)
	PruneShares(ctx context.Context) error
	RecordUserLogin(ctx context.Context, username string, lastLoginAt *time.Time, lastLoginFrom *netip.Addr) error
	RemoveFromIncident(ctx context.Context, iD uuid.UUID, callIds []uuid.UUID) error
	RestoreTalkgroupVersion(ctx context.Context, versionIds int) (Talkgroup, error)
	SetAppPrefs(ctx context.Context, appName string, prefs []byte, uid int) error
	SetCallAudio(ctx context.Context, iD uuid.UUID, audioRef []byte, audioBlob []byte) error
	SetCallTranscript(ctx context.Context, iD uuid.UUID, transcript *string) (SetCallTranscriptRow, error)
	SetRefJournalPrune(ctx context.Context, iD int64, pruneAfter *time.Time) error
	SetSetting(ctx context.Context, name string, updatedBy *int32, value []byte) error
	SetSweptAudioAndClearRef(ctx context.Context, audioBlob []byte, iD uuid.UUID) error
	SetSweptCallAudio(ctx context.Context, iD uuid.UUID, audioRef []byte, audioBlob []byte) error
	SetTalkgroupTags(ctx context.Context, tags []string, systemID int32, tGID int32) error
	StoreDeletedTGVersion(ctx context.Context, systemID *int32, tGID *int32, submitter *int32) error
	StoreTGVersion(ctx context.Context, arg []StoreTGVersionParams) *StoreTGVersionBatchResults
	SubscribeSystems(ctx context.Context, userID int, systemIds []int32) error
	SubscribeTalkgroups(ctx context.Context, userID int, systemIds []int32, tgids []int32) error
	// This is used to sweep calls that are part of an incident prior to pruning a partition.
	SweepCalls(ctx context.Context, rangeStart time.Time, rangeEnd time.Time) (int64, error)
	UnsubscribeAllSystems(ctx context.Context, userID int) (int64, error)
	UnsubscribeAllTalkgroups(ctx context.Context, userID int) (int64, error)
	UnsubscribeSystems(ctx context.Context, userID int, systemIds []int32) (int64, error)
	UnsubscribeTGsInSystems(ctx context.Context, userID int, systemIds []int32) (int64, error)
	UnsubscribeTalkgroups(ctx context.Context, userID int, tgs []TGID) (int64, error)
	UpdateCallIncidentNotes(ctx context.Context, notes []byte, incidentID uuid.UUID, callID uuid.UUID) error
	UpdateIncident(ctx context.Context, arg UpdateIncidentParams) (Incident, error)
	UpdatePassword(ctx context.Context, username string, password string) error
	UpdatePushSubscription(ctx context.Context, newSubscription []byte, userID int, oldSubscription []byte) (int64, error)
	UpdateTalkgroup(ctx context.Context, arg UpdateTalkgroupParams) (Talkgroup, error)
	UpdateUser(ctx context.Context, arg UpdateUserParams) (User, error)
	UpsertTalkgroup(ctx context.Context, arg []UpsertTalkgroupParams) *UpsertTalkgroupBatchResults
}

type Queries

type Queries struct {
	// contains filtered or unexported fields
}

func New

func New(db DBTX) *Queries

func (*Queries) AddAlert

func (q *Queries) AddAlert(ctx context.Context, arg AddAlertParams) error

func (*Queries) AddCall

func (q *Queries) AddCall(ctx context.Context, arg AddCallParams) error

func (*Queries) AddLearnedTalkgroup

func (q *Queries) AddLearnedTalkgroup(ctx context.Context, arg AddLearnedTalkgroupParams) (Talkgroup, error)

func (*Queries) AddRefJournal

func (q *Queries) AddRefJournal(ctx context.Context, arg AddRefJournalParams) (int64, error)

func (*Queries) AddToIncident

func (q *Queries) AddToIncident(ctx context.Context, incidentID uuid.UUID, callIds []uuid.UUID, notes [][]byte) error

func (*Queries) BulkSetTalkgroupTags

func (q *Queries) BulkSetTalkgroupTags(ctx context.Context, tgs TGTuplesU, tags []string) error

func (*Queries) CallInIncident

func (q *Queries) CallInIncident(ctx context.Context, incidentID uuid.UUID, callID uuid.UUID) (bool, error)

func (*Queries) CleanupSweptCalls

func (q *Queries) CleanupSweptCalls(ctx context.Context, rangeStart time.Time, rangeEnd time.Time) (int64, error)

func (*Queries) CopyIntoFsckTempTable

func (q *Queries) CopyIntoFsckTempTable(ctx context.Context, tableName string, ids iter.Seq[uuid.UUID], progressChan chan<- int64) (int64, error)

func (*Queries) CountRefJournal

func (q *Queries) CountRefJournal(ctx context.Context, missing *bool, since *time.Time, until *time.Time) (int64, error)

func (*Queries) CreateAPIKey

func (q *Queries) CreateAPIKey(ctx context.Context, arg CreateAPIKeyParams) error

func (*Queries) CreateFsckTempTable

func (q *Queries) CreateFsckTempTable(ctx context.Context) (tableName string, err error)

func (*Queries) CreateIncident

func (q *Queries) CreateIncident(ctx context.Context, arg CreateIncidentParams) (Incident, error)

func (*Queries) CreatePartition

func (q *Queries) CreatePartition(ctx context.Context, parentTable, partitionName string, start, end time.Time) error

func (*Queries) CreateShare

func (q *Queries) CreateShare(ctx context.Context, arg CreateShareParams) error

func (*Queries) CreateSystem

func (q *Queries) CreateSystem(ctx context.Context, iD int, name string, learned bool) error

func (*Queries) CreateUser

func (q *Queries) CreateUser(ctx context.Context, arg CreateUserParams) (User, error)

func (*Queries) CreateWebPushSubscription

func (q *Queries) CreateWebPushSubscription(ctx context.Context, arg CreateWebPushSubscriptionParams) error

func (*Queries) DBTX

func (q *Queries) DBTX() DBTX

func (*Queries) DeleteAPIKey

func (q *Queries) DeleteAPIKey(ctx context.Context, apiKey *string) error

func (*Queries) DeleteCall

func (q *Queries) DeleteCall(ctx context.Context, id uuid.UUID) error

func (*Queries) DeleteExpiredPushSubscriptions

func (q *Queries) DeleteExpiredPushSubscriptions(ctx context.Context) (int64, error)

func (*Queries) DeleteIncident

func (q *Queries) DeleteIncident(ctx context.Context, id uuid.UUID) error

func (*Queries) DeletePushSubscriptionByID

func (q *Queries) DeletePushSubscriptionByID(ctx context.Context, id int64) error

func (*Queries) DeletePushSubscriptionBySub

func (q *Queries) DeletePushSubscriptionBySub(ctx context.Context, subscription []byte) error

func (*Queries) DeleteSetting

func (q *Queries) DeleteSetting(ctx context.Context, name string) error

func (*Queries) DeleteShare

func (q *Queries) DeleteShare(ctx context.Context, id string) error

func (*Queries) DeleteSystem

func (q *Queries) DeleteSystem(ctx context.Context, id int) error

func (*Queries) DeleteTalkgroup

func (q *Queries) DeleteTalkgroup(ctx context.Context, systemID int32, tGID int32) error

func (*Queries) DeleteUser

func (q *Queries) DeleteUser(ctx context.Context, username string) error

func (*Queries) DetachPartition

func (q *Queries) DetachPartition(ctx context.Context, parentTable, partitionName string) error

func (*Queries) DetailedCountRefJournal

func (q *Queries) DetailedCountRefJournal(ctx context.Context) ([]DetailedCountRefJournalRow, error)

func (*Queries) DisableUser

func (q *Queries) DisableUser(ctx context.Context, username string) error

func (*Queries) DropPartition

func (q *Queries) DropPartition(ctx context.Context, partitionName string) error

func (*Queries) DropRefJournal

func (q *Queries) DropRefJournal(ctx context.Context, id int64) error

func (*Queries) DropTable

func (q *Queries) DropTable(ctx context.Context, tableName string) error

func (*Queries) FsckRefs

func (q *Queries) FsckRefs(ctx context.Context, tableName, backend string) (callsDangling int64, err error)

func (*Queries) GetAPIKey

func (q *Queries) GetAPIKey(ctx context.Context, key *string, jwtID pgtype.UUID, kind int) (GetAPIKeyRow, error)

func (*Queries) GetAlertByURLTag

func (q *Queries) GetAlertByURLTag(ctx context.Context, urlTag *string) (Alert, error)

func (*Queries) GetAllTalkgroupTags

func (q *Queries) GetAllTalkgroupTags(ctx context.Context) ([]string, error)

func (*Queries) GetAppPrefs

func (q *Queries) GetAppPrefs(ctx context.Context, appName string, uid int) ([]byte, error)

func (*Queries) GetAudioRefJournalCb

func (q *Queries) GetAudioRefJournalCb(ctx context.Context, arg GetRefJournalParams, cb func(AudioRefJournal)) error

func (*Queries) GetCall

func (q *Queries) GetCall(ctx context.Context, id uuid.UUID) (GetCallRow, error)

func (*Queries) GetCallAudio

func (q *Queries) GetCallAudio(ctx context.Context, arg GetCallAudioParams) ([]GetCallAudioRow, error)

For now, this must be kept in sync with pkg/database/calls.go GetCallAudioCount and GetCallAudioCb Scan

func (*Queries) GetCallAudioByID

func (q *Queries) GetCallAudioByID(ctx context.Context, id uuid.UUID) (GetCallAudioByIDRow, error)

func (*Queries) GetCallAudioCb

func (q *Queries) GetCallAudioCb(ctx context.Context, arg GetCallAudioParams, cb func(*GetCallAudioRow) error) error

func (*Queries) GetCallAudioCount

func (q *Queries) GetCallAudioCount(ctx context.Context, arg GetCallAudioParams) (int64, error)

func (*Queries) GetCallStatsByInterval

func (q *Queries) GetCallStatsByInterval(ctx context.Context, truncField string, start *time.Time, end *time.Time) ([]GetCallStatsByIntervalRow, error)

func (*Queries) GetCallStatsByTalkgroup

func (q *Queries) GetCallStatsByTalkgroup(ctx context.Context, truncField string, start *time.Time, end *time.Time) ([]GetCallStatsByTalkgroupRow, error)

func (*Queries) GetCallSubmitter

func (q *Queries) GetCallSubmitter(ctx context.Context, id uuid.UUID) (*int32, error)

func (*Queries) GetCalls

func (q *Queries) GetCalls(ctx context.Context, ids []uuid.UUID) ([]GetCallsRow, error)

func (*Queries) GetDatabaseSize

func (q *Queries) GetDatabaseSize(ctx context.Context) (string, error)

func (*Queries) GetIncident

func (q *Queries) GetIncident(ctx context.Context, id uuid.UUID) (GetIncidentRow, error)

func (*Queries) GetIncidentCallCount

func (q *Queries) GetIncidentCallCount(ctx context.Context, incidentID uuid.UUID) (int64, error)

func (*Queries) GetIncidentCalls

func (q *Queries) GetIncidentCalls(ctx context.Context, iD uuid.UUID, offset int32, perPage *int32) ([]GetIncidentCallsRow, error)

func (*Queries) GetIncidentOwner

func (q *Queries) GetIncidentOwner(ctx context.Context, id uuid.UUID) (int, error)

func (*Queries) GetIncidentTalkgroups

func (q *Queries) GetIncidentTalkgroups(ctx context.Context, incidentID uuid.UUID) ([]GetIncidentTalkgroupsRow, error)

func (*Queries) GetPrunableAudioRefs

func (q *Queries) GetPrunableAudioRefs(ctx context.Context, partitionStart time.Time, partitionEnd time.Time) ([]GetPrunableAudioRefsRow, error)

func (*Queries) GetPushSubscriptions

func (q *Queries) GetPushSubscriptions(ctx context.Context) ([]GetPushSubscriptionsRow, error)

func (*Queries) GetRefJournal

func (q *Queries) GetRefJournal(ctx context.Context, arg GetRefJournalParams) ([]AudioRefJournal, error)

func (*Queries) GetSetting

func (q *Queries) GetSetting(ctx context.Context, name string) ([]byte, error)

func (*Queries) GetShare

func (q *Queries) GetShare(ctx context.Context, id string) (Share, error)

func (*Queries) GetSharesP

func (q *Queries) GetSharesP(ctx context.Context, arg GetSharesPParams) ([]GetSharesPRow, error)

func (*Queries) GetSharesPCount

func (q *Queries) GetSharesPCount(ctx context.Context, ownerID *int32) (int64, error)

func (*Queries) GetSweptCallsWithRef

func (q *Queries) GetSweptCallsWithRef(ctx context.Context) ([]GetSweptCallsWithRefRow, error)

func (*Queries) GetSystemName

func (q *Queries) GetSystemName(ctx context.Context, systemID int) (string, error)

func (*Queries) GetSystemSubscriptions

func (q *Queries) GetSystemSubscriptions(ctx context.Context, userID int) ([]int32, error)

func (*Queries) GetTablePartitions

func (q *Queries) GetTablePartitions(ctx context.Context, schemaName, tableName string) (partitions []PartitionResult, err error)

func (*Queries) GetTalkgroup

func (q *Queries) GetTalkgroup(ctx context.Context, systemID int32, tGID int32) (GetTalkgroupRow, error)

func (*Queries) GetTalkgroupIDsByTags

func (q *Queries) GetTalkgroupIDsByTags(ctx context.Context, allTags []string, anyTags []string, notAnyTags []string) ([]GetTalkgroupIDsByTagsRow, error)

func (*Queries) GetTalkgroupSubscriptions

func (q *Queries) GetTalkgroupSubscriptions(ctx context.Context, userID int) ([]GetTalkgroupSubscriptionsRow, error)

func (*Queries) GetTalkgroupTags

func (q *Queries) GetTalkgroupTags(ctx context.Context, systemID int32, tGID int32) ([]string, error)

func (*Queries) GetTalkgroups

func (q *Queries) GetTalkgroups(ctx context.Context, system *int32, withIgnored bool, filter *string) ([]GetTalkgroupsRow, error)

func (*Queries) GetTalkgroupsBySysTGID

func (q *Queries) GetTalkgroupsBySysTGID(ctx context.Context, ids TGTuplesU) ([]GetTalkgroupsRow, error)

func (*Queries) GetTalkgroupsCount

func (q *Queries) GetTalkgroupsCount(ctx context.Context, system *int32, withIgnored bool, filter *string) (int64, error)

func (*Queries) GetTalkgroupsP

func (q *Queries) GetTalkgroupsP(ctx context.Context, arg GetTalkgroupsPParams) ([]GetTalkgroupsPRow, error)

func (*Queries) GetTalkgroupsWithAllTags

func (q *Queries) GetTalkgroupsWithAllTags(ctx context.Context, tags []string) ([]GetTalkgroupsWithAllTagsRow, error)

func (*Queries) GetTalkgroupsWithAnyTags

func (q *Queries) GetTalkgroupsWithAnyTags(ctx context.Context, tags []string) ([]GetTalkgroupsWithAnyTagsRow, error)

func (*Queries) GetTranscriptsContext

func (q *Queries) GetTranscriptsContext(ctx context.Context, arg GetTranscriptsContextParams) ([]GetTranscriptsContextRow, error)

func (*Queries) GetUserByID

func (q *Queries) GetUserByID(ctx context.Context, id int) (User, error)

func (*Queries) GetUserByUsername

func (q *Queries) GetUserByUsername(ctx context.Context, username string) (User, error)

func (*Queries) GetUsers

func (q *Queries) GetUsers(ctx context.Context) ([]User, error)

func (*Queries) GetWebPushSubscriptionsSubscribed

func (q *Queries) GetWebPushSubscriptionsSubscribed(ctx context.Context, systemID int32, tGID int32) ([]GetWebPushSubscriptionsSubscribedRow, error)

func (*Queries) IncrementRefJournal

func (q *Queries) IncrementRefJournal(ctx context.Context, id int64) error

func (*Queries) ListCallsCount

func (q *Queries) ListCallsCount(ctx context.Context, arg ListCallsCountParams) (int64, error)

func (*Queries) ListCallsP

func (q *Queries) ListCallsP(ctx context.Context, arg ListCallsPParams) ([]ListCallsPRow, error)

func (*Queries) ListIncidentsCount

func (q *Queries) ListIncidentsCount(ctx context.Context, start *time.Time, end *time.Time, filter *string) (int64, error)

func (*Queries) ListIncidentsP

func (q *Queries) ListIncidentsP(ctx context.Context, arg ListIncidentsPParams) ([]ListIncidentsPRow, error)

func (*Queries) PruneAlerts

func (q *Queries) PruneAlerts(ctx context.Context, before time.Time) (int64, error)

func (*Queries) PruneShares

func (q *Queries) PruneShares(ctx context.Context) error

func (*Queries) RecordUserLogin

func (q *Queries) RecordUserLogin(ctx context.Context, username string, lastLoginAt *time.Time, lastLoginFrom *netip.Addr) error

func (*Queries) RemoveFromIncident

func (q *Queries) RemoveFromIncident(ctx context.Context, iD uuid.UUID, callIds []uuid.UUID) error

func (*Queries) RestoreTalkgroupVersion

func (q *Queries) RestoreTalkgroupVersion(ctx context.Context, versionIds int) (Talkgroup, error)

func (*Queries) SetAppPrefs

func (q *Queries) SetAppPrefs(ctx context.Context, appName string, prefs []byte, uid int) error

func (*Queries) SetCallAudio

func (q *Queries) SetCallAudio(ctx context.Context, iD uuid.UUID, audioRef []byte, audioBlob []byte) error

func (*Queries) SetCallTranscript

func (q *Queries) SetCallTranscript(ctx context.Context, iD uuid.UUID, transcript *string) (SetCallTranscriptRow, error)

func (*Queries) SetRefJournalPrune

func (q *Queries) SetRefJournalPrune(ctx context.Context, iD int64, pruneAfter *time.Time) error

func (*Queries) SetSetting

func (q *Queries) SetSetting(ctx context.Context, name string, updatedBy *int32, value []byte) error

func (*Queries) SetSweptAudioAndClearRef

func (q *Queries) SetSweptAudioAndClearRef(ctx context.Context, audioBlob []byte, iD uuid.UUID) error

func (*Queries) SetSweptCallAudio

func (q *Queries) SetSweptCallAudio(ctx context.Context, iD uuid.UUID, audioRef []byte, audioBlob []byte) error

func (*Queries) SetTalkgroupTags

func (q *Queries) SetTalkgroupTags(ctx context.Context, tags []string, systemID int32, tGID int32) error

func (*Queries) StoreDeletedTGVersion

func (q *Queries) StoreDeletedTGVersion(ctx context.Context, systemID *int32, tGID *int32, submitter *int32) error

func (*Queries) StoreTGVersion

func (*Queries) SubscribeSystems

func (q *Queries) SubscribeSystems(ctx context.Context, userID int, systemIds []int32) error

func (*Queries) SubscribeTalkgroups

func (q *Queries) SubscribeTalkgroups(ctx context.Context, userID int, systemIds []int32, tgids []int32) error

func (*Queries) SweepCalls

func (q *Queries) SweepCalls(ctx context.Context, rangeStart time.Time, rangeEnd time.Time) (int64, error)

This is used to sweep calls that are part of an incident prior to pruning a partition.

func (*Queries) UnsubscribeAllSystems

func (q *Queries) UnsubscribeAllSystems(ctx context.Context, userID int) (int64, error)

func (*Queries) UnsubscribeAllTalkgroups

func (q *Queries) UnsubscribeAllTalkgroups(ctx context.Context, userID int) (int64, error)

func (*Queries) UnsubscribeSystems

func (q *Queries) UnsubscribeSystems(ctx context.Context, userID int, systemIds []int32) (int64, error)

func (*Queries) UnsubscribeTGsInSystems

func (q *Queries) UnsubscribeTGsInSystems(ctx context.Context, userID int, systemIds []int32) (int64, error)

func (*Queries) UnsubscribeTalkgroups

func (q *Queries) UnsubscribeTalkgroups(ctx context.Context, userID int, tgs []TGID) (int64, error)

func (*Queries) UpdateCallIncidentNotes

func (q *Queries) UpdateCallIncidentNotes(ctx context.Context, notes []byte, incidentID uuid.UUID, callID uuid.UUID) error

func (*Queries) UpdateIncident

func (q *Queries) UpdateIncident(ctx context.Context, arg UpdateIncidentParams) (Incident, error)

func (*Queries) UpdatePassword

func (q *Queries) UpdatePassword(ctx context.Context, username string, password string) error

func (*Queries) UpdatePushSubscription

func (q *Queries) UpdatePushSubscription(ctx context.Context, newSubscription []byte, userID int, oldSubscription []byte) (int64, error)

func (*Queries) UpdateTalkgroup

func (q *Queries) UpdateTalkgroup(ctx context.Context, arg UpdateTalkgroupParams) (Talkgroup, error)

func (*Queries) UpdateUser

func (q *Queries) UpdateUser(ctx context.Context, arg UpdateUserParams) (User, error)

func (*Queries) UpsertTalkgroup

func (*Queries) WithTx

func (q *Queries) WithTx(tx pgx.Tx) *Queries

type SetCallTranscriptRow

type SetCallTranscriptRow struct {
	CallDate  time.Time `db:"call_date" json:"callDate"`
	System    int       `db:"system" json:"system"`
	Talkgroup int       `db:"talkgroup" json:"talkgroup"`
	Patches   []int     `db:"patches" json:"patches"`
}

type Setting

type Setting struct {
	Name      string `db:"name" json:"name,omitempty" yaml:"name,omitempty"`
	UpdatedBy *int32 `db:"updated_by" json:"updatedBy,omitempty" yaml:"updated_by,omitempty"`
	Value     []byte `db:"value" json:"value,omitempty" yaml:"value,omitempty"`
}

type Share

type Share struct {
	ID         string     `db:"id" json:"id,omitempty" yaml:"id,omitempty"`
	EntityType string     `db:"entity_type" json:"entityType,omitempty" yaml:"entity_type,omitempty"`
	EntityID   uuid.UUID  `db:"entity_id" json:"entityId,omitempty" yaml:"entity_id,omitempty"`
	EntityDate *time.Time `db:"entity_date" json:"entityDate,omitempty" yaml:"entity_date,omitempty"`
	OwnerID    int        `db:"owner_id" json:"ownerId,omitempty" yaml:"owner_id,omitempty"`
	Expiration *time.Time `db:"expiration" json:"expiration,omitempty" yaml:"expiration,omitempty"`
}

type Store

type Store interface {
	Querier

	DB() *Postgres
	DBTX() DBTX
	InTx(context.Context, func(Store) error) error
	PoolTx(ctx context.Context, opts pgx.TxOptions) (dbtx *Postgres, tx pgx.Tx, err error)

	// DropTable drops the specified table.
	DropTable(ctx context.Context, tableName string) error
	// contains filtered or unexported methods
}

func FromCtx

func FromCtx(ctx context.Context) Store

FromCtx returns the database handle from the provided Context.

type StoreTGVersionBatchResults

type StoreTGVersionBatchResults struct {
	// contains filtered or unexported fields
}

func (*StoreTGVersionBatchResults) Close

func (b *StoreTGVersionBatchResults) Close() error

func (*StoreTGVersionBatchResults) Exec

func (b *StoreTGVersionBatchResults) Exec(f func(int, error))

type StoreTGVersionParams

type StoreTGVersionParams struct {
	Submitter *int32 `db:"submitter" json:"submitter"`
	SystemID  int32  `db:"system_id" json:"systemId"`
	TGID      int32  `db:"tgid" json:"tgid"`
}

type SweptCall

type SweptCall struct {
	ID          uuid.UUID     `db:"id" json:"id,omitempty" yaml:"id,omitempty"`
	Submitter   *int32        `db:"submitter" json:"submitter,omitempty" yaml:"submitter,omitempty"`
	System      int           `db:"system" json:"system,omitempty" yaml:"system,omitempty"`
	Talkgroup   int           `db:"talkgroup" json:"talkgroup,omitempty" yaml:"talkgroup,omitempty"`
	CallDate    time.Time     `db:"call_date" json:"callDate,omitempty" yaml:"call_date,omitempty"`
	AudioName   *string       `db:"audio_name" json:"audioName,omitempty" yaml:"audio_name,omitempty"`
	AudioBlob   []byte        `db:"audio_blob" json:"audioBlob,omitempty" yaml:"audio_blob,omitempty"`
	Duration    *int32        `db:"duration" json:"duration,omitempty" yaml:"duration,omitempty"`
	AudioType   NullAudioMIME `db:"audio_type" json:"audioType,omitempty" yaml:"audio_type,omitempty"`
	AudioRef    []byte        `db:"audio_ref" json:"audioRef,omitempty" yaml:"audio_ref,omitempty"`
	Frequency   int           `db:"frequency" json:"frequency,omitempty" yaml:"frequency,omitempty"`
	Frequencies []int         `db:"frequencies" json:"frequencies,omitempty" yaml:"frequencies,omitempty"`
	Patches     []int         `db:"patches" json:"patches,omitempty" yaml:"patches,omitempty"`
	TalkerAlias *string       `db:"talker_alias" json:"talkerAlias,omitempty" yaml:"talker_alias,omitempty"`
	TGLabel     *string       `db:"tg_label" json:"tgLabel,omitempty" yaml:"tg_label,omitempty"`
	TGAlphaTag  *string       `db:"tg_alpha_tag" json:"tgAlphaTag,omitempty" yaml:"tg_alpha_tag,omitempty"`
	TGGroup     *string       `db:"tg_group" json:"tgGroup,omitempty" yaml:"tg_group,omitempty"`
	Source      int           `db:"source" json:"source,omitempty" yaml:"source,omitempty"`
	Transcript  *string       `db:"transcript" json:"transcript,omitempty" yaml:"transcript,omitempty"`
	DanglingAt  *time.Time    `db:"dangling_at" json:"danglingAt,omitempty" yaml:"dangling_at,omitempty"`
}

type System

type System struct {
	ID      int    `db:"id" json:"id,omitempty" yaml:"id,omitempty"`
	Name    string `db:"name" json:"name,omitempty" yaml:"name,omitempty"`
	Learned bool   `db:"learned" json:"learned,omitempty" yaml:"learned,omitempty"`
}

type SystemNotificationSubscription

type SystemNotificationSubscription struct {
	UserID   int `db:"user_id" json:"userId,omitempty" yaml:"user_id,omitempty"`
	SystemID int `db:"system_id" json:"systemId,omitempty" yaml:"system_id,omitempty"`
}

type TGID

type TGID struct {
	System    uint32 `db:"system"`
	Talkgroup uint32 `db:"tg"`
}

type TGTuples

type TGTuples [2][]int32

type TGTuplesU

type TGTuplesU [2][]uint32

func MakeTGTuples

func MakeTGTuples(cap int) TGTuplesU

func (*TGTuplesU) Append

func (t *TGTuplesU) Append(sys, tg uint32)

type Talkgroup

type Talkgroup struct {
	ID         int                `db:"id" json:"id,omitempty" yaml:"id,omitempty"`
	SystemID   int32              `db:"system_id" json:"systemId,omitempty" yaml:"system_id,omitempty"`
	TGID       int32              `db:"tgid" json:"tgid,omitempty" yaml:"tgid,omitempty"`
	Name       *string            `db:"name" json:"name,omitempty" yaml:"name,omitempty"`
	AlphaTag   *string            `db:"alpha_tag" json:"alphaTag,omitempty" yaml:"alpha_tag,omitempty"`
	TGGroup    *string            `db:"tg_group" json:"tgGroup,omitempty" yaml:"tg_group,omitempty"`
	Frequency  *int32             `db:"frequency" json:"frequency,omitempty" yaml:"frequency,omitempty"`
	Metadata   jsontypes.Metadata `db:"metadata" json:"metadata,omitempty" yaml:"metadata,omitempty"`
	Tags       []string           `db:"tags" json:"tags,omitempty" yaml:"tags,omitempty"`
	Alert      bool               `db:"alert" json:"alert,omitempty" yaml:"alert,omitempty"`
	AlertRules rules.AlertRules   `db:"alert_rules" json:"alertRules,omitempty" yaml:"alert_rules,omitempty"`
	Weight     float32            `db:"weight" json:"weight,omitempty" yaml:"weight,omitempty"`
	Learned    bool               `db:"learned" json:"learned,omitempty" yaml:"learned,omitempty"`
	Ignored    bool               `db:"ignored" json:"ignored,omitempty" yaml:"ignored,omitempty"`
}

func (Talkgroup) GetLearned

func (g Talkgroup) GetLearned() bool

func (Talkgroup) GetSystem

func (g Talkgroup) GetSystem() System

func (Talkgroup) GetTalkgroup

func (g Talkgroup) GetTalkgroup() Talkgroup

func (Talkgroup) String

func (g Talkgroup) String() string

func (Talkgroup) StringTag

func (g Talkgroup) StringTag(withTag bool) string

type TalkgroupNotificationSubscription

type TalkgroupNotificationSubscription struct {
	UserID   int   `db:"user_id" json:"userId,omitempty" yaml:"user_id,omitempty"`
	SystemID int32 `db:"system_id" json:"systemId,omitempty" yaml:"system_id,omitempty"`
	TGID     int32 `db:"tgid" json:"tgid,omitempty" yaml:"tgid,omitempty"`
}

type TalkgroupVersion

type TalkgroupVersion struct {
	ID         int       `db:"id" json:"id,omitempty" yaml:"id,omitempty"`
	Time       time.Time `db:"time" json:"time,omitempty" yaml:"time,omitempty"`
	CreatedBy  *int32    `db:"created_by" json:"createdBy,omitempty" yaml:"created_by,omitempty"`
	Deleted    *bool     `db:"deleted" json:"deleted,omitempty" yaml:"deleted,omitempty"`
	SystemID   *int32    `db:"system_id" json:"systemId,omitempty" yaml:"system_id,omitempty"`
	TGID       *int32    `db:"tgid" json:"tgid,omitempty" yaml:"tgid,omitempty"`
	Name       *string   `db:"name" json:"name,omitempty" yaml:"name,omitempty"`
	AlphaTag   *string   `db:"alpha_tag" json:"alphaTag,omitempty" yaml:"alpha_tag,omitempty"`
	TGGroup    *string   `db:"tg_group" json:"tgGroup,omitempty" yaml:"tg_group,omitempty"`
	Frequency  *int32    `db:"frequency" json:"frequency,omitempty" yaml:"frequency,omitempty"`
	Metadata   []byte    `db:"metadata" json:"metadata,omitempty" yaml:"metadata,omitempty"`
	Tags       []string  `db:"tags" json:"tags,omitempty" yaml:"tags,omitempty"`
	Alert      *bool     `db:"alert" json:"alert,omitempty" yaml:"alert,omitempty"`
	AlertRules []byte    `db:"alert_rules" json:"alertRules,omitempty" yaml:"alert_rules,omitempty"`
	Weight     *float32  `db:"weight" json:"weight,omitempty" yaml:"weight,omitempty"`
	Learned    *bool     `db:"learned" json:"learned,omitempty" yaml:"learned,omitempty"`
	Ignored    *bool     `db:"ignored" json:"ignored,omitempty" yaml:"ignored,omitempty"`
}

type UpdateIncidentParams

type UpdateIncidentParams struct {
	Name        *string            `db:"name" json:"name"`
	Description *string            `db:"description" json:"description"`
	StartTime   *time.Time         `db:"start_time" json:"startTime"`
	EndTime     *time.Time         `db:"end_time" json:"endTime"`
	Location    []byte             `db:"location" json:"location"`
	Metadata    jsontypes.Metadata `db:"metadata" json:"metadata"`
	ID          uuid.UUID          `db:"id" json:"id"`
}

type UpdateTalkgroupParams

type UpdateTalkgroupParams struct {
	Name       *string            `db:"name" json:"name"`
	AlphaTag   *string            `db:"alpha_tag" json:"alphaTag"`
	TGGroup    *string            `db:"tg_group" json:"tgGroup"`
	Frequency  *int32             `db:"frequency" json:"frequency"`
	Metadata   jsontypes.Metadata `db:"metadata" json:"metadata"`
	Tags       []string           `db:"tags" json:"tags"`
	Alert      *bool              `db:"alert" json:"alert"`
	AlertRules rules.AlertRules   `db:"alert_rules" json:"alertRules"`
	Weight     *float32           `db:"weight" json:"weight"`
	Learned    *bool              `db:"learned" json:"learned"`
	ID         *int32             `db:"id" json:"id"`
	SystemID   *int32             `db:"system_id" json:"systemId"`
	TGID       *int32             `db:"tgid" json:"tgid"`
}

type UpdateUserParams

type UpdateUserParams struct {
	Username string   `db:"username" json:"username"`
	Email    *string  `db:"email" json:"email"`
	RealName *string  `db:"real_name" json:"realName"`
	Roles    []string `db:"roles" json:"roles"`
}

type UpsertTalkgroupBatchResults

type UpsertTalkgroupBatchResults struct {
	// contains filtered or unexported fields
}

func (*UpsertTalkgroupBatchResults) Close

func (*UpsertTalkgroupBatchResults) QueryRow

func (b *UpsertTalkgroupBatchResults) QueryRow(f func(int, Talkgroup, error))

type UpsertTalkgroupParams

type UpsertTalkgroupParams struct {
	SystemID   int32              `db:"system_id" json:"systemId"`
	TGID       int32              `db:"tgid" json:"tgid"`
	Name       *string            `db:"name" json:"name"`
	AlphaTag   *string            `db:"alpha_tag" json:"alphaTag"`
	TGGroup    *string            `db:"tg_group" json:"tgGroup"`
	Frequency  *int32             `db:"frequency" json:"frequency"`
	Metadata   jsontypes.Metadata `db:"metadata" json:"metadata"`
	Tags       []string           `db:"tags" json:"tags"`
	Alert      interface{}        `db:"alert" json:"alert"`
	AlertRules rules.AlertRules   `db:"alert_rules" json:"alertRules"`
	Weight     pgtype.Numeric     `db:"weight" json:"weight"`
	Learned    *bool              `db:"learned" json:"learned"`
}

type User

type User struct {
	ID            int         `db:"id" json:"id,omitempty" yaml:"id,omitempty"`
	Username      string      `db:"username" json:"username,omitempty" yaml:"username,omitempty"`
	Password      string      `db:"password" json:"password,omitempty" yaml:"password,omitempty"`
	RealName      *string     `db:"real_name" json:"realName,omitempty" yaml:"real_name,omitempty"`
	Email         string      `db:"email" json:"email,omitempty" yaml:"email,omitempty"`
	Roles         []string    `db:"roles" json:"roles,omitempty" yaml:"roles,omitempty"`
	DisabledAt    *time.Time  `db:"disabled_at" json:"disabledAt,omitempty" yaml:"disabled_at,omitempty"`
	LastLoginAt   *time.Time  `db:"last_login_at" json:"lastLoginAt,omitempty" yaml:"last_login_at,omitempty"`
	LastLoginFrom *netip.Addr `db:"last_login_from" json:"lastLoginFrom,omitempty" yaml:"last_login_from,omitempty"`
	PasswordSetAt time.Time   `db:"password_set_at" json:"passwordSetAt,omitempty" yaml:"password_set_at,omitempty"`
	Prefs         []byte      `db:"prefs" json:"prefs,omitempty" yaml:"prefs,omitempty"`
}

type WebpushSubscription

type WebpushSubscription struct {
	ID           int64      `db:"id" json:"id,omitempty" yaml:"id,omitempty"`
	UserID       int        `db:"user_id" json:"userId,omitempty" yaml:"user_id,omitempty"`
	CreatedAt    time.Time  `db:"created_at" json:"createdAt,omitempty" yaml:"created_at,omitempty"`
	UpdatedAt    time.Time  `db:"updated_at" json:"updatedAt,omitempty" yaml:"updated_at,omitempty"`
	Expiration   *time.Time `db:"expiration" json:"expiration,omitempty" yaml:"expiration,omitempty"`
	Subscription []byte     `db:"subscription" json:"subscription,omitempty" yaml:"subscription,omitempty"`
	Client       *string    `db:"client" json:"client,omitempty" yaml:"client,omitempty"`
}

func (*WebpushSubscription) UnmarshalYAML

func (c *WebpushSubscription) UnmarshalYAML(n *yaml.Node) error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL