2015-09-30 01:21:17 +00:00
|
|
|
package model
|
2015-04-07 08:20:55 +00:00
|
|
|
|
2015-09-30 01:21:17 +00:00
|
|
|
import (
|
|
|
|
"github.com/drone/drone/shared/database"
|
|
|
|
"github.com/russross/meddler"
|
|
|
|
)
|
2015-04-07 08:20:55 +00:00
|
|
|
|
2015-05-11 07:45:31 +00:00
|
|
|
type RepoLite struct {
|
2015-08-11 08:36:07 +00:00
|
|
|
Owner string `json:"owner"`
|
|
|
|
Name string `json:"name"`
|
|
|
|
FullName string `json:"full_name"`
|
2015-09-30 01:21:17 +00:00
|
|
|
Avatar string `json:"avatar_url"`
|
2015-04-07 08:20:55 +00:00
|
|
|
}
|
|
|
|
|
2015-09-30 01:21:17 +00:00
|
|
|
type Repo struct {
|
|
|
|
ID int64 `json:"id" meddler:"repo_id,pk"`
|
|
|
|
UserID int64 `json:"-" meddler:"repo_user_id"`
|
|
|
|
Owner string `json:"owner" meddler:"repo_owner"`
|
|
|
|
Name string `json:"name" meddler:"repo_name"`
|
|
|
|
FullName string `json:"full_name" meddler:"repo_full_name"`
|
|
|
|
Avatar string `json:"avatar_url" meddler:"repo_avatar"`
|
|
|
|
Link string `json:"link_url" meddler:"repo_link"`
|
|
|
|
Clone string `json:"clone_url" meddler:"repo_clone"`
|
|
|
|
Branch string `json:"default_branch" meddler:"repo_branch"`
|
|
|
|
Timeout int64 `json:"timeout" meddler:"repo_timeout"`
|
|
|
|
IsPrivate bool `json:"private" meddler:"repo_private"`
|
|
|
|
IsTrusted bool `json:"trusted" meddler:"repo_trusted"`
|
|
|
|
IsStarred bool `json:"starred,omitempty" meddler:"-"`
|
|
|
|
AllowPull bool `json:"allow_pr" meddler:"repo_allow_pr"`
|
|
|
|
AllowPush bool `json:"allow_push" meddler:"repo_allow_push"`
|
|
|
|
AllowDeploy bool `json:"allow_deploys" meddler:"repo_allow_deploys"`
|
|
|
|
AllowTag bool `json:"allow_tags" meddler:"repo_allow_tags"`
|
|
|
|
Hash string `json:"-" meddler:"repo_hash"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetRepo(db meddler.DB, id int64) (*Repo, error) {
|
|
|
|
var repo = new(Repo)
|
|
|
|
var err = meddler.Load(db, repoTable, repo, id)
|
|
|
|
return repo, err
|
2015-04-07 08:20:55 +00:00
|
|
|
}
|
|
|
|
|
2015-09-30 01:21:17 +00:00
|
|
|
func GetRepoName(db meddler.DB, owner, name string) (*Repo, error) {
|
|
|
|
var repo = new(Repo)
|
|
|
|
var err = meddler.QueryRow(db, repo, database.Rebind(repoNameQuery), owner, name)
|
|
|
|
return repo, err
|
2015-06-19 01:50:57 +00:00
|
|
|
}
|
|
|
|
|
2015-09-30 01:21:17 +00:00
|
|
|
func GetRepoList(db meddler.DB, user *User) ([]*Repo, error) {
|
|
|
|
var repos = []*Repo{}
|
|
|
|
var err = meddler.QueryAll(db, &repos, database.Rebind(repoListQuery), user.ID)
|
|
|
|
return repos, err
|
2015-06-19 01:50:57 +00:00
|
|
|
}
|
|
|
|
|
2015-09-30 01:21:17 +00:00
|
|
|
func CreateRepo(db meddler.DB, repo *Repo) error {
|
|
|
|
return meddler.Insert(db, repoTable, repo)
|
2015-04-07 08:20:55 +00:00
|
|
|
}
|
2015-09-30 01:21:17 +00:00
|
|
|
|
|
|
|
func UpdateRepo(db meddler.DB, repo *Repo) error {
|
|
|
|
return meddler.Update(db, repoTable, repo)
|
|
|
|
}
|
|
|
|
|
|
|
|
func DeleteRepo(db meddler.DB, repo *Repo) error {
|
|
|
|
var _, err = db.Exec(database.Rebind(repoDeleteStmt), repo.ID)
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
const repoTable = "repos"
|
|
|
|
|
|
|
|
const repoNameQuery = `
|
|
|
|
SELECT *
|
|
|
|
FROM repos
|
|
|
|
WHERE repo_owner = ?
|
|
|
|
AND repo_name = ?
|
|
|
|
LIMIT 1;
|
|
|
|
`
|
|
|
|
|
|
|
|
const repoListQuery = `
|
|
|
|
SELECT r.*
|
|
|
|
FROM
|
|
|
|
repos r
|
|
|
|
,stars s
|
|
|
|
WHERE r.repo_id = s.star_repo_id
|
|
|
|
AND s.star_user_id = ?
|
|
|
|
`
|
|
|
|
|
|
|
|
const repoDeleteStmt = `
|
|
|
|
DELETE FROM repos
|
|
|
|
WHERE repo_id = ?
|
|
|
|
`
|