summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUnknown <joe2010xtmf@163.com>2014-03-19 23:39:00 -0400
committerUnknown <joe2010xtmf@163.com>2014-03-19 23:39:00 -0400
commit59ea3c0413723521e7504fa5b1be2c3780cbb2ea (patch)
tree2c8ee0aa410e590f7ecadeec7f46ddedd4191a24
parenta922c3ff6a65d6d0550f36d866a301a6737ca8a2 (diff)
downloadgitea-59ea3c0413723521e7504fa5b1be2c3780cbb2ea.tar.gz
gitea-59ea3c0413723521e7504fa5b1be2c3780cbb2ea.zip
Finish watch backend
-rw-r--r--models/action.go31
-rw-r--r--models/repo.go8
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