|
@@ -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
|
|
|
+}
|