Repository navigation
Expand file tree
/
Copy pathapplication_variable.go
More file actions
91 lines (82 loc) · 2.68 KB
/
Copy pathapplication_variable.go
File metadata and controls
91 lines (82 loc) · 2.68 KB
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
88
89
90
91
package application
import (
"database/sql"
"fmt"
"github.com/go-gorp/gorp"
"github.com/ovh/cds/sdk"
)
var (
// ErrNoVariable when request requires specific variable in the applicatoin
ErrNoVariable = fmt.Errorf("variable not in the application")
)
// GetVariableAudit Get variable audit for the given application
// Deprecated
func GetVariableAudit(db gorp.SqlExecutor, key, appName string) ([]sdk.VariableAudit, error) {
// FIXME refactor using application_variable_audit.
audits := []sdk.VariableAudit{}
query := `
SELECT application_variable_audit_old.id, application_variable_audit_old.versionned, application_variable_audit_old.data, application_variable_audit_old.author
FROM application_variable_audit_old
JOIN application ON application.id = application_variable_audit_old.application_id
JOIN project ON project.id = application.project_id
WHERE application.name = $1 AND project.projectkey = $2
ORDER BY application_variable_audit_old.versionned DESC
`
rows, err := db.Query(query, appName, key)
if err != nil {
return nil, err
}
defer rows.Close()
for rows.Next() {
var audit sdk.VariableAudit
var data string
err := rows.Scan(&audit.ID, &audit.Versionned, &data, &audit.Author)
if err != nil {
return nil, err
}
var vars []sdk.Variable
err = sdk.JSONUnmarshal([]byte(data), &vars)
if err != nil {
return nil, err
}
audit.Variables = vars
for i := range audit.Variables {
v := &audit.Variables[i]
if sdk.NeedPlaceholder(v.Type) {
v.Value = sdk.PasswordPlaceholder
}
}
audits = append(audits, audit)
}
return audits, nil
}
// insertAudit insert an application variable audit
func inserAudit(db gorp.SqlExecutor, ava *sdk.ApplicationVariableAudit) error {
dbAppVarAudit := dbApplicationVariableAudit(*ava)
if err := db.Insert(&dbAppVarAudit); err != nil {
return sdk.WrapError(err, "Cannot Insert Audit for variable %d", ava.VariableID)
}
*ava = sdk.ApplicationVariableAudit(dbAppVarAudit)
return nil
}
// LoadVariableAudits Load audits for the given variable
func LoadVariableAudits(db gorp.SqlExecutor, appID, varID int64) ([]sdk.ApplicationVariableAudit, error) {
var res []dbApplicationVariableAudit
query := "SELECT * FROM application_variable_audit WHERE application_id = $1 AND variable_id = $2 ORDER BY versionned DESC"
if _, err := db.Select(&res, query, appID, varID); err != nil {
if err != sql.ErrNoRows {
return nil, err
}
return []sdk.ApplicationVariableAudit{}, nil
}
avas := make([]sdk.ApplicationVariableAudit, len(res))
for i := range res {
dbAva := &res[i]
if err := dbAva.PostGet(db); err != nil {
return nil, err
}
ava := sdk.ApplicationVariableAudit(*dbAva)
avas[i] = ava
}
return avas, nil
}