aboutsummaryrefslogtreecommitdiff
path: root/internal/db/repo.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/db/repo.go')
-rw-r--r--internal/db/repo.go85
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) {