Skip to content
quarry Artifact [9bbafa94a5]
Login

Artifact [9bbafa94a5]

Artifact 9bbafa94a5321f2e30359f97900095922a393b0d7c4586d902146f53e7f98d40:


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) }