* MM-24135: Migrate AppError from SaveChannel/channel_store.go This is the first POC of migration of store app errors to plain error. We create a few basic error types in the store package and use them to return the errors from store methods. In the app layer, we inspect the error and re-create the exact app errors. This lets us preserve the same error content, but yet move to plain errors. Since this is a gradual migration, this means that the error inspection code will be duplicated across the app layer whenever a store method is invoked. But all of that should go away once we start propagating the errors higher up the hierarchy. There have been a significant amount of changes in the storetest and searchtest layer, primarily because we have to rename the err variable now that it is of a different type. * Addressed review comments * MM-24132: Migrate AppError from SaveDirectChannel/channel_store.go This PR migrates 2 new methods SaveDirectChannel and CreateDirectChannel to return error instead of AppError. We also need to handle the error internally in SaveMultipleMember for now until that is migrated too. * MM-24133: Migrate AppError from bot_store.go * Fix errors * Fix err * Fix bad return * Fix vet errors * Fix incorrect error check Co-authored-by: mattermod <mattermod@users.noreply.github.com>
87 строки
2.1 KiB
Go
87 строки
2.1 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package store
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
// ErrInvalidInput indicates an error that has occured due to an invalid input.
|
|
type ErrInvalidInput struct {
|
|
Entity string // The entity which was sent as the input.
|
|
Field string // The field of the entity which was invalid.
|
|
Value interface{} // The actual value of the field.
|
|
}
|
|
|
|
func NewErrInvalidInput(entity, field string, value interface{}) *ErrInvalidInput {
|
|
return &ErrInvalidInput{
|
|
Entity: entity,
|
|
Field: field,
|
|
Value: value,
|
|
}
|
|
}
|
|
|
|
func (e *ErrInvalidInput) Error() string {
|
|
return fmt.Sprintf("invalid input: entity: %s field: %s value: %s", e.Entity, e.Field, e.Value)
|
|
}
|
|
|
|
// ErrLimitExceeded indicates an error that has occured because some value exceeded a limit.
|
|
type ErrLimitExceeded struct {
|
|
What string // What was the object that exceeded.
|
|
Count int // The value of the object.
|
|
meta string // Any additional metadata.
|
|
}
|
|
|
|
func NewErrLimitExceeded(what string, count int, meta string) *ErrLimitExceeded {
|
|
return &ErrLimitExceeded{
|
|
What: what,
|
|
Count: count,
|
|
meta: meta,
|
|
}
|
|
}
|
|
|
|
func (e *ErrLimitExceeded) Error() string {
|
|
return fmt.Sprintf("limit exceeded: what: %s count: %d metadata: %s", e.What, e.Count, e.meta)
|
|
}
|
|
|
|
// ErrConflict indicates a conflict that occured.
|
|
type ErrConflict struct {
|
|
Resource string // The resource which created the conflict.
|
|
err error // Internal error.
|
|
meta string // Any additional metadata.
|
|
}
|
|
|
|
func NewErrConflict(resource string, err error, meta string) *ErrConflict {
|
|
return &ErrConflict{
|
|
Resource: resource,
|
|
err: err,
|
|
meta: meta,
|
|
}
|
|
}
|
|
|
|
func (e *ErrConflict) Error() string {
|
|
return e.Resource + "exists " + e.meta + " " + e.err.Error()
|
|
}
|
|
|
|
func (e *ErrConflict) Unwrap() error {
|
|
return e.err
|
|
}
|
|
|
|
// ErrNotFound indicates that a resource was not found
|
|
type ErrNotFound struct {
|
|
resource string
|
|
Id string
|
|
}
|
|
|
|
func NewErrNotFound(resource, id string) *ErrNotFound {
|
|
return &ErrNotFound{
|
|
resource: resource,
|
|
Id: id,
|
|
}
|
|
}
|
|
|
|
func (e *ErrNotFound) Error() string {
|
|
return "resource: " + e.resource + " id: " + e.Id
|
|
}
|