summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorUnknown <joe2010xtmf@163.com>2014-03-13 01:01:22 -0400
committerUnknown <joe2010xtmf@163.com>2014-03-13 01:01:22 -0400
commit6a75b1f7b37dead013f271936c274ac9506d7d41 (patch)
treebf2c36cdd79df43b2b476fb3592980d093c9392a /models
parent9b845c11150102894a8bb453d86a335a7c2a64b8 (diff)
downloadgitea-6a75b1f7b37dead013f271936c274ac9506d7d41.tar.gz
gitea-6a75b1f7b37dead013f271936c274ac9506d7d41.zip
Add create repo feeds
Diffstat (limited to 'models')
-rw-r--r--models/action.go56
-rw-r--r--models/models.go2
-rw-r--r--models/repo.go3
-rw-r--r--models/user.go20
4 files changed, 59 insertions, 22 deletions
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")