// buildsFindByRepoSha finds a build by repository and sha. func buildsFindByRepoSha(tx *sqlx.Tx, repoSha string) (*Build, error) { parts := strings.Split(repoSha, "@") var sql = `SELECT * FROM builds WHERE repository = ? AND sha = ? ORDER BY seq desc LIMIT 1` var b Build err := tx.Get(&b, tx.Rebind(sql), parts[0], parts[1]) return &b, err }
// artifactsFindByRepoSha finds an artifact by image. func artifactsFindByRepoSha(tx *sqlx.Tx, repoSha string) (*Artifact, error) { parts := strings.Split(repoSha, "@") var sql = `SELECT * FROM artifacts WHERE repository = ? AND sha = ? ORDER BY seq desc LIMIT 1` var a Artifact err := tx.Get(&a, tx.Rebind(sql), parts[0], parts[1]) return &a, err }
// buildsUpdateState changes the state of a build. func buildsUpdateState(tx *sqlx.Tx, buildID string, state BuildState) error { var sql string switch state { case StateBuilding: sql = `UPDATE builds SET state = ?, started_at = ? WHERE id = ?` case StateSucceeded, StateFailed: sql = `UPDATE builds SET state = ?, completed_at = ? WHERE id = ?` default: panic(fmt.Sprintf("not implemented for %s", state)) } _, err := tx.Exec(tx.Rebind(sql), state, time.Now(), buildID) return err }
// buildsFind finds a build by ID. func buildsFind(tx *sqlx.Tx, buildID string) (*Build, error) { const ( findBuildSql = `SELECT * FROM builds where id = ?` findArtifactsSql = `SELECT image FROM artifacts WHERE build_id = ?` ) var b Build err := tx.Get(&b, tx.Rebind(findBuildSql), buildID) if err != nil { return nil, err } err = tx.Select(&b.Artifacts, tx.Rebind(findArtifactsSql), buildID) if err != nil { return nil, err } return &b, err }
// buildsFindByID finds a build by ID. func buildsFindByID(tx *sqlx.Tx, buildID string) (*Build, error) { const findBuildSql = `SELECT * FROM builds WHERE id = ? LIMIT 1` var b Build err := tx.Get(&b, tx.Rebind(findBuildSql), buildID) return &b, err }
// artifactsFindByID finds an artifact by ID. func artifactsFindByID(tx *sqlx.Tx, artifactID string) (*Artifact, error) { var sql = `SELECT * FROM artifacts WHERE id = ? LIMIT 1` var a Artifact err := tx.Get(&a, tx.Rebind(sql), artifactID) return &a, err }