aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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