-
Notifications
You must be signed in to change notification settings - Fork 6
/
gprograms.go
87 lines (74 loc) · 2.35 KB
/
gprograms.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/*
Copyright 2021 Adevinta
*/
package store
import (
"github.com/adevinta/errors"
"github.com/adevinta/vulcan-api/pkg/api"
)
func (db vulcanitoStore) UpsertGlobalProgramMetadata(teamID, program string, defaultAutosend bool, defaultDisabled bool, defaultCron string, autosend *bool, disabled *bool, cron *string) error {
var err error
paramAutosend := defaultAutosend
if autosend != nil {
paramAutosend = *autosend
}
paramDisabled := defaultDisabled
if disabled != nil {
paramDisabled = *disabled
}
paramCron := defaultCron
if cron != nil {
paramCron = *cron
}
if autosend != nil {
err = db.Conn.Exec(`INSERT INTO global_programs_metadata(team_id, program, autosend, disabled, cron) VALUES(?,?,?,?,?)
ON CONFLICT ON CONSTRAINT global_programs_metadata_pkey
DO
UPDATE
SET autosend=EXCLUDED.autosend`, teamID, program, paramAutosend, paramDisabled, paramCron).Error
if err != nil {
return err
}
}
if disabled != nil {
err = db.Conn.Exec(`INSERT INTO global_programs_metadata(team_id, program, autosend, disabled, cron) VALUES(?,?,?,?,?)
ON CONFLICT ON CONSTRAINT global_programs_metadata_pkey
DO
UPDATE
SET disabled=EXCLUDED.disabled`, teamID, program, paramAutosend, paramDisabled, paramCron).Error
if err != nil {
return err
}
}
if cron != nil {
err = db.Conn.Exec(`INSERT INTO global_programs_metadata(team_id, program, autosend, disabled, cron) VALUES(?,?,?,?,?)
ON CONFLICT ON CONSTRAINT global_programs_metadata_pkey
DO
UPDATE
SET cron=EXCLUDED.cron`, teamID, program, paramAutosend, paramDisabled, paramCron).Error
if err != nil {
return err
}
}
return err
}
func (db vulcanitoStore) FindGlobalProgramMetadata(programID string, teamID string) (*api.GlobalProgramsMetadata, error) {
program := &api.GlobalProgramsMetadata{
TeamID: teamID,
Program: programID,
}
result := db.Conn.Find(&program)
if result.Error != nil {
if db.NotFoundError(result.Error) {
return nil, db.logError(errors.NotFound(result.Error))
}
return nil, db.logError(errors.Database(result.Error))
}
return program, nil
}
func (db vulcanitoStore) UpdateGlobalProgramMetadata(metadata api.GlobalProgramsMetadata) error {
return db.Conn.Model(&metadata).Update(metadata).Error
}
func (db vulcanitoStore) DeleteProgramMetadata(program string) error {
return db.Conn.Exec("delete from global_programs_metadata where program = ?", program).Error
}