updated repo struct

This commit is contained in:
Brad Rydzewski 2015-06-18 18:50:57 -07:00
parent 564e029c17
commit 2b269d0e54
9 changed files with 281 additions and 316 deletions

View File

@ -108,10 +108,8 @@ func (g *GitHub) Repo(u *common.User, owner, name string) (*common.Repo, error)
repo.Link = *repo_.HTMLURL repo.Link = *repo_.HTMLURL
repo.Private = *repo_.Private repo.Private = *repo_.Private
repo.Clone = *repo_.CloneURL repo.Clone = *repo_.CloneURL
repo.Branch = "master"
if repo_.Language != nil {
repo.Language = *repo_.Language
}
if repo_.DefaultBranch != nil { if repo_.DefaultBranch != nil {
repo.Branch = *repo_.DefaultBranch repo.Branch = *repo_.DefaultBranch
} }
@ -264,7 +262,6 @@ func (g *GitHub) push(r *http.Request) (*common.Hook, error) {
repo.Link = hook.Repo.HTMLURL repo.Link = hook.Repo.HTMLURL
repo.Private = hook.Repo.Private repo.Private = hook.Repo.Private
repo.Clone = hook.Repo.CloneURL repo.Clone = hook.Repo.CloneURL
repo.Language = hook.Repo.Language
repo.Branch = hook.Repo.DefaultBranch repo.Branch = hook.Repo.DefaultBranch
commit := &common.Commit{} commit := &common.Commit{}
@ -315,9 +312,7 @@ func (g *GitHub) pullRequest(r *http.Request) (*common.Hook, error) {
repo.Link = *hook.Repo.HTMLURL repo.Link = *hook.Repo.HTMLURL
repo.Private = *hook.Repo.Private repo.Private = *hook.Repo.Private
repo.Clone = *hook.Repo.CloneURL repo.Clone = *hook.Repo.CloneURL
if hook.Repo.Language != nil { repo.Branch = "master"
repo.Language = *hook.Repo.Language
}
if hook.Repo.DefaultBranch != nil { if hook.Repo.DefaultBranch != nil {
repo.Branch = *hook.Repo.DefaultBranch repo.Branch = *hook.Repo.DefaultBranch
} }

View File

@ -132,11 +132,6 @@ func RunBuild(c *gin.Context) {
return return
} }
keys := &common.Keypair{
Public: repo.PublicKey,
Private: repo.PrivateKey,
}
user, err := store.User(repo.UserID) user, err := store.User(repo.UserID)
if err != nil { if err != nil {
c.Fail(404, err) c.Fail(404, err)
@ -189,7 +184,7 @@ func RunBuild(c *gin.Context) {
User: user, User: user,
Repo: repo, Repo: repo,
Commit: commit, Commit: commit,
Keys: keys, Keys: repo.Keys,
Netrc: netrc, Netrc: netrc,
Yaml: raw, Yaml: raw,
Plugins: conf.Plugins, Plugins: conf.Plugins,

View File

@ -68,11 +68,11 @@ func PostHook(c *gin.Context) {
log.Warnf("ignoring hook. repo %s has no owner.", repo.FullName) log.Warnf("ignoring hook. repo %s has no owner.", repo.FullName)
c.Writer.WriteHeader(204) c.Writer.WriteHeader(204)
return return
case !repo.PostCommit && hook.Commit.PullRequest != "": case !repo.Hooks.Push && hook.Commit.PullRequest != "":
log.Infof("ignoring hook. repo %s is disabled.", repo.FullName) log.Infof("ignoring hook. repo %s is disabled.", repo.FullName)
c.Writer.WriteHeader(204) c.Writer.WriteHeader(204)
return return
case !repo.PullRequest && hook.Commit.PullRequest == "": case !repo.Hooks.PullRequest && hook.Commit.PullRequest == "":
log.Warnf("ignoring hook. repo %s is disabled for pull requests.", repo.FullName) log.Warnf("ignoring hook. repo %s is disabled for pull requests.", repo.FullName)
c.Writer.WriteHeader(204) c.Writer.WriteHeader(204)
return return
@ -117,10 +117,6 @@ func PostHook(c *gin.Context) {
Environment: axis, Environment: axis,
}) })
} }
keys := &common.Keypair{
Public: repo.PublicKey,
Private: repo.PrivateKey,
}
netrc, err := remote.Netrc(user) netrc, err := remote.Netrc(user)
if err != nil { if err != nil {
@ -155,7 +151,7 @@ func PostHook(c *gin.Context) {
User: user, User: user,
Repo: repo, Repo: repo,
Commit: commit, Commit: commit,
Keys: keys, Keys: repo.Keys,
Netrc: netrc, Netrc: netrc,
Yaml: raw, Yaml: raw,
Plugins: conf.Plugins, Plugins: conf.Plugins,

View File

@ -66,9 +66,7 @@ func GetRepo(c *gin.Context) {
// and keypair data. // and keypair data.
if perm.Push { if perm.Push {
data.Params = repo.Params data.Params = repo.Params
data.Keypair = &common.Keypair{ data.Keypair = repo.Keys
Public: repo.PublicKey,
}
} }
// check to see if the user is subscribing to the repo // check to see if the user is subscribing to the repo
data.Starred, _ = store.Starred(user, repo) data.Starred, _ = store.Starred(user, repo)
@ -98,10 +96,10 @@ func PutRepo(c *gin.Context) {
} }
if in.PostCommit != nil { if in.PostCommit != nil {
repo.PostCommit = *in.PostCommit repo.Hooks.Push = *in.PostCommit
} }
if in.PullRequest != nil { if in.PullRequest != nil {
repo.PullRequest = *in.PullRequest repo.Hooks.PullRequest = *in.PullRequest
} }
if in.Trusted != nil && user.Admin { if in.Trusted != nil && user.Admin {
repo.Trusted = *in.Trusted repo.Trusted = *in.Trusted
@ -118,9 +116,7 @@ func PutRepo(c *gin.Context) {
data := repoResp{repo, perm, nil, nil, false} data := repoResp{repo, perm, nil, nil, false}
data.Params = repo.Params data.Params = repo.Params
data.Keypair = &common.Keypair{ data.Keypair = repo.Keys
Public: repo.PublicKey,
}
data.Starred, _ = store.Starred(user, repo) data.Starred, _ = store.Starred(user, repo)
c.JSON(200, data) c.JSON(200, data)
@ -208,8 +204,9 @@ func PostRepo(c *gin.Context) {
// set the repository owner to the // set the repository owner to the
// currently authenticated user. // currently authenticated user.
r.UserID = user.ID r.UserID = user.ID
r.PostCommit = true r.Hooks = new(common.Hooks)
r.PullRequest = true r.Hooks.Push = true
r.Hooks.PullRequest = true
r.Timeout = 60 // 1 hour default build time r.Timeout = 60 // 1 hour default build time
r.Self = fmt.Sprintf( r.Self = fmt.Sprintf(
"%s/%s", "%s/%s",
@ -223,16 +220,13 @@ func PostRepo(c *gin.Context) {
c.Fail(400, err) c.Fail(400, err)
return return
} }
r.PublicKey = string(sshutil.MarshalPublicKey(&key.PublicKey)) r.Keys = new(common.Keypair)
r.PrivateKey = string(sshutil.MarshalPrivateKey(key)) r.Keys.Public = string(sshutil.MarshalPublicKey(&key.PublicKey))
keypair := &common.Keypair{ r.Keys.Private = string(sshutil.MarshalPrivateKey(key))
Public: r.PublicKey,
Private: r.PrivateKey,
}
// activate the repository before we make any // activate the repository before we make any
// local changes to the database. // local changes to the database.
err = remote.Activate(user, r, keypair, link) err = remote.Activate(user, r, r.Keys, link)
if err != nil { if err != nil {
c.Fail(500, err) c.Fail(500, err)
return return

View File

@ -47,27 +47,25 @@ CREATE TABLE IF NOT EXISTS users (
var repoTable = ` var repoTable = `
CREATE TABLE IF NOT EXISTS repos ( CREATE TABLE IF NOT EXISTS repos (
repo_id INTEGER PRIMARY KEY AUTOINCREMENT repo_id INTEGER PRIMARY KEY AUTOINCREMENT
,repo_user_id INTEGER ,repo_user_id INTEGER
,repo_owner VARCHAR(255) ,repo_owner VARCHAR(255)
,repo_name VARCHAR(255) ,repo_name VARCHAR(255)
,repo_full_name VARCHAR(1024) ,repo_full_name VARCHAR(1024)
,repo_token VARCHAR(255) ,repo_self VARCHAR(1024)
,repo_language VARCHAR(255) ,repo_link VARCHAR(1024)
,repo_branch VARCHAR(255) ,repo_clone VARCHAR(1024)
,repo_private BOOLEAN ,repo_branch VARCHAR(255)
,repo_trusted BOOLEAN ,repo_private BOOLEAN
,repo_self VARCHAR(1024) ,repo_trusted BOOLEAN
,repo_link VARCHAR(1024) ,repo_timeout INTEGER
,repo_clone VARCHAR(1024) ,repo_keys_public BLOB
,repo_post_commit BOOLEAN ,repo_keys_private BLOB
,repo_pull_request BOOLEAN ,repo_hooks_pull_request BOOLEAN
,repo_public_key BLOB ,repo_hooks_push BOOLEAN
,repo_private_key BLOB ,repo_hooks_tags BOOLEAN
,repo_params BLOB ,repo_params BLOB
,repo_timeout INTEGER
,repo_created INTEGER
,repo_updated INTEGER
,UNIQUE(repo_owner, repo_name) ,UNIQUE(repo_owner, repo_name)
,UNIQUE(repo_full_name) ,UNIQUE(repo_full_name)
); );

View File

@ -2,7 +2,6 @@ package builtin
import ( import (
"database/sql" "database/sql"
"time"
"github.com/drone/drone/pkg/types" "github.com/drone/drone/pkg/types"
) )
@ -35,14 +34,11 @@ func (db *Repostore) RepoList(user *types.User) ([]*types.Repo, error) {
// AddRepo inserts a repo in the datastore. // AddRepo inserts a repo in the datastore.
func (db *Repostore) AddRepo(repo *types.Repo) error { func (db *Repostore) AddRepo(repo *types.Repo) error {
repo.Created = time.Now().UTC().Unix()
repo.Updated = time.Now().UTC().Unix()
return createRepo(db, rebind(stmtRepoInsert), repo) return createRepo(db, rebind(stmtRepoInsert), repo)
} }
// SetRepo updates a repo in the datastore. // SetRepo updates a repo in the datastore.
func (db *Repostore) SetRepo(repo *types.Repo) error { func (db *Repostore) SetRepo(repo *types.Repo) error {
repo.Updated = time.Now().UTC().Unix()
return updateRepo(db, rebind(stmtRepoUpdate), repo) return updateRepo(db, rebind(stmtRepoUpdate), repo)
} }
@ -56,27 +52,24 @@ func (db *Repostore) DelRepo(repo *types.Repo) error {
// with permissions for the given User ID. // with permissions for the given User ID.
const repoListQuery = ` const repoListQuery = `
SELECT SELECT
r.repo_id repo_id
,r.repo_user_id ,repo_user_id
,r.repo_owner ,repo_owner
,r.repo_name ,repo_name
,r.repo_full_name ,repo_full_name
,r.repo_token ,repo_self
,r.repo_language ,repo_link
,r.repo_private ,repo_clone
,r.repo_self ,repo_branch
,r.repo_link ,repo_private
,r.repo_clone ,repo_trusted
,r.repo_branch ,repo_timeout
,r.repo_timeout ,repo_keys_public
,r.repo_trusted ,repo_keys_private
,r.repo_post_commit ,repo_hooks_pull_request
,r.repo_pull_request ,repo_hooks_push
,r.repo_public_key ,repo_hooks_tags
,r.repo_private_key ,repo_params
,r.repo_created
,r.repo_updated
,r.repo_params
FROM FROM
repos r repos r
,stars s ,stars s

View File

@ -40,40 +40,38 @@ func createRepo(db repoDB, query string, v *Repo) error {
var v3 string var v3 string
var v4 string var v4 string
var v5 string var v5 string
var v6 bool var v6 string
var v7 string var v7 string
var v8 string var v8 bool
var v9 string var v9 bool
var v10 string var v10 int64
var v11 int64 var v11 string
var v12 bool var v12 string
var v13 bool var v13 bool
var v14 bool var v14 bool
var v15 string var v15 bool
var v16 string var v16 []byte
var v17 int64
var v18 int64
var v19 []byte
v0 = v.UserID v0 = v.UserID
v1 = v.Owner v1 = v.Owner
v2 = v.Name v2 = v.Name
v3 = v.FullName v3 = v.FullName
v4 = v.Token v4 = v.Self
v5 = v.Language v5 = v.Link
v6 = v.Private v6 = v.Clone
v7 = v.Self v7 = v.Branch
v8 = v.Link v8 = v.Private
v9 = v.Clone v9 = v.Trusted
v10 = v.Branch v10 = v.Timeout
v11 = v.Timeout if v.Keys != nil {
v12 = v.Trusted v11 = v.Keys.Public
v13 = v.PostCommit v12 = v.Keys.Private
v14 = v.PullRequest }
v15 = v.PublicKey if v.Hooks != nil {
v16 = v.PrivateKey v13 = v.Hooks.PullRequest
v17 = v.Created v14 = v.Hooks.Push
v18 = v.Updated v15 = v.Hooks.Tags
v19, _ = json.Marshal(v.Params) }
v16, _ = json.Marshal(v.Params)
res, err := db.Exec(query, res, err := db.Exec(query,
&v0, &v0,
@ -93,9 +91,6 @@ func createRepo(db repoDB, query string, v *Repo) error {
&v14, &v14,
&v15, &v15,
&v16, &v16,
&v17,
&v18,
&v19,
) )
if err != nil { if err != nil {
return err return err
@ -113,41 +108,39 @@ func updateRepo(db repoDB, query string, v *Repo) error {
var v4 string var v4 string
var v5 string var v5 string
var v6 string var v6 string
var v7 bool var v7 string
var v8 string var v8 string
var v9 string var v9 bool
var v10 string var v10 bool
var v11 string var v11 int64
var v12 int64 var v12 string
var v13 bool var v13 string
var v14 bool var v14 bool
var v15 bool var v15 bool
var v16 string var v16 bool
var v17 string var v17 []byte
var v18 int64
var v19 int64
var v20 []byte
v0 = v.ID v0 = v.ID
v1 = v.UserID v1 = v.UserID
v2 = v.Owner v2 = v.Owner
v3 = v.Name v3 = v.Name
v4 = v.FullName v4 = v.FullName
v5 = v.Token v5 = v.Self
v6 = v.Language v6 = v.Link
v7 = v.Private v7 = v.Clone
v8 = v.Self v8 = v.Branch
v9 = v.Link v9 = v.Private
v10 = v.Clone v10 = v.Trusted
v11 = v.Branch v11 = v.Timeout
v12 = v.Timeout if v.Keys != nil {
v13 = v.Trusted v12 = v.Keys.Public
v14 = v.PostCommit v13 = v.Keys.Private
v15 = v.PullRequest }
v16 = v.PublicKey if v.Hooks != nil {
v17 = v.PrivateKey v14 = v.Hooks.PullRequest
v18 = v.Created v15 = v.Hooks.Push
v19 = v.Updated v16 = v.Hooks.Tags
v20, _ = json.Marshal(v.Params) }
v17, _ = json.Marshal(v.Params)
_, err := db.Exec(query, _, err := db.Exec(query,
&v1, &v1,
@ -167,9 +160,6 @@ func updateRepo(db repoDB, query string, v *Repo) error {
&v15, &v15,
&v16, &v16,
&v17, &v17,
&v18,
&v19,
&v20,
&v0, &v0,
) )
return err return err
@ -183,20 +173,17 @@ func scanRepo(row *sql.Row) (*Repo, error) {
var v4 string var v4 string
var v5 string var v5 string
var v6 string var v6 string
var v7 bool var v7 string
var v8 string var v8 string
var v9 string var v9 bool
var v10 string var v10 bool
var v11 string var v11 int64
var v12 int64 var v12 string
var v13 bool var v13 string
var v14 bool var v14 bool
var v15 bool var v15 bool
var v16 string var v16 bool
var v17 string var v17 []byte
var v18 int64
var v19 int64
var v20 []byte
err := row.Scan( err := row.Scan(
&v0, &v0,
@ -217,9 +204,6 @@ func scanRepo(row *sql.Row) (*Repo, error) {
&v15, &v15,
&v16, &v16,
&v17, &v17,
&v18,
&v19,
&v20,
) )
if err != nil { if err != nil {
return nil, err return nil, err
@ -231,22 +215,21 @@ func scanRepo(row *sql.Row) (*Repo, error) {
v.Owner = v2 v.Owner = v2
v.Name = v3 v.Name = v3
v.FullName = v4 v.FullName = v4
v.Token = v5 v.Self = v5
v.Language = v6 v.Link = v6
v.Private = v7 v.Clone = v7
v.Self = v8 v.Branch = v8
v.Link = v9 v.Private = v9
v.Clone = v10 v.Trusted = v10
v.Branch = v11 v.Timeout = v11
v.Timeout = v12 v.Keys = &Keypair{}
v.Trusted = v13 v.Keys.Public = v12
v.PostCommit = v14 v.Keys.Private = v13
v.PullRequest = v15 v.Hooks = &Hooks{}
v.PublicKey = v16 v.Hooks.PullRequest = v14
v.PrivateKey = v17 v.Hooks.Push = v15
v.Created = v18 v.Hooks.Tags = v16
v.Updated = v19 json.Unmarshal(v17, &v.Params)
json.Unmarshal(v20, &v.Params)
return v, nil return v, nil
} }
@ -262,20 +245,17 @@ func scanRepos(rows *sql.Rows) ([]*Repo, error) {
var v4 string var v4 string
var v5 string var v5 string
var v6 string var v6 string
var v7 bool var v7 string
var v8 string var v8 string
var v9 string var v9 bool
var v10 string var v10 bool
var v11 string var v11 int64
var v12 int64 var v12 string
var v13 bool var v13 string
var v14 bool var v14 bool
var v15 bool var v15 bool
var v16 string var v16 bool
var v17 string var v17 []byte
var v18 int64
var v19 int64
var v20 []byte
err = rows.Scan( err = rows.Scan(
&v0, &v0,
&v1, &v1,
@ -295,9 +275,6 @@ func scanRepos(rows *sql.Rows) ([]*Repo, error) {
&v15, &v15,
&v16, &v16,
&v17, &v17,
&v18,
&v19,
&v20,
) )
if err != nil { if err != nil {
return vv, err return vv, err
@ -309,22 +286,21 @@ func scanRepos(rows *sql.Rows) ([]*Repo, error) {
v.Owner = v2 v.Owner = v2
v.Name = v3 v.Name = v3
v.FullName = v4 v.FullName = v4
v.Token = v5 v.Self = v5
v.Language = v6 v.Link = v6
v.Private = v7 v.Clone = v7
v.Self = v8 v.Branch = v8
v.Link = v9 v.Private = v9
v.Clone = v10 v.Trusted = v10
v.Branch = v11 v.Timeout = v11
v.Timeout = v12 v.Keys = &Keypair{}
v.Trusted = v13 v.Keys.Public = v12
v.PostCommit = v14 v.Keys.Private = v13
v.PullRequest = v15 v.Hooks = &Hooks{}
v.PublicKey = v16 v.Hooks.PullRequest = v14
v.PrivateKey = v17 v.Hooks.Push = v15
v.Created = v18 v.Hooks.Tags = v16
v.Updated = v19 json.Unmarshal(v17, &v.Params)
json.Unmarshal(v20, &v.Params)
vv = append(vv, v) vv = append(vv, v)
} }
return vv, rows.Err() return vv, rows.Err()
@ -337,21 +313,18 @@ SELECT
,repo_owner ,repo_owner
,repo_name ,repo_name
,repo_full_name ,repo_full_name
,repo_token
,repo_language
,repo_private
,repo_self ,repo_self
,repo_link ,repo_link
,repo_clone ,repo_clone
,repo_branch ,repo_branch
,repo_timeout ,repo_private
,repo_trusted ,repo_trusted
,repo_post_commit ,repo_timeout
,repo_pull_request ,repo_keys_public
,repo_public_key ,repo_keys_private
,repo_private_key ,repo_hooks_pull_request
,repo_created ,repo_hooks_push
,repo_updated ,repo_hooks_tags
,repo_params ,repo_params
FROM repos FROM repos
` `
@ -363,21 +336,18 @@ SELECT
,repo_owner ,repo_owner
,repo_name ,repo_name
,repo_full_name ,repo_full_name
,repo_token
,repo_language
,repo_private
,repo_self ,repo_self
,repo_link ,repo_link
,repo_clone ,repo_clone
,repo_branch ,repo_branch
,repo_timeout ,repo_private
,repo_trusted ,repo_trusted
,repo_post_commit ,repo_timeout
,repo_pull_request ,repo_keys_public
,repo_public_key ,repo_keys_private
,repo_private_key ,repo_hooks_pull_request
,repo_created ,repo_hooks_push
,repo_updated ,repo_hooks_tags
,repo_params ,repo_params
FROM repos FROM repos
LIMIT ? OFFSET ? LIMIT ? OFFSET ?
@ -390,26 +360,47 @@ SELECT
,repo_owner ,repo_owner
,repo_name ,repo_name
,repo_full_name ,repo_full_name
,repo_token
,repo_language
,repo_private
,repo_self ,repo_self
,repo_link ,repo_link
,repo_clone ,repo_clone
,repo_branch ,repo_branch
,repo_timeout ,repo_private
,repo_trusted ,repo_trusted
,repo_post_commit ,repo_timeout
,repo_pull_request ,repo_keys_public
,repo_public_key ,repo_keys_private
,repo_private_key ,repo_hooks_pull_request
,repo_created ,repo_hooks_push
,repo_updated ,repo_hooks_tags
,repo_params ,repo_params
FROM repos FROM repos
WHERE repo_id = ? WHERE repo_id = ?
` `
const stmtRepoSelectRepoUserId = `
SELECT
repo_id
,repo_user_id
,repo_owner
,repo_name
,repo_full_name
,repo_self
,repo_link
,repo_clone
,repo_branch
,repo_private
,repo_trusted
,repo_timeout
,repo_keys_public
,repo_keys_private
,repo_hooks_pull_request
,repo_hooks_push
,repo_hooks_tags
,repo_params
FROM repos
WHERE repo_user_id = ?
`
const stmtRepoSelectRepoOwnerName = ` const stmtRepoSelectRepoOwnerName = `
SELECT SELECT
repo_id repo_id
@ -417,21 +408,18 @@ SELECT
,repo_owner ,repo_owner
,repo_name ,repo_name
,repo_full_name ,repo_full_name
,repo_token
,repo_language
,repo_private
,repo_self ,repo_self
,repo_link ,repo_link
,repo_clone ,repo_clone
,repo_branch ,repo_branch
,repo_timeout ,repo_private
,repo_trusted ,repo_trusted
,repo_post_commit ,repo_timeout
,repo_pull_request ,repo_keys_public
,repo_public_key ,repo_keys_private
,repo_private_key ,repo_hooks_pull_request
,repo_created ,repo_hooks_push
,repo_updated ,repo_hooks_tags
,repo_params ,repo_params
FROM repos FROM repos
WHERE repo_owner = ? WHERE repo_owner = ?
@ -445,49 +433,48 @@ SELECT
,repo_owner ,repo_owner
,repo_name ,repo_name
,repo_full_name ,repo_full_name
,repo_token
,repo_language
,repo_private
,repo_self ,repo_self
,repo_link ,repo_link
,repo_clone ,repo_clone
,repo_branch ,repo_branch
,repo_timeout ,repo_private
,repo_trusted ,repo_trusted
,repo_post_commit ,repo_timeout
,repo_pull_request ,repo_keys_public
,repo_public_key ,repo_keys_private
,repo_private_key ,repo_hooks_pull_request
,repo_created ,repo_hooks_push
,repo_updated ,repo_hooks_tags
,repo_params ,repo_params
FROM repos FROM repos
WHERE repo_full_name = ? WHERE repo_full_name = ?
` `
const stmtRepoSelectCount = `
SELECT count(1)
FROM repos
`
const stmtRepoInsert = ` const stmtRepoInsert = `
INSERT INTO repos ( INSERT INTO repos (
repo_user_id repo_user_id
,repo_owner ,repo_owner
,repo_name ,repo_name
,repo_full_name ,repo_full_name
,repo_token
,repo_language
,repo_private
,repo_self ,repo_self
,repo_link ,repo_link
,repo_clone ,repo_clone
,repo_branch ,repo_branch
,repo_timeout ,repo_private
,repo_trusted ,repo_trusted
,repo_post_commit ,repo_timeout
,repo_pull_request ,repo_keys_public
,repo_public_key ,repo_keys_private
,repo_private_key ,repo_hooks_pull_request
,repo_created ,repo_hooks_push
,repo_updated ,repo_hooks_tags
,repo_params ,repo_params
) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?); ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);
` `
const stmtRepoUpdate = ` const stmtRepoUpdate = `
@ -496,21 +483,18 @@ UPDATE repos SET
,repo_owner = ? ,repo_owner = ?
,repo_name = ? ,repo_name = ?
,repo_full_name = ? ,repo_full_name = ?
,repo_token = ?
,repo_language = ?
,repo_private = ?
,repo_self = ? ,repo_self = ?
,repo_link = ? ,repo_link = ?
,repo_clone = ? ,repo_clone = ?
,repo_branch = ? ,repo_branch = ?
,repo_timeout = ? ,repo_private = ?
,repo_trusted = ? ,repo_trusted = ?
,repo_post_commit = ? ,repo_timeout = ?
,repo_pull_request = ? ,repo_keys_public = ?
,repo_public_key = ? ,repo_keys_private = ?
,repo_private_key = ? ,repo_hooks_pull_request = ?
,repo_created = ? ,repo_hooks_push = ?
,repo_updated = ? ,repo_hooks_tags = ?
,repo_params = ? ,repo_params = ?
WHERE repo_id = ? WHERE repo_id = ?
` `
@ -527,25 +511,26 @@ CREATE TABLE IF NOT EXISTS repos (
,repo_owner VARCHAR ,repo_owner VARCHAR
,repo_name VARCHAR ,repo_name VARCHAR
,repo_full_name VARCHAR ,repo_full_name VARCHAR
,repo_token VARCHAR
,repo_language VARCHAR
,repo_private BOOLEAN
,repo_self VARCHAR ,repo_self VARCHAR
,repo_link VARCHAR ,repo_link VARCHAR
,repo_clone VARCHAR ,repo_clone VARCHAR
,repo_branch VARCHAR ,repo_branch VARCHAR
,repo_timeout INTEGER ,repo_private BOOLEAN
,repo_trusted BOOLEAN ,repo_trusted BOOLEAN
,repo_post_commit BOOLEAN ,repo_timeout INTEGER
,repo_pull_request BOOLEAN ,repo_keys_public VARCHAR
,repo_public_key VARCHAR ,repo_keys_private VARCHAR
,repo_private_key VARCHAR ,repo_hooks_pull_requestBOOLEAN
,repo_created INTEGER ,repo_hooks_push BOOLEAN
,repo_updated INTEGER ,repo_hooks_tags BOOLEAN
,repo_params BLOB ,repo_params BLOB
); );
` `
const stmtRepoRepoUserIdIndex = `
CREATE INDEX IF NOT EXISTS ix_repo_user_id ON repos (repo_user_id);
`
const stmtRepoRepoOwnerNameIndex = ` const stmtRepoRepoOwnerNameIndex = `
CREATE UNIQUE INDEX IF NOT EXISTS ux_repo_owner_name ON repos (repo_owner,repo_name); CREATE UNIQUE INDEX IF NOT EXISTS ux_repo_owner_name ON repos (repo_owner,repo_name);
` `

View File

@ -16,11 +16,3 @@ type Netrc struct {
Login string `json:"login"` Login string `json:"login"`
Password string `json:"user"` Password string `json:"user"`
} }
// Keypair represents an RSA public and private key
// assigned to a repository. It may be used to clone
// private repositories, or as a deployment key.
type Keypair struct {
Public string `json:"public,omitempty"`
Private string `json:"private,omitempty"`
}

View File

@ -1,28 +1,31 @@
package types package types
type Repo struct { type Repo struct {
ID int64 `meddler:"repo_id,pk" json:"id"` ID int64 `meddler:"repo_id,pk" json:"id"`
UserID int64 `meddler:"repo_user_id" json:"-" sql:"index:ix_repo_user_id"` UserID int64 `meddler:"repo_user_id" json:"-" sql:"index:ix_repo_user_id"`
Owner string `meddler:"repo_owner" json:"owner" sql:"unique:ux_repo_owner_name"` Owner string `meddler:"repo_owner" json:"owner" sql:"unique:ux_repo_owner_name"`
Name string `meddler:"repo_name" json:"name" sql:"unique:ux_repo_owner_name"` Name string `meddler:"repo_name" json:"name" sql:"unique:ux_repo_owner_name"`
FullName string `meddler:"repo_full_name" json:"full_name" sql:"unique:ux_repo_full_name"` FullName string `meddler:"repo_full_name" json:"full_name" sql:"unique:ux_repo_full_name"`
Token string `meddler:"repo_token" json:"-"` Self string `meddler:"repo_self" json:"self_url"`
Language string `meddler:"repo_language" json:"language"` Link string `meddler:"repo_link" json:"link_url"`
Private bool `meddler:"repo_private" json:"private"` Clone string `meddler:"repo_clone" json:"clone_url"`
Self string `meddler:"repo_self" json:"self_url"` Branch string `meddler:"repo_branch" json:"default_branch"`
Link string `meddler:"repo_link" json:"link_url"` Private bool `meddler:"repo_private" json:"private"`
Clone string `meddler:"repo_clone" json:"clone_url"` Trusted bool `meddler:"repo_trusted" json:"trusted"`
Branch string `meddler:"repo_branch" json:"default_branch"` Timeout int64 `meddler:"repo_timeout" json:"timeout"`
Timeout int64 `meddler:"repo_timeout" json:"timeout"`
Trusted bool `meddler:"repo_trusted" json:"trusted"`
PostCommit bool `meddler:"repo_post_commit" json:"post_commits"`
PullRequest bool `meddler:"repo_pull_request" json:"pull_requests"`
PublicKey string `meddler:"repo_public_key" json:"-"`
PrivateKey string `meddler:"repo_private_key" json:"-"`
Created int64 `meddler:"repo_created" json:"created_at"`
Updated int64 `meddler:"repo_updated" json:"updated_at"`
Params map[string]string `meddler:"repo_params,json" json:"-"` Keys *Keypair `json:"-"`
Hooks *Hooks `json:"hooks"`
// Perms are the current user's permissions to push,
// pull, and administer this repository. The permissions
// are sourced from the version control system (ie GitHub)
Perms *Perm `json:"perms,omitempty" sql:"-"`
// Params are private environment parameters that are
// considered secret and are therefore stored external
// to the source code repository inside Drone.
Params map[string]string `json:"-"`
} }
type RepoLite struct { type RepoLite struct {
@ -49,7 +52,21 @@ type RepoCommit struct {
} }
type Perm struct { type Perm struct {
Pull bool `json:"pull"` Pull bool `json:"pull" sql:"-"`
Push bool `json:"push"` Push bool `json:"push" sql:"-"`
Admin bool `json:"admin"` Admin bool `json:"admin" sql:"-"`
}
type Hooks struct {
PullRequest bool `json:"pull_request"`
Push bool `json:"push"`
Tags bool `json:"tags"`
}
// Keypair represents an RSA public and private key
// assigned to a repository. It may be used to clone
// private repositories, or as a deployment key.
type Keypair struct {
Public string `json:"public,omitempty"`
Private string `json:"private,omitempty"`
} }