Files
athens/pkg/storage/checker.go
Nicholas Wiersma d932d50232 chore: lint code with golangci-lint (#1828)
* feat: add golangci-lint linting

* chore: fix linter issues

* feat: add linting into the workflow

* docs: update lint docs

* fix: cr suggestions

* fix: remove old formatting and vetting scripts

* fix: add docker make target

* fix: action go caching

* fix: depreciated actions checkout version

* fix: cr suggestion

* fix: cr suggestions

---------

Co-authored-by: Manu Gupta <manugupt1@gmail.com>
2023-02-24 20:39:17 -08:00

39 lines
880 B
Go

package storage
import (
"context"
"github.com/gomods/athens/pkg/errors"
)
// Checker is the interface that checks if the version of the module exists.
type Checker interface {
// Exists checks whether or not module in specified version is present
// in the backing storage.
Exists(ctx context.Context, module, version string) (bool, error)
}
// WithChecker wraps the backend with a Checker implementation.
func WithChecker(strg Backend) Checker {
if checker, ok := strg.(Checker); ok {
return checker
}
return &checker{strg}
}
type checker struct {
strg Backend
}
func (c *checker) Exists(ctx context.Context, module, version string) (bool, error) {
const op errors.Op = "checker.Exists"
_, err := c.strg.Info(ctx, module, version)
if err != nil {
if errors.Is(err, errors.KindNotFound) {
return false, nil
}
return false, err
}
return true, nil
}