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