From 6a75b1f7b37dead013f271936c274ac9506d7d41 Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 13 Mar 2014 01:01:22 -0400 Subject: Add create repo feeds --- models/action.go | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ models/models.go | 2 +- models/repo.go | 3 ++- models/user.go | 20 -------------------- 4 files changed, 59 insertions(+), 22 deletions(-) create mode 100644 models/action.go (limited to 'models') diff --git a/models/action.go b/models/action.go new file mode 100644 index 0000000000..cae093ecbe --- /dev/null +++ b/models/action.go @@ -0,0 +1,56 @@ +// Copyright 2014 The Gogs Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package models + +import ( + "encoding/json" + "time" +) + +// Operation types of user action. +const ( + OP_CREATE_REPO = iota + 1 + OP_DELETE_REPO + OP_STAR_REPO + OP_FOLLOW_REPO + OP_COMMIT_REPO + OP_PULL_REQUEST +) + +// An Action represents +type Action struct { + Id int64 + UserId int64 + OpType int + RepoId int64 + Content string + Created time.Time `xorm:"created"` +} + +type NewRepoContent struct { + UserName string + RepoName string +} + +// NewRepoAction inserts action for create repository. +func NewRepoAction(user *User, repo *Repository) error { + content, err := json.Marshal(&NewRepoContent{user.Name, repo.Name}) + if err != nil { + return err + } + _, err = orm.InsertOne(&Action{ + UserId: user.Id, + OpType: OP_CREATE_REPO, + RepoId: repo.Id, + Content: string(content), + }) + return err +} + +func GetFeeds(userid, offset int64) ([]Action, error) { + actions := make([]Action, 0, 20) + err := orm.Limit(20, int(offset)).Desc("id").Where("user_id=?", userid).Find(&actions) + return actions, err +} diff --git a/models/models.go b/models/models.go index 413775f58b..7c28dc5422 100644 --- a/models/models.go +++ b/models/models.go @@ -92,7 +92,7 @@ func setEngine() { func init() { setEngine() - err := orm.Sync(new(User), new(PublicKey), new(Repository), new(Access)) + err := orm.Sync(new(User), new(PublicKey), new(Repository), new(Access), new(Action)) if err != nil { fmt.Printf("sync database struct error: %s\n", err) os.Exit(2) diff --git a/models/repo.go b/models/repo.go index c790dc90a6..6387090ed0 100644 --- a/models/repo.go +++ b/models/repo.go @@ -137,7 +137,8 @@ func CreateRepository(user *User, repoName, desc, repoLang, license string, priv } return nil, err } - return repo, nil + + return repo, NewRepoAction(user, repo) } // InitRepository initializes README and .gitignore if needed. diff --git a/models/user.go b/models/user.go index 8fa2e44e00..c59e4ae152 100644 --- a/models/user.go +++ b/models/user.go @@ -61,26 +61,6 @@ type Follow struct { Created time.Time `xorm:"created"` } -// Operation types of repository. -const ( - OP_CREATE_REPO = iota + 1 - OP_DELETE_REPO - OP_STAR_REPO - OP_FOLLOW_REPO - OP_COMMIT_REPO - OP_PULL_REQUEST -) - -// An Action represents -type Action struct { - Id int64 - UserId int64 - OpType int - RepoId int64 - Content string - Created time.Time `xorm:"created"` -} - var ( ErrUserOwnRepos = errors.New("User still have ownership of repositories") ErrUserAlreadyExist = errors.New("User already exist") -- cgit v1.2.3