proper foreign key

This commit is contained in:
Daniel 2024-07-17 19:49:50 -04:00
parent 20c21beca9
commit e9dbfe33e3
3 changed files with 10 additions and 8 deletions

View file

@ -82,16 +82,17 @@ func (q *Queries) GetTalkgroupsWithAnyTags(ctx context.Context, tags []string) (
} }
const setTalkgroupTags = `-- name: SetTalkgroupTags :exec const setTalkgroupTags = `-- name: SetTalkgroupTags :exec
INSERT INTO talkgroups_tags(talkgroup_id, tags) VALUES($1, $2) INSERT INTO talkgroups_tags(system_id, talkgroup_id, tags) VALUES($1, $2, $3)
ON CONFLICT (talkgroup_id) DO UPDATE SET tags = $2 ON CONFLICT (system_id, talkgroup_id) DO UPDATE SET tags = $3
` `
type SetTalkgroupTagsParams struct { type SetTalkgroupTagsParams struct {
SystemID int32
TalkgroupID int32 TalkgroupID int32
Tags []string Tags []string
} }
func (q *Queries) SetTalkgroupTags(ctx context.Context, arg SetTalkgroupTagsParams) error { func (q *Queries) SetTalkgroupTags(ctx context.Context, arg SetTalkgroupTagsParams) error {
_, err := q.db.Exec(ctx, setTalkgroupTags, arg.TalkgroupID, arg.Tags) _, err := q.db.Exec(ctx, setTalkgroupTags, arg.SystemID, arg.TalkgroupID, arg.Tags)
return err return err
} }

View file

@ -36,9 +36,10 @@ CREATE TABLE IF NOT EXISTS talkgroups(
); );
CREATE TABLE IF NOT EXISTS talkgroups_tags( CREATE TABLE IF NOT EXISTS talkgroups_tags(
system_id INTEGER NOT NULL REFERENCES systems(id), system_id INTEGER NOT NULL,
talkgroup_id INTEGER NOT NULL REFERENCES talkgroups(id), talkgroup_id INTEGER NOT NULL,
tags TEXT[] NOT NULL DEFAULT '{}' tags TEXT[] NOT NULL DEFAULT '{}',
FOREIGN KEY (system_id, talkgroup_id) REFERENCES talkgroups (system, tgid)
); );
CREATE UNIQUE INDEX IF NOT EXISTS talkgroups_tags_id_talkgroup_id ON talkgroups_tags(system_id, talkgroup_id); CREATE UNIQUE INDEX IF NOT EXISTS talkgroups_tags_id_talkgroup_id ON talkgroups_tags(system_id, talkgroup_id);
CREATE INDEX IF NOT EXISTS talkgroup_tags_id_tags ON talkgroups_tags USING GIN (tags); CREATE INDEX IF NOT EXISTS talkgroup_tags_id_tags ON talkgroups_tags USING GIN (tags);

View file

@ -11,6 +11,6 @@ SELECT tags FROM talkgroups_tags
WHERE talkgroup_id = $1; WHERE talkgroup_id = $1;
-- name: SetTalkgroupTags :exec -- name: SetTalkgroupTags :exec
INSERT INTO talkgroups_tags(talkgroup_id, tags) VALUES($1, $2) INSERT INTO talkgroups_tags(system_id, talkgroup_id, tags) VALUES($1, $2, $3)
ON CONFLICT (talkgroup_id) DO UPDATE SET tags = $2; ON CONFLICT (system_id, talkgroup_id) DO UPDATE SET tags = $3;