| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- //go:build ignore
- package config
- import (
- "context"
- "encoding/json"
- "errors"
- "fmt"
- "github.com/TecharoHQ/anubis/lib/checker"
- )
- var (
- ErrUnknownCheckType = errors.New("config.Bot.Check: unknown check type")
- )
- type AllChecks struct {
- All []Check `json:"all"`
- }
- type AnyChecks struct {
- All []Check `json:"any"`
- }
- type Check struct {
- Type string `json:"type"`
- Args json.RawMessage `json:"args"`
- }
- func (c *Check) Valid(ctx context.Context) error {
- var errs []error
- if len(c.Type) == 0 {
- errs = append(errs, ErrNoStoreBackend)
- }
- fac, ok := checker.Get(c.Type)
- switch ok {
- case true:
- if err := fac.Valid(ctx, c.Args); err != nil {
- errs = append(errs, err)
- }
- case false:
- errs = append(errs, fmt.Errorf("%w: %q", ErrUnknownCheckType, c.Type))
- }
- if len(errs) != 0 {
- return errors.Join(errs...)
- }
- return nil
- }
|