···
8
+
"github.com/bluesky-social/indigo/atproto/syntax"
11
+
type Pipeline struct {
15
+
RepoOwner syntax.DID
20
+
// populate when querying for revers mappings
24
+
type Trigger struct {
28
+
// push trigger fields
33
+
// pull request trigger fields
34
+
PRSourceBranch *string
35
+
PRTargetBranch *string
40
+
type PipelineStatus struct {
53
+
func GetPipelines(e Execer, filters ...filter) ([]Pipeline, error) {
54
+
var pipelines []Pipeline
56
+
var conditions []string
58
+
for _, filter := range filters {
59
+
conditions = append(conditions, filter.Condition())
60
+
args = append(args, filter.arg)
64
+
if conditions != nil {
65
+
whereClause = " where " + strings.Join(conditions, " and ")
68
+
query := fmt.Sprintf(`select id, rkey, knot, repo_owner, repo_name, sha from pipelines %s`, whereClause)
70
+
rows, err := e.Query(query, args...)
78
+
var pipeline Pipeline
83
+
&pipeline.RepoOwner,
91
+
pipelines = append(pipelines, pipeline)
94
+
if err = rows.Err(); err != nil {
98
+
return pipelines, nil
101
+
func AddPipeline(e Execer, pipeline Pipeline) error {
105
+
pipeline.RepoOwner,
107
+
pipeline.TriggerId,
111
+
placeholders := make([]string, len(args))
112
+
for i := range placeholders {
113
+
placeholders[i] = "?"
116
+
query := fmt.Sprintf(`
117
+
insert or ignore into pipelines (
125
+
`, strings.Join(placeholders, ","))
127
+
_, err := e.Exec(query, args...)
132
+
func AddTrigger(e Execer, trigger Trigger) (int64, error) {
136
+
trigger.PushNewSha,
137
+
trigger.PushOldSha,
138
+
trigger.PRSourceBranch,
139
+
trigger.PRTargetBranch,
140
+
trigger.PRSourceSha,
144
+
placeholders := make([]string, len(args))
145
+
for i := range placeholders {
146
+
placeholders[i] = "?"
149
+
query := fmt.Sprintf(`insert or ignore into triggers (
158
+
) values (%s)`, strings.Join(placeholders, ","))
160
+
res, err := e.Exec(query, args...)
165
+
return res.LastInsertId()
168
+
func AddPipelineStatus(e Execer, status PipelineStatus) error {
172
+
status.PipelineKnot,
173
+
status.PipelineRkey,
180
+
placeholders := make([]string, len(args))
181
+
for i := range placeholders {
182
+
placeholders[i] = "?"
185
+
query := fmt.Sprintf(`
186
+
insert or ignore into pipeline_statuses (
196
+
`, strings.Join(placeholders, ","))
198
+
_, err := e.Exec(query, args...)