···
-
func (d *DB) InsertPipeline(pipeline Pipeline) error {
-
`insert into pipelines (rkey, nsid, event) values (?, ?, ?)`,
-
func (d *DB) GetPipeline(rkey, cursor string) (Pipeline, error) {
-
whereClause := "where rkey = ?"
-
whereClause += " and rkey > ?"
-
args = append(args, cursor)
-
row := d.QueryRow(query, args...)
-
err := row.Scan(&p.Rkey, &p.PipelineJson)
-
func (d *DB) GetPipelines(cursor string) ([]Pipeline, error) {
···
-
select rkey, nsid, pipeline
-
rows, err := d.Query(query, args...)
-
rows.Scan(&ev.Rkey, &ev.PipelineJson)
-
evts = append(evts, ev)
if err := rows.Err(); err != nil {
···
+
"tangled.sh/tangled.sh/core/api/tangled"
+
"tangled.sh/tangled.sh/core/knotserver/notifier"
+
type PipelineStatus string
+
PipelinePending PipelineStatus = "pending"
+
PipelineRunning PipelineStatus = "running"
+
PipelineFailed PipelineStatus = "failed"
+
PipelineTimeout PipelineStatus = "timeout"
+
PipelineCancelled PipelineStatus = "cancelled"
+
PipelineSuccess PipelineStatus = "success"
+
Rkey string `json:"rkey"`
+
Knot string `json:"knot"`
+
Status PipelineStatus `json:"status"`
+
Error string `json:"error"`
+
ExitCode int `json:"exit_code"`
+
StartedAt time.Time `json:"started_at"`
+
UpdatedAt time.Time `json:"updated_at"`
+
FinishedAt time.Time `json:"finished_at"`
+
func (p Pipeline) AsRecord() *tangled.PipelineStatus {
+
exitCode64 := int64(p.ExitCode)
+
finishedAt := p.FinishedAt.String()
+
return &tangled.PipelineStatus{
+
Pipeline: fmt.Sprintf("at://%s/%s", p.Knot, p.Rkey),
+
Status: string(p.Status),
+
StartedAt: p.StartedAt.String(),
+
UpdatedAt: p.UpdatedAt.String(),
+
FinishedAt: &finishedAt,
+
func pipelineAtUri(rkey, knot string) string {
+
return fmt.Sprintf("at://%s/did:web:%s/%s", tangled.PipelineStatusNSID, knot, rkey)
+
func (db *DB) CreatePipeline(rkey, knot string, n *notifier.Notifier) error {
+
insert into pipelines (at_uri, status)
+
`, pipelineAtUri(rkey, knot), PipelinePending)
+
func (db *DB) MarkPipelineRunning(rkey, knot string, n *notifier.Notifier) error {
+
set status = ?, updated_at = strftime('%Y-%m-%dT%H:%M:%SZ', 'now')
+
`, PipelineRunning, pipelineAtUri(rkey, knot))
+
func (db *DB) MarkPipelineFailed(rkey, knot string, exitCode int, errorMsg string, n *notifier.Notifier) error {
+
updated_at = strftime('%Y-%m-%dT%H:%M:%SZ', 'now'),
+
finished_at = strftime('%Y-%m-%dT%H:%M:%SZ', 'now')
+
`, PipelineFailed, exitCode, errorMsg, pipelineAtUri(rkey, knot))
+
func (db *DB) MarkPipelineTimeout(rkey, knot string, n *notifier.Notifier) error {
+
set status = ?, updated_at = strftime('%Y-%m-%dT%H:%M:%SZ', 'now')
+
`, PipelineTimeout, pipelineAtUri(rkey, knot))
+
func (db *DB) MarkPipelineSuccess(rkey, knot string, n *notifier.Notifier) error {
+
set status = ?, updated_at = strftime('%Y-%m-%dT%H:%M:%SZ', 'now'),
+
finished_at = strftime('%Y-%m-%dT%H:%M:%SZ', 'now')
+
`, PipelineSuccess, pipelineAtUri(rkey, knot))
+
func (db *DB) GetPipeline(rkey, knot string) (Pipeline, error) {
+
select rkey, status, error, exit_code, started_at, updated_at, finished_at
+
`, pipelineAtUri(rkey, knot)).Scan(&p.Rkey, &p.Status, &p.Error, &p.ExitCode, &p.StartedAt, &p.UpdatedAt, &p.FinishedAt)
+
func (db *DB) GetPipelines(cursor string) ([]Pipeline, error) {
···
+
select rkey, status, error, exit_code, started_at, updated_at, finished_at
+
rows, err := db.Query(query, args...)
+
var pipelines []Pipeline
+
rows.Scan(&p.Rkey, &p.Status, &p.Error, &p.ExitCode, &p.StartedAt, &p.UpdatedAt, &p.FinishedAt)
+
pipelines = append(pipelines, p)
if err := rows.Err(); err != nil {