diff options
Diffstat (limited to 'internal/db/repo.go')
-rw-r--r-- | internal/db/repo.go | 85 |
1 files changed, 31 insertions, 54 deletions
diff --git a/internal/db/repo.go b/internal/db/repo.go index 150942c1..66cecdd3 100644 --- a/internal/db/repo.go +++ b/internal/db/repo.go @@ -148,14 +148,14 @@ func NewRepoContext() { // Repository contains information of a repository. type Repository struct { ID int64 - OwnerID int64 `xorm:"UNIQUE(s)"` - Owner *User `xorm:"-" json:"-"` - LowerName string `xorm:"UNIQUE(s) INDEX NOT NULL"` - Name string `xorm:"INDEX NOT NULL"` - Description string `xorm:"VARCHAR(512)"` + OwnerID int64 `xorm:"UNIQUE(s)" gorm:"UNIQUE_INDEX:s"` + Owner *User `xorm:"-" gorm:"-" json:"-"` + LowerName string `xorm:"UNIQUE(s) INDEX NOT NULL" gorm:"UNIQUE_INDEX:s"` + Name string `xorm:"INDEX NOT NULL" gorm:"NOT NULL"` + Description string `xorm:"VARCHAR(512)" gorm:"TYPE:VARCHAR(512)"` Website string DefaultBranch string - Size int64 `xorm:"NOT NULL DEFAULT 0"` + Size int64 `xorm:"NOT NULL DEFAULT 0" gorm:"NOT NULL;DEFAULT:0"` UseCustomAvatar bool // Counters @@ -164,44 +164,44 @@ type Repository struct { NumForks int NumIssues int NumClosedIssues int - NumOpenIssues int `xorm:"-" json:"-"` + NumOpenIssues int `xorm:"-" gorm:"-" json:"-"` NumPulls int NumClosedPulls int - NumOpenPulls int `xorm:"-" json:"-"` - NumMilestones int `xorm:"NOT NULL DEFAULT 0"` - NumClosedMilestones int `xorm:"NOT NULL DEFAULT 0"` - NumOpenMilestones int `xorm:"-" json:"-"` - NumTags int `xorm:"-" json:"-"` + NumOpenPulls int `xorm:"-" gorm:"-" json:"-"` + NumMilestones int `xorm:"NOT NULL DEFAULT 0" gorm:"NOT NULL;DEFAULT:0"` + NumClosedMilestones int `xorm:"NOT NULL DEFAULT 0" gorm:"NOT NULL;DEFAULT:0"` + NumOpenMilestones int `xorm:"-" gorm:"-" json:"-"` + NumTags int `xorm:"-" gorm:"-" json:"-"` IsPrivate bool IsBare bool IsMirror bool - *Mirror `xorm:"-" json:"-"` + *Mirror `xorm:"-" gorm:"-" json:"-"` // Advanced settings - EnableWiki bool `xorm:"NOT NULL DEFAULT true"` + EnableWiki bool `xorm:"NOT NULL DEFAULT true" gorm:"NOT NULL;DEFAULT:TRUE"` AllowPublicWiki bool EnableExternalWiki bool ExternalWikiURL string - EnableIssues bool `xorm:"NOT NULL DEFAULT true"` + EnableIssues bool `xorm:"NOT NULL DEFAULT true" gorm:"NOT NULL;DEFAULT:TRUE"` AllowPublicIssues bool EnableExternalTracker bool ExternalTrackerURL string ExternalTrackerFormat string ExternalTrackerStyle string - ExternalMetas map[string]string `xorm:"-" json:"-"` - EnablePulls bool `xorm:"NOT NULL DEFAULT true"` - PullsIgnoreWhitespace bool `xorm:"NOT NULL DEFAULT false"` - PullsAllowRebase bool `xorm:"NOT NULL DEFAULT false"` + ExternalMetas map[string]string `xorm:"-" gorm:"-" json:"-"` + EnablePulls bool `xorm:"NOT NULL DEFAULT true" gorm:"NOT NULL;DEFAULT:TRUE"` + PullsIgnoreWhitespace bool `xorm:"NOT NULL DEFAULT false" gorm:"NOT NULL;DEFAULT:FALSE"` + PullsAllowRebase bool `xorm:"NOT NULL DEFAULT false" gorm:"NOT NULL;DEFAULT:FALSE"` - IsFork bool `xorm:"NOT NULL DEFAULT false"` + IsFork bool `xorm:"NOT NULL DEFAULT false" gorm:"NOT NULL;DEFAULT:FALSE"` ForkID int64 - BaseRepo *Repository `xorm:"-" json:"-"` + BaseRepo *Repository `xorm:"-" gorm:"-" json:"-"` - Created time.Time `xorm:"-" json:"-"` + Created time.Time `xorm:"-" gorm:"-" json:"-"` CreatedUnix int64 - Updated time.Time `xorm:"-" json:"-"` + Updated time.Time `xorm:"-" gorm:"-" json:"-"` UpdatedUnix int64 } @@ -210,10 +210,6 @@ func (repo *Repository) BeforeInsert() { repo.UpdatedUnix = repo.CreatedUnix } -func (repo *Repository) BeforeUpdate() { - repo.UpdatedUnix = time.Now().Unix() -} - func (repo *Repository) AfterSet(colName string, _ xorm.Cell) { switch colName { case "default_branch": @@ -1057,13 +1053,13 @@ var ( reservedRepoPatterns = []string{"*.git", "*.wiki"} ) -// IsUsableRepoName return an error if given name is a reserved name or pattern. -func IsUsableRepoName(name string) error { - return isUsableName(reservedRepoNames, reservedRepoPatterns, name) +// isRepoNameAllowed return an error if given name is a reserved name or pattern for repositories. +func isRepoNameAllowed(name string) error { + return isNameAllowed(reservedRepoNames, reservedRepoPatterns, name) } func createRepository(e *xorm.Session, doer, owner *User, repo *Repository) (err error) { - if err = IsUsableRepoName(repo.Name); err != nil { + if err = isRepoNameAllowed(repo.Name); err != nil { return err } @@ -1071,7 +1067,7 @@ func createRepository(e *xorm.Session, doer, owner *User, repo *Repository) (err if err != nil { return fmt.Errorf("IsRepositoryExist: %v", err) } else if has { - return ErrRepoAlreadyExist{owner.Name, repo.Name} + return ErrRepoAlreadyExist{args: errutil.Args{"ownerID": owner.ID, "name": repo.Name}} } if _, err = e.Insert(repo); err != nil { @@ -1266,7 +1262,7 @@ func TransferOwnership(doer *User, newOwnerName string, repo *Repository) error if err != nil { return fmt.Errorf("IsRepositoryExist: %v", err) } else if has { - return ErrRepoAlreadyExist{newOwnerName, repo.Name} + return ErrRepoAlreadyExist{args: errutil.Args{"ownerName": newOwnerName, "name": repo.Name}} } sess := x.NewSession() @@ -1384,7 +1380,7 @@ func deleteRepoLocalCopy(repo *Repository) { func ChangeRepositoryName(u *User, oldRepoName, newRepoName string) (err error) { oldRepoName = strings.ToLower(oldRepoName) newRepoName = strings.ToLower(newRepoName) - if err = IsUsableRepoName(newRepoName); err != nil { + if err = isRepoNameAllowed(newRepoName); err != nil { return err } @@ -1392,7 +1388,7 @@ func ChangeRepositoryName(u *User, oldRepoName, newRepoName string) (err error) if err != nil { return fmt.Errorf("IsRepositoryExist: %v", err) } else if has { - return ErrRepoAlreadyExist{u.Name, newRepoName} + return ErrRepoAlreadyExist{args: errutil.Args{"ownerID": u.ID, "name": newRepoName}} } repo, err := GetRepositoryByName(u.ID, oldRepoName) @@ -1647,25 +1643,6 @@ func GetRepositoryByRef(ref string) (*Repository, error) { return GetRepositoryByName(user.ID, repoName) } -var _ errutil.NotFound = (*ErrRepoNotExist)(nil) - -type ErrRepoNotExist struct { - args map[string]interface{} -} - -func IsErrRepoNotExist(err error) bool { - _, ok := err.(ErrRepoNotExist) - return ok -} - -func (err ErrRepoNotExist) Error() string { - return fmt.Sprintf("repository does not exist: %v", err.args) -} - -func (ErrRepoNotExist) NotFound() bool { - return true -} - // GetRepositoryByName returns the repository by given name under user if exists. // Deprecated: Use Repos.GetByName instead. func GetRepositoryByName(ownerID int64, name string) (*Repository, error) { |