mirror of https://github.com/gogits/gogs.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
666 lines
17 KiB
666 lines
17 KiB
// Copyright 2015 The Gogs Authors. All rights reserved. |
|
// Use of this source code is governed by a MIT-style |
|
// license that can be found in the LICENSE file. |
|
|
|
package models |
|
|
|
import ( |
|
"fmt" |
|
) |
|
|
|
type ErrNameReserved struct { |
|
Name string |
|
} |
|
|
|
func IsErrNameReserved(err error) bool { |
|
_, ok := err.(ErrNameReserved) |
|
return ok |
|
} |
|
|
|
func (err ErrNameReserved) Error() string { |
|
return fmt.Sprintf("name is reserved [name: %s]", err.Name) |
|
} |
|
|
|
type ErrNamePatternNotAllowed struct { |
|
Pattern string |
|
} |
|
|
|
func IsErrNamePatternNotAllowed(err error) bool { |
|
_, ok := err.(ErrNamePatternNotAllowed) |
|
return ok |
|
} |
|
|
|
func (err ErrNamePatternNotAllowed) Error() string { |
|
return fmt.Sprintf("name pattern is not allowed [pattern: %s]", err.Pattern) |
|
} |
|
|
|
// ____ ___ |
|
// | | \______ ___________ |
|
// | | / ___// __ \_ __ \ |
|
// | | /\___ \\ ___/| | \/ |
|
// |______//____ >\___ >__| |
|
// \/ \/ |
|
|
|
type ErrUserAlreadyExist struct { |
|
Name string |
|
} |
|
|
|
func IsErrUserAlreadyExist(err error) bool { |
|
_, ok := err.(ErrUserAlreadyExist) |
|
return ok |
|
} |
|
|
|
func (err ErrUserAlreadyExist) Error() string { |
|
return fmt.Sprintf("user already exists [name: %s]", err.Name) |
|
} |
|
|
|
type ErrUserNotExist struct { |
|
UID int64 |
|
Name string |
|
} |
|
|
|
func IsErrUserNotExist(err error) bool { |
|
_, ok := err.(ErrUserNotExist) |
|
return ok |
|
} |
|
|
|
func (err ErrUserNotExist) Error() string { |
|
return fmt.Sprintf("user does not exist [uid: %d, name: %s]", err.UID, err.Name) |
|
} |
|
|
|
type ErrEmailAlreadyUsed struct { |
|
Email string |
|
} |
|
|
|
func IsErrEmailAlreadyUsed(err error) bool { |
|
_, ok := err.(ErrEmailAlreadyUsed) |
|
return ok |
|
} |
|
|
|
func (err ErrEmailAlreadyUsed) Error() string { |
|
return fmt.Sprintf("e-mail has been used [email: %s]", err.Email) |
|
} |
|
|
|
type ErrUserOwnRepos struct { |
|
UID int64 |
|
} |
|
|
|
func IsErrUserOwnRepos(err error) bool { |
|
_, ok := err.(ErrUserOwnRepos) |
|
return ok |
|
} |
|
|
|
func (err ErrUserOwnRepos) Error() string { |
|
return fmt.Sprintf("user still has ownership of repositories [uid: %d]", err.UID) |
|
} |
|
|
|
type ErrUserHasOrgs struct { |
|
UID int64 |
|
} |
|
|
|
func IsErrUserHasOrgs(err error) bool { |
|
_, ok := err.(ErrUserHasOrgs) |
|
return ok |
|
} |
|
|
|
func (err ErrUserHasOrgs) Error() string { |
|
return fmt.Sprintf("user still has membership of organizations [uid: %d]", err.UID) |
|
} |
|
|
|
type ErrReachLimitOfRepo struct { |
|
Limit int |
|
} |
|
|
|
func IsErrReachLimitOfRepo(err error) bool { |
|
_, ok := err.(ErrReachLimitOfRepo) |
|
return ok |
|
} |
|
|
|
func (err ErrReachLimitOfRepo) Error() string { |
|
return fmt.Sprintf("user has reached maximum limit of repositories [limit: %d]", err.Limit) |
|
} |
|
|
|
// __ __.__ __ .__ |
|
// / \ / \__| | _|__| |
|
// \ \/\/ / | |/ / | |
|
// \ /| | <| | |
|
// \__/\ / |__|__|_ \__| |
|
// \/ \/ |
|
|
|
type ErrWikiAlreadyExist struct { |
|
Title string |
|
} |
|
|
|
func IsErrWikiAlreadyExist(err error) bool { |
|
_, ok := err.(ErrWikiAlreadyExist) |
|
return ok |
|
} |
|
|
|
func (err ErrWikiAlreadyExist) Error() string { |
|
return fmt.Sprintf("wiki page already exists [title: %s]", err.Title) |
|
} |
|
|
|
// __________ ___. .__ .__ ____ __. |
|
// \______ \__ _\_ |__ | | |__| ____ | |/ _|____ ___.__. |
|
// | ___/ | \ __ \| | | |/ ___\ | <_/ __ < | | |
|
// | | | | / \_\ \ |_| \ \___ | | \ ___/\___ | |
|
// |____| |____/|___ /____/__|\___ > |____|__ \___ > ____| |
|
// \/ \/ \/ \/\/ |
|
|
|
type ErrKeyUnableVerify struct { |
|
Result string |
|
} |
|
|
|
func IsErrKeyUnableVerify(err error) bool { |
|
_, ok := err.(ErrKeyUnableVerify) |
|
return ok |
|
} |
|
|
|
func (err ErrKeyUnableVerify) Error() string { |
|
return fmt.Sprintf("Unable to verify key content [result: %s]", err.Result) |
|
} |
|
|
|
type ErrKeyNotExist struct { |
|
ID int64 |
|
} |
|
|
|
func IsErrKeyNotExist(err error) bool { |
|
_, ok := err.(ErrKeyNotExist) |
|
return ok |
|
} |
|
|
|
func (err ErrKeyNotExist) Error() string { |
|
return fmt.Sprintf("public key does not exist [id: %d]", err.ID) |
|
} |
|
|
|
type ErrKeyAlreadyExist struct { |
|
OwnerID int64 |
|
Content string |
|
} |
|
|
|
func IsErrKeyAlreadyExist(err error) bool { |
|
_, ok := err.(ErrKeyAlreadyExist) |
|
return ok |
|
} |
|
|
|
func (err ErrKeyAlreadyExist) Error() string { |
|
return fmt.Sprintf("public key already exists [owner_id: %d, content: %s]", err.OwnerID, err.Content) |
|
} |
|
|
|
type ErrKeyNameAlreadyUsed struct { |
|
OwnerID int64 |
|
Name string |
|
} |
|
|
|
func IsErrKeyNameAlreadyUsed(err error) bool { |
|
_, ok := err.(ErrKeyNameAlreadyUsed) |
|
return ok |
|
} |
|
|
|
func (err ErrKeyNameAlreadyUsed) Error() string { |
|
return fmt.Sprintf("public key already exists [owner_id: %d, name: %s]", err.OwnerID, err.Name) |
|
} |
|
|
|
type ErrKeyAccessDenied struct { |
|
UserID int64 |
|
KeyID int64 |
|
Note string |
|
} |
|
|
|
func IsErrKeyAccessDenied(err error) bool { |
|
_, ok := err.(ErrKeyAccessDenied) |
|
return ok |
|
} |
|
|
|
func (err ErrKeyAccessDenied) Error() string { |
|
return fmt.Sprintf("user does not have access to the key [user_id: %d, key_id: %d, note: %s]", |
|
err.UserID, err.KeyID, err.Note) |
|
} |
|
|
|
type ErrDeployKeyNotExist struct { |
|
ID int64 |
|
KeyID int64 |
|
RepoID int64 |
|
} |
|
|
|
func IsErrDeployKeyNotExist(err error) bool { |
|
_, ok := err.(ErrDeployKeyNotExist) |
|
return ok |
|
} |
|
|
|
func (err ErrDeployKeyNotExist) Error() string { |
|
return fmt.Sprintf("Deploy key does not exist [id: %d, key_id: %d, repo_id: %d]", err.ID, err.KeyID, err.RepoID) |
|
} |
|
|
|
type ErrDeployKeyAlreadyExist struct { |
|
KeyID int64 |
|
RepoID int64 |
|
} |
|
|
|
func IsErrDeployKeyAlreadyExist(err error) bool { |
|
_, ok := err.(ErrDeployKeyAlreadyExist) |
|
return ok |
|
} |
|
|
|
func (err ErrDeployKeyAlreadyExist) Error() string { |
|
return fmt.Sprintf("public key already exists [key_id: %d, repo_id: %d]", err.KeyID, err.RepoID) |
|
} |
|
|
|
type ErrDeployKeyNameAlreadyUsed struct { |
|
RepoID int64 |
|
Name string |
|
} |
|
|
|
func IsErrDeployKeyNameAlreadyUsed(err error) bool { |
|
_, ok := err.(ErrDeployKeyNameAlreadyUsed) |
|
return ok |
|
} |
|
|
|
func (err ErrDeployKeyNameAlreadyUsed) Error() string { |
|
return fmt.Sprintf("public key already exists [repo_id: %d, name: %s]", err.RepoID, err.Name) |
|
} |
|
|
|
// _____ ___________ __ |
|
// / _ \ ____ ____ ____ ______ _____\__ ___/___ | | __ ____ ____ |
|
// / /_\ \_/ ___\/ ___\/ __ \ / ___// ___/ | | / _ \| |/ // __ \ / \ |
|
// / | \ \__\ \__\ ___/ \___ \ \___ \ | |( <_> ) <\ ___/| | \ |
|
// \____|__ /\___ >___ >___ >____ >____ > |____| \____/|__|_ \\___ >___| / |
|
// \/ \/ \/ \/ \/ \/ \/ \/ \/ |
|
|
|
type ErrAccessTokenNotExist struct { |
|
SHA string |
|
} |
|
|
|
func IsErrAccessTokenNotExist(err error) bool { |
|
_, ok := err.(ErrAccessTokenNotExist) |
|
return ok |
|
} |
|
|
|
func (err ErrAccessTokenNotExist) Error() string { |
|
return fmt.Sprintf("access token does not exist [sha: %s]", err.SHA) |
|
} |
|
|
|
type ErrAccessTokenEmpty struct { |
|
} |
|
|
|
func IsErrAccessTokenEmpty(err error) bool { |
|
_, ok := err.(ErrAccessTokenEmpty) |
|
return ok |
|
} |
|
|
|
func (err ErrAccessTokenEmpty) Error() string { |
|
return fmt.Sprintf("access token is empty") |
|
} |
|
|
|
// ________ .__ __ .__ |
|
// \_____ \_______ _________ ____ |__|____________ _/ |_|__| ____ ____ |
|
// / | \_ __ \/ ___\__ \ / \| \___ /\__ \\ __\ |/ _ \ / \ |
|
// / | \ | \/ /_/ > __ \| | \ |/ / / __ \| | | ( <_> ) | \ |
|
// \_______ /__| \___ (____ /___| /__/_____ \(____ /__| |__|\____/|___| / |
|
// \/ /_____/ \/ \/ \/ \/ \/ |
|
|
|
type ErrLastOrgOwner struct { |
|
UID int64 |
|
} |
|
|
|
func IsErrLastOrgOwner(err error) bool { |
|
_, ok := err.(ErrLastOrgOwner) |
|
return ok |
|
} |
|
|
|
func (err ErrLastOrgOwner) Error() string { |
|
return fmt.Sprintf("user is the last member of owner team [uid: %d]", err.UID) |
|
} |
|
|
|
// __________ .__ __ |
|
// \______ \ ____ ______ ____ _____|__|/ |_ ___________ ___.__. |
|
// | _// __ \\____ \ / _ \/ ___/ \ __\/ _ \_ __ < | | |
|
// | | \ ___/| |_> > <_> )___ \| || | ( <_> ) | \/\___ | |
|
// |____|_ /\___ > __/ \____/____ >__||__| \____/|__| / ____| |
|
// \/ \/|__| \/ \/ |
|
|
|
type ErrRepoNotExist struct { |
|
ID int64 |
|
UID int64 |
|
Name string |
|
} |
|
|
|
func IsErrRepoNotExist(err error) bool { |
|
_, ok := err.(ErrRepoNotExist) |
|
return ok |
|
} |
|
|
|
func (err ErrRepoNotExist) Error() string { |
|
return fmt.Sprintf("repository does not exist [id: %d, uid: %d, name: %s]", err.ID, err.UID, err.Name) |
|
} |
|
|
|
type ErrRepoAlreadyExist struct { |
|
Uname string |
|
Name string |
|
} |
|
|
|
func IsErrRepoAlreadyExist(err error) bool { |
|
_, ok := err.(ErrRepoAlreadyExist) |
|
return ok |
|
} |
|
|
|
func (err ErrRepoAlreadyExist) Error() string { |
|
return fmt.Sprintf("repository already exists [uname: %s, name: %s]", err.Uname, err.Name) |
|
} |
|
|
|
type ErrInvalidCloneAddr struct { |
|
IsURLError bool |
|
IsInvalidPath bool |
|
IsPermissionDenied bool |
|
} |
|
|
|
func IsErrInvalidCloneAddr(err error) bool { |
|
_, ok := err.(ErrInvalidCloneAddr) |
|
return ok |
|
} |
|
|
|
func (err ErrInvalidCloneAddr) Error() string { |
|
return fmt.Sprintf("invalid clone address [is_url_error: %v, is_invalid_path: %v, is_permission_denied: %v]", |
|
err.IsURLError, err.IsInvalidPath, err.IsPermissionDenied) |
|
} |
|
|
|
type ErrUpdateTaskNotExist struct { |
|
UUID string |
|
} |
|
|
|
func IsErrUpdateTaskNotExist(err error) bool { |
|
_, ok := err.(ErrUpdateTaskNotExist) |
|
return ok |
|
} |
|
|
|
func (err ErrUpdateTaskNotExist) Error() string { |
|
return fmt.Sprintf("update task does not exist [uuid: %s]", err.UUID) |
|
} |
|
|
|
type ErrReleaseAlreadyExist struct { |
|
TagName string |
|
} |
|
|
|
func IsErrReleaseAlreadyExist(err error) bool { |
|
_, ok := err.(ErrReleaseAlreadyExist) |
|
return ok |
|
} |
|
|
|
func (err ErrReleaseAlreadyExist) Error() string { |
|
return fmt.Sprintf("release tag already exist [tag_name: %s]", err.TagName) |
|
} |
|
|
|
type ErrReleaseNotExist struct { |
|
ID int64 |
|
TagName string |
|
} |
|
|
|
func IsErrReleaseNotExist(err error) bool { |
|
_, ok := err.(ErrReleaseNotExist) |
|
return ok |
|
} |
|
|
|
func (err ErrReleaseNotExist) Error() string { |
|
return fmt.Sprintf("release tag does not exist [id: %d, tag_name: %s]", err.ID, err.TagName) |
|
} |
|
|
|
type ErrInvalidTagName struct { |
|
TagName string |
|
} |
|
|
|
func IsErrInvalidTagName(err error) bool { |
|
_, ok := err.(ErrInvalidTagName) |
|
return ok |
|
} |
|
|
|
func (err ErrInvalidTagName) Error() string { |
|
return fmt.Sprintf("release tag name is not valid [tag_name: %s]", err.TagName) |
|
} |
|
|
|
type ErrRepoFileAlreadyExist struct { |
|
FileName string |
|
} |
|
|
|
func IsErrRepoFileAlreadyExist(err error) bool { |
|
_, ok := err.(ErrRepoFileAlreadyExist) |
|
return ok |
|
} |
|
|
|
func (err ErrRepoFileAlreadyExist) Error() string { |
|
return fmt.Sprintf("repository file already exists [file_name: %s]", err.FileName) |
|
} |
|
|
|
// __________ .__ |
|
// \______ \____________ ____ ____ | |__ |
|
// | | _/\_ __ \__ \ / \_/ ___\| | \ |
|
// | | \ | | \// __ \| | \ \___| Y \ |
|
// |______ / |__| (____ /___| /\___ >___| / |
|
// \/ \/ \/ \/ \/ |
|
|
|
type ErrBranchNotExist struct { |
|
Name string |
|
} |
|
|
|
func IsErrBranchNotExist(err error) bool { |
|
_, ok := err.(ErrBranchNotExist) |
|
return ok |
|
} |
|
|
|
func (err ErrBranchNotExist) Error() string { |
|
return fmt.Sprintf("branch does not exist [name: %s]", err.Name) |
|
} |
|
|
|
// __ __ ___. .__ __ |
|
// / \ / \ ____\_ |__ | |__ ____ ____ | | __ |
|
// \ \/\/ // __ \| __ \| | \ / _ \ / _ \| |/ / |
|
// \ /\ ___/| \_\ \ Y ( <_> | <_> ) < |
|
// \__/\ / \___ >___ /___| /\____/ \____/|__|_ \ |
|
// \/ \/ \/ \/ \/ |
|
|
|
type ErrWebhookNotExist struct { |
|
ID int64 |
|
} |
|
|
|
func IsErrWebhookNotExist(err error) bool { |
|
_, ok := err.(ErrWebhookNotExist) |
|
return ok |
|
} |
|
|
|
func (err ErrWebhookNotExist) Error() string { |
|
return fmt.Sprintf("webhook does not exist [id: %d]", err.ID) |
|
} |
|
|
|
// .___ |
|
// | | ______ ________ __ ____ |
|
// | |/ ___// ___/ | \_/ __ \ |
|
// | |\___ \ \___ \| | /\ ___/ |
|
// |___/____ >____ >____/ \___ > |
|
// \/ \/ \/ |
|
|
|
type ErrIssueNotExist struct { |
|
ID int64 |
|
RepoID int64 |
|
Index int64 |
|
} |
|
|
|
func IsErrIssueNotExist(err error) bool { |
|
_, ok := err.(ErrIssueNotExist) |
|
return ok |
|
} |
|
|
|
func (err ErrIssueNotExist) Error() string { |
|
return fmt.Sprintf("issue does not exist [id: %d, repo_id: %d, index: %d]", err.ID, err.RepoID, err.Index) |
|
} |
|
|
|
// __________ .__ .__ __________ __ |
|
// \______ \__ __| | | |\______ \ ____ ________ __ ____ _______/ |_ |
|
// | ___/ | \ | | | | _// __ \/ ____/ | \_/ __ \ / ___/\ __\ |
|
// | | | | / |_| |_| | \ ___< <_| | | /\ ___/ \___ \ | | |
|
// |____| |____/|____/____/____|_ /\___ >__ |____/ \___ >____ > |__| |
|
// \/ \/ |__| \/ \/ |
|
|
|
type ErrPullRequestNotExist struct { |
|
ID int64 |
|
IssueID int64 |
|
HeadRepoID int64 |
|
BaseRepoID int64 |
|
HeadBarcnh string |
|
BaseBranch string |
|
} |
|
|
|
func IsErrPullRequestNotExist(err error) bool { |
|
_, ok := err.(ErrPullRequestNotExist) |
|
return ok |
|
} |
|
|
|
func (err ErrPullRequestNotExist) Error() string { |
|
return fmt.Sprintf("pull request does not exist [id: %d, issue_id: %d, head_repo_id: %d, base_repo_id: %d, head_branch: %s, base_branch: %s]", |
|
err.ID, err.IssueID, err.HeadRepoID, err.BaseRepoID, err.HeadBarcnh, err.BaseBranch) |
|
} |
|
|
|
// _________ __ |
|
// \_ ___ \ ____ _____ _____ ____ _____/ |_ |
|
// / \ \/ / _ \ / \ / \_/ __ \ / \ __\ |
|
// \ \___( <_> ) Y Y \ Y Y \ ___/| | \ | |
|
// \______ /\____/|__|_| /__|_| /\___ >___| /__| |
|
// \/ \/ \/ \/ \/ |
|
|
|
type ErrCommentNotExist struct { |
|
ID int64 |
|
IssueID int64 |
|
} |
|
|
|
func IsErrCommentNotExist(err error) bool { |
|
_, ok := err.(ErrCommentNotExist) |
|
return ok |
|
} |
|
|
|
func (err ErrCommentNotExist) Error() string { |
|
return fmt.Sprintf("comment does not exist [id: %d, issue_id: %d]", err.ID, err.IssueID) |
|
} |
|
|
|
// .____ ___. .__ |
|
// | | _____ \_ |__ ____ | | |
|
// | | \__ \ | __ \_/ __ \| | |
|
// | |___ / __ \| \_\ \ ___/| |__ |
|
// |_______ (____ /___ /\___ >____/ |
|
// \/ \/ \/ \/ |
|
|
|
type ErrLabelNotExist struct { |
|
LabelID int64 |
|
RepoID int64 |
|
} |
|
|
|
func IsErrLabelNotExist(err error) bool { |
|
_, ok := err.(ErrLabelNotExist) |
|
return ok |
|
} |
|
|
|
func (err ErrLabelNotExist) Error() string { |
|
return fmt.Sprintf("label does not exist [label_id: %d, repo_id: %d]", err.LabelID, err.RepoID) |
|
} |
|
|
|
// _____ .__.__ __ |
|
// / \ |__| | ____ _______/ |_ ____ ____ ____ |
|
// / \ / \| | | _/ __ \ / ___/\ __\/ _ \ / \_/ __ \ |
|
// / Y \ | |_\ ___/ \___ \ | | ( <_> ) | \ ___/ |
|
// \____|__ /__|____/\___ >____ > |__| \____/|___| /\___ > |
|
// \/ \/ \/ \/ \/ |
|
|
|
type ErrMilestoneNotExist struct { |
|
ID int64 |
|
RepoID int64 |
|
} |
|
|
|
func IsErrMilestoneNotExist(err error) bool { |
|
_, ok := err.(ErrMilestoneNotExist) |
|
return ok |
|
} |
|
|
|
func (err ErrMilestoneNotExist) Error() string { |
|
return fmt.Sprintf("milestone does not exist [id: %d, repo_id: %d]", err.ID, err.RepoID) |
|
} |
|
|
|
// _____ __ __ .__ __ |
|
// / _ \_/ |__/ |______ ____ | |__ _____ ____ _____/ |_ |
|
// / /_\ \ __\ __\__ \ _/ ___\| | \ / \_/ __ \ / \ __\ |
|
// / | \ | | | / __ \\ \___| Y \ Y Y \ ___/| | \ | |
|
// \____|__ /__| |__| (____ /\___ >___| /__|_| /\___ >___| /__| |
|
// \/ \/ \/ \/ \/ \/ \/ |
|
|
|
type ErrAttachmentNotExist struct { |
|
ID int64 |
|
UUID string |
|
} |
|
|
|
func IsErrAttachmentNotExist(err error) bool { |
|
_, ok := err.(ErrAttachmentNotExist) |
|
return ok |
|
} |
|
|
|
func (err ErrAttachmentNotExist) Error() string { |
|
return fmt.Sprintf("attachment does not exist [id: %d, uuid: %s]", err.ID, err.UUID) |
|
} |
|
|
|
// _____ __ .__ __ .__ __ .__ |
|
// / _ \ __ ___/ |_| |__ ____ _____/ |_|__| ____ _____ _/ |_|__| ____ ____ |
|
// / /_\ \| | \ __\ | \_/ __ \ / \ __\ |/ ___\\__ \\ __\ |/ _ \ / \ |
|
// / | \ | /| | | Y \ ___/| | \ | | \ \___ / __ \| | | ( <_> ) | \ |
|
// \____|__ /____/ |__| |___| /\___ >___| /__| |__|\___ >____ /__| |__|\____/|___| / |
|
// \/ \/ \/ \/ \/ \/ \/ |
|
|
|
type ErrAuthenticationNotExist struct { |
|
ID int64 |
|
} |
|
|
|
func IsErrAuthenticationNotExist(err error) bool { |
|
_, ok := err.(ErrAuthenticationNotExist) |
|
return ok |
|
} |
|
|
|
func (err ErrAuthenticationNotExist) Error() string { |
|
return fmt.Sprintf("authentication does not exist [id: %d]", err.ID) |
|
} |
|
|
|
// ___________ |
|
// \__ ___/___ _____ _____ |
|
// | |_/ __ \\__ \ / \ |
|
// | |\ ___/ / __ \| Y Y \ |
|
// |____| \___ >____ /__|_| / |
|
// \/ \/ \/ |
|
|
|
type ErrTeamAlreadyExist struct { |
|
OrgID int64 |
|
Name string |
|
} |
|
|
|
func IsErrTeamAlreadyExist(err error) bool { |
|
_, ok := err.(ErrTeamAlreadyExist) |
|
return ok |
|
} |
|
|
|
func (err ErrTeamAlreadyExist) Error() string { |
|
return fmt.Sprintf("team already exists [org_id: %d, name: %s]", err.OrgID, err.Name) |
|
} |
|
|
|
// ____ ___ .__ .___ |
|
// | | \______ | | _________ __| _/ |
|
// | | /\____ \| | / _ \__ \ / __ | |
|
// | | / | |_> > |_( <_> ) __ \_/ /_/ | |
|
// |______/ | __/|____/\____(____ /\____ | |
|
// |__| \/ \/ |
|
// |
|
|
|
type ErrUploadNotExist struct { |
|
ID int64 |
|
UUID string |
|
} |
|
|
|
func IsErrUploadNotExist(err error) bool { |
|
_, ok := err.(ErrAttachmentNotExist) |
|
return ok |
|
} |
|
|
|
func (err ErrUploadNotExist) Error() string { |
|
return fmt.Sprintf("attachment does not exist [id: %d, uuid: %s]", err.ID, err.UUID) |
|
}
|
|
|