package db
import (
"errors"
"tangled.org/core/spindle/models"
)
type FinishedLog struct {
LeaseID string
Workflow string
Ref string
Hash string
}
func (d *DB) GetFinishedLog(wid models.WorkflowId) (*FinishedLog, error) {
if err := validateWorkflowIdentity(wid); err != nil {
return nil, err
}
var fl FinishedLog
err := d.QueryRow(
`select lease_id, workflow, ref, hash
from mill_artifacts
where pipeline_id = ? and workflow = ?
order by id desc limit 1`,
string(wid.PipelineId), wid.Name,
).Scan(&fl.LeaseID, &fl.Workflow, &fl.Ref, &fl.Hash)
if err != nil {
return nil, err
}
return &fl, nil
}
func (d *DB) SaveArtifactRef(leaseID, repoDid string, wid models.WorkflowId, ref, hash string) error {
if err := validateWorkflowIdentity(wid); err != nil {
return err
}
_, err := d.Exec(
`insert into mill_artifacts (lease_id, repo_did, pipeline_id, workflow, ref, hash)
values (?, ?, ?, ?, ?, ?)`,
leaseID, repoDid, string(wid.PipelineId), wid.Name, ref, hash,
)
return err
}
func validateWorkflowIdentity(wid models.WorkflowId) error {
if wid.PipelineId == "" || wid.Name == "" {
return errors.New("incomplete workflow identity")
}
return nil
}