diff options
author | Unknown <joe2010xtmf@163.com> | 2014-03-19 23:39:00 -0400 |
---|---|---|
committer | Unknown <joe2010xtmf@163.com> | 2014-03-19 23:39:00 -0400 |
commit | 59ea3c0413723521e7504fa5b1be2c3780cbb2ea (patch) | |
tree | 2c8ee0aa410e590f7ecadeec7f46ddedd4191a24 | |
parent | a922c3ff6a65d6d0550f36d866a301a6737ca8a2 (diff) | |
download | gitea-59ea3c0413723521e7504fa5b1be2c3780cbb2ea.tar.gz gitea-59ea3c0413723521e7504fa5b1be2c3780cbb2ea.zip |
Finish watch backend
-rw-r--r-- | models/action.go | 31 | ||||
-rw-r--r-- | models/repo.go | 8 |
2 files changed, 29 insertions, 10 deletions
diff --git a/models/action.go b/models/action.go index d388bca991..b3be093533 100644 --- a/models/action.go +++ b/models/action.go @@ -55,16 +55,27 @@ func CommitRepoAction(userId int64, userName string, if err != nil { return err } - _, err = orm.InsertOne(&Action{ - UserId: userId, - ActUserId: userId, - ActUserName: userName, - OpType: OP_COMMIT_REPO, - Content: string(bs), - RepoId: repoId, - RepoName: repoName, - }) - return err + + // Add feeds for user self and all watchers. + watches, err := GetWatches(repoId) + if err != nil { + return err + } + watches = append(watches, Watch{UserId: userId}) + + for i := range watches { + _, err = orm.InsertOne(&Action{ + UserId: watches[i].UserId, + ActUserId: userId, + ActUserName: userName, + OpType: OP_COMMIT_REPO, + Content: string(bs), + RepoId: repoId, + RepoName: repoName, + }) + return err + } + return nil } // NewRepoAction records action for create repository. diff --git a/models/repo.go b/models/repo.go index 187862fe27..fa6d97021b 100644 --- a/models/repo.go +++ b/models/repo.go @@ -50,6 +50,7 @@ type Watch struct { UserId int64 `xorm:"UNIQUE(watch)"` } +// Watch or unwatch repository. func WatchRepo(userId, repoId int64, watch bool) (err error) { if watch { _, err = orm.Insert(&Watch{RepoId: repoId, UserId: userId}) @@ -59,6 +60,13 @@ func WatchRepo(userId, repoId int64, watch bool) (err error) { return err } +// GetWatches returns all watches of given repository. +func GetWatches(repoId int64) ([]Watch, error) { + watches := make([]Watch, 0, 10) + err := orm.Find(&watches, &Watch{RepoId: repoId}) + return watches, err +} + var ( gitInitLocker = sync.Mutex{} LanguageIgns, Licenses []string |