-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Expand file tree
/
Copy pathrepository.go
More file actions
107 lines (84 loc) · 2.39 KB
/
repository.go
File metadata and controls
107 lines (84 loc) · 2.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
package sql
import (
"github.com/Masterminds/squirrel"
"github.com/semaphoreui/semaphore/db"
)
func (d *SqlDb) GetRepository(projectID int, repositoryID int) (db.Repository, error) {
var repository db.Repository
err := d.getObject(projectID, db.RepositoryProps, repositoryID, &repository)
if err != nil {
return repository, err
}
if repository.SSHKeyID != nil {
var key db.AccessKey
key, err = d.GetAccessKey(projectID, *repository.SSHKeyID)
repository.SSHKey = &key
}
return repository, err
}
func (d *SqlDb) GetRepositoryRefs(projectID int, repositoryID int) (db.ObjectReferrers, error) {
return d.getObjectRefs(projectID, db.RepositoryProps, repositoryID)
}
func (d *SqlDb) GetRepositories(projectID int, params db.RetrieveQueryParams) (repositories []db.Repository, err error) {
q := squirrel.Select("*").
From("project__repository pr")
order := "ASC"
if params.SortInverted {
order = "DESC"
}
switch params.SortBy {
case "name", "git_url":
q = q.Where("pr.project_id=?", projectID).
OrderBy("pr." + params.SortBy + " " + order)
case "ssh_key":
q = q.LeftJoin("access_key ak ON (pr.ssh_key_id = ak.id)").
Where("pr.project_id=?", projectID).
OrderBy("ak.name " + order)
default:
q = q.Where("pr.project_id=?", projectID).
OrderBy("pr.name " + order)
}
query, args, err := q.ToSql()
if err != nil {
return
}
_, err = d.selectAll(&repositories, query, args...)
return
}
func (d *SqlDb) UpdateRepository(repository db.Repository) error {
err := repository.Validate()
if err != nil {
return err
}
_, err = d.exec(
"update project__repository set name=?, git_url=?, git_branch=?, ssh_key_id=? where id=?",
repository.Name,
repository.GitURL,
repository.GitBranch,
repository.SSHKeyID,
repository.ID)
return err
}
func (d *SqlDb) CreateRepository(repository db.Repository) (newRepo db.Repository, err error) {
err = repository.Validate()
if err != nil {
return
}
insertID, err := d.insert(
"id",
"insert into project__repository(project_id, git_url, git_branch, ssh_key_id, name) values (?, ?, ?, ?, ?)",
repository.ProjectID,
repository.GitURL,
repository.GitBranch,
repository.SSHKeyID,
repository.Name)
if err != nil {
return
}
newRepo = repository
newRepo.ID = insertID
return
}
func (d *SqlDb) DeleteRepository(projectID int, repositoryId int) error {
return d.deleteObject(projectID, db.RepositoryProps, repositoryId)
}