Pārlūkot izejas kodu

Finish watch backend

Unknown 11 gadi atpakaļ
vecāks
revīzija
59ea3c0413
2 mainītis faili ar 29 papildinājumiem un 10 dzēšanām
  1. 21 10
      models/action.go
  2. 8 0
      models/repo.go

+ 21 - 10
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.

+ 8 - 0
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