|
@@ -30,7 +30,8 @@ var (
|
|
|
ErrRepoNotExist = errors.New("Repository does not exist")
|
|
|
ErrRepoFileNotExist = errors.New("Target Repo file does not exist")
|
|
|
ErrRepoNameIllegal = errors.New("Repository name contains illegal characters")
|
|
|
- ErrRepoFileNotLoaded = fmt.Errorf("repo file not loaded")
|
|
|
+ ErrRepoFileNotLoaded = errors.New("repo file not loaded")
|
|
|
+ ErrMirrorNotExist = errors.New("Mirror does not exist")
|
|
|
)
|
|
|
|
|
|
var (
|
|
@@ -130,6 +131,22 @@ type Mirror struct {
|
|
|
NextUpdate time.Time
|
|
|
}
|
|
|
|
|
|
+func GetMirror(repoId int64) (*Mirror, error) {
|
|
|
+ m := &Mirror{RepoId: repoId}
|
|
|
+ has, err := orm.Get(m)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ } else if !has {
|
|
|
+ return nil, ErrMirrorNotExist
|
|
|
+ }
|
|
|
+ return m, nil
|
|
|
+}
|
|
|
+
|
|
|
+func UpdateMirror(m *Mirror) error {
|
|
|
+ _, err := orm.Id(m.Id).Update(m)
|
|
|
+ return err
|
|
|
+}
|
|
|
+
|
|
|
// MirrorUpdate checks and updates mirror repositories.
|
|
|
func MirrorUpdate() {
|
|
|
if err := orm.Iterate(new(Mirror), func(idx int, bean interface{}) error {
|
|
@@ -149,8 +166,7 @@ func MirrorUpdate() {
|
|
|
}
|
|
|
|
|
|
m.NextUpdate = time.Now().Add(time.Duration(m.Interval) * time.Hour)
|
|
|
- _, err = orm.Id(m.Id).Update(m)
|
|
|
- return err
|
|
|
+ return UpdateMirror(m)
|
|
|
}); err != nil {
|
|
|
log.Error("repo.MirrorUpdate: %v", err)
|
|
|
}
|
|
@@ -647,6 +663,10 @@ func DeleteRepository(userId, repoId int64, userName string) (err error) {
|
|
|
sess.Rollback()
|
|
|
return err
|
|
|
}
|
|
|
+ if _, err = sess.Delete(&Mirror{RepoId: repoId}); err != nil {
|
|
|
+ sess.Rollback()
|
|
|
+ return err
|
|
|
+ }
|
|
|
|
|
|
rawSql := "UPDATE `user` SET num_repos = num_repos - 1 WHERE id = ?"
|
|
|
if _, err = sess.Exec(rawSql, userId); err != nil {
|