IP: RC Code Review

This commit is contained in:
Unknown 2014-03-27 11:37:33 -04:00
parent c796ed3849
commit f470c241d6
9 changed files with 28 additions and 32 deletions

View file

@ -15,7 +15,7 @@ const (
AU_WRITABLE
)
// Access represents the accessibility of user and repository.
// Access represents the accessibility of user to repository.
type Access struct {
Id int64
UserName string `xorm:"unique(s)"`
@ -30,7 +30,7 @@ func AddAccess(access *Access) error {
return err
}
// HasAccess returns true if someone can read or write given repository.
// HasAccess returns true if someone can read or write to given repository.
func HasAccess(userName, repoName string, mode int) (bool, error) {
return orm.Get(&Access{
Id: 0,

View file

@ -23,7 +23,8 @@ const (
OP_PULL_REQUEST
)
// Action represents user operation type and information to the repository.
// Action represents user operation type and other information to repository.,
// it implemented interface base.Actioner so that can be used in template render.
type Action struct {
Id int64
UserId int64 // Receiver user id.
@ -57,7 +58,7 @@ func (a Action) GetContent() string {
return a.Content
}
// CommitRepoAction records action for commit repository.
// CommitRepoAction adds new action for committing repository.
func CommitRepoAction(userId int64, userName string,
repoId int64, repoName string, refName string, commits *base.PushCommits) error {
log.Trace("action.CommitRepoAction(start): %d/%s", userId, repoName)
@ -68,12 +69,13 @@ func CommitRepoAction(userId int64, userName string,
return err
}
if err = NotifyWatchers(userId, repoId, OP_COMMIT_REPO, userName, repoName, refName, string(bs)); err != nil {
if err = NotifyWatchers(&Action{ActUserId: userId, ActUserName: userName, OpType: OP_COMMIT_REPO,
Content: string(bs), RepoId: repoId, RepoName: repoName, RefName: refName}); err != nil {
log.Error("action.CommitRepoAction(notify watchers): %d/%s", userId, repoName)
return err
}
// Update repository last update time.
// Change repository bare status and update last updated time.
repo, err := GetRepositoryByName(userId, repoName)
if err != nil {
log.Error("action.CommitRepoAction(GetRepositoryByName): %d/%s", userId, repoName)

View file

@ -485,30 +485,21 @@ func GetWatches(repoId int64) ([]Watch, error) {
}
// NotifyWatchers creates batch of actions for every watcher.
func NotifyWatchers(userId, repoId int64, opType int, userName, repoName, refName, content string) error {
func NotifyWatchers(act *Action) error {
// Add feeds for user self and all watchers.
watches, err := GetWatches(repoId)
watches, err := GetWatches(act.RepoId)
if err != nil {
return errors.New("repo.NotifyWatchers(get watches): " + err.Error())
}
watches = append(watches, Watch{UserId: userId})
watches = append(watches, Watch{UserId: act.ActUserId})
for i := range watches {
if userId == watches[i].UserId && i > 0 {
if act.ActUserId == watches[i].UserId && i > 0 {
continue // Do not add twice in case author watches his/her repository.
}
_, err = orm.InsertOne(&Action{
UserId: watches[i].UserId,
ActUserId: userId,
ActUserName: userName,
OpType: opType,
Content: content,
RepoId: repoId,
RepoName: repoName,
RefName: refName,
})
if err != nil {
act.UserId = watches[i].UserId
if _, err = orm.InsertOne(act); err != nil {
return errors.New("repo.NotifyWatchers(create action): " + err.Error())
}
}