Skip to content
quarry Artifact [3b0a87145a]
Login

Artifact [3b0a87145a]

Artifact 3b0a87145aa68833cdc4a04e0c83e7fc7b4829f45e14bf2fe44345e0c8d7aa7d:


package main

import (
	"craftdesign.group/quarry/internal/api"
	"craftdesign.group/quarry/internal/oltp"
)

// signOffStore adapts the forge database's sign-off rows to the API's
// own type, which is the same record under the package that names it.
type signOffStore struct{ db *oltp.DB }

func toAPISignOff(s oltp.SignOff) api.SignOffRequest { return api.SignOffRequest(s) }

func (s signOffStore) RequestSignOff(r api.SignOffRequest) (api.SignOffRequest, error) {
	out, err := s.db.RequestSignOff(oltp.SignOff(r))
	return toAPISignOff(out), err
}

func (s signOffStore) SignOffsFor(owner string, limit int) ([]api.SignOffRequest, error) {
	rows, err := s.db.SignOffsFor(owner, limit)
	out := make([]api.SignOffRequest, 0, len(rows))
	for _, r := range rows {
		out = append(out, toAPISignOff(r))
	}
	return out, err
}

func (s signOffStore) SignOffByID(id string) (api.SignOffRequest, bool, error) {
	r, ok, err := s.db.SignOffByID(id)
	return toAPISignOff(r), ok, err
}

func (s signOffStore) DecideSignOff(id, owner string, approve bool) (api.SignOffRequest, error) {
	r, err := s.db.DecideSignOff(id, owner, approve)
	return toAPISignOff(r), err
}

func (s signOffStore) FailSignOff(id, why string) error { return s.db.FailSignOff(id, why) }

func (s signOffStore) FinishSignOff(id, result, secret string) error {
	return s.db.FinishSignOff(id, result, secret)
}

func (s signOffStore) TakeSignOffSecret(id, agent string) (string, error) {
	return s.db.TakeSignOffSecret(id, agent)
}