mirror of https://github.com/usememos/memos
chore: update common utils (#1908)
parent
a7573d5705
commit
0e05c62a3b
Binary file not shown.
Before Width: | Height: | Size: 374 KiB |
@ -1,72 +0,0 @@
|
|||||||
package common
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Code is the error code.
|
|
||||||
type Code int
|
|
||||||
|
|
||||||
// Application error codes.
|
|
||||||
const (
|
|
||||||
// 0 ~ 99 general error.
|
|
||||||
Ok Code = 0
|
|
||||||
Internal Code = 1
|
|
||||||
NotAuthorized Code = 2
|
|
||||||
Invalid Code = 3
|
|
||||||
NotFound Code = 4
|
|
||||||
Conflict Code = 5
|
|
||||||
NotImplemented Code = 6
|
|
||||||
)
|
|
||||||
|
|
||||||
// Error represents an application-specific error. Application errors can be
|
|
||||||
// unwrapped by the caller to extract out the code & message.
|
|
||||||
//
|
|
||||||
// Any non-application error (such as a disk error) should be reported as an
|
|
||||||
// Internal error and the human user should only see "Internal error" as the
|
|
||||||
// message. These low-level internal error details should only be logged and
|
|
||||||
// reported to the operator of the application (not the end user).
|
|
||||||
type Error struct {
|
|
||||||
// Machine-readable error code.
|
|
||||||
Code Code
|
|
||||||
|
|
||||||
// Embedded error.
|
|
||||||
Err error
|
|
||||||
}
|
|
||||||
|
|
||||||
// Error implements the error interface. Not used by the application otherwise.
|
|
||||||
func (e *Error) Error() string {
|
|
||||||
return e.Err.Error()
|
|
||||||
}
|
|
||||||
|
|
||||||
// ErrorCode unwraps an application error and returns its code.
|
|
||||||
// Non-application errors always return EINTERNAL.
|
|
||||||
func ErrorCode(err error) Code {
|
|
||||||
var e *Error
|
|
||||||
if err == nil {
|
|
||||||
return Ok
|
|
||||||
} else if errors.As(err, &e) {
|
|
||||||
return e.Code
|
|
||||||
}
|
|
||||||
return Internal
|
|
||||||
}
|
|
||||||
|
|
||||||
// ErrorMessage unwraps an application error and returns its message.
|
|
||||||
// Non-application errors always return "Internal error".
|
|
||||||
func ErrorMessage(err error) string {
|
|
||||||
var e *Error
|
|
||||||
if err == nil {
|
|
||||||
return ""
|
|
||||||
} else if errors.As(err, &e) {
|
|
||||||
return e.Err.Error()
|
|
||||||
}
|
|
||||||
return "Internal error."
|
|
||||||
}
|
|
||||||
|
|
||||||
// Errorf is a helper function to return an Error with a given code and error.
|
|
||||||
func Errorf(code Code, err error) *Error {
|
|
||||||
return &Error{
|
|
||||||
Code: code,
|
|
||||||
Err: err,
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,4 +1,4 @@
|
|||||||
package common
|
package util
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/rand"
|
"crypto/rand"
|
@ -1,4 +1,4 @@
|
|||||||
package common
|
package util
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
@ -1,19 +0,0 @@
|
|||||||
package store
|
|
||||||
|
|
||||||
import (
|
|
||||||
"database/sql"
|
|
||||||
"errors"
|
|
||||||
)
|
|
||||||
|
|
||||||
func FormatError(err error) error {
|
|
||||||
if err == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
switch err {
|
|
||||||
case sql.ErrNoRows:
|
|
||||||
return errors.New("data not found")
|
|
||||||
default:
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue