mirror of
https://github.com/gomods/athens
synced 2026-02-03 11:00:32 +00:00
* 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>
39 lines
880 B
Go
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
|
|
}
|