99447bc8d4c2a8b384093553eb0bc8c460ff689d
- Author
- Ayman Bagabas <ayman.bagabas@gmail.com>
- Committer
- Ayman Bagabas <ayman.bagabas@gmail.com>
- Date
Message
Diff
This diff is truncated to protect this page.
1diff --git a/server/backend/sqlite/error.go b/server/backend/sqlite/error.go
2index 72020de5be13e1a22bb5d4d836b026e0c963f940..1422697a9ba60dd105fb31af5ed2f0d68c047f04 100644
3--- a/server/backend/sqlite/error.go
4+++ b/server/backend/sqlite/error.go
5@@ -1,6 +1,9 @@
6 package sqlite
7
8-import "errors"
9+import (
10+ "errors"
11+ "fmt"
12+)
13
14 var (
15 // ErrDuplicateKey is returned when a unique constraint is violated.
16@@ -8,4 +11,7 @@ var (
17
18 // ErrNoRecord is returned when a record is not found.
19 ErrNoRecord = errors.New("record not found")
20+
21+ // ErrRepoNotExist is returned when a repository does not exist.
22+ ErrRepoNotExist = fmt.Errorf("repository does not exist")
23 )
24diff --git a/server/backend/sqlite/sqlite.go b/server/backend/sqlite/sqlite.go
25index eb480cf24ee2f13324fd87060ebee6d729455e3f..bc69e2628cb5c90ade79b40a84e2a358d0a13bca 100644
26--- a/server/backend/sqlite/sqlite.go
27+++ b/server/backend/sqlite/sqlite.go
28@@ -313,7 +313,7 @@ func (d *SqliteBackend) Repository(repo string) (backend.Repository, error) {
29
30 if count == 0 {
31 logger.Warn("repository exists but not found in database", "repo", repo)
32- return nil, fmt.Errorf("repository does not exist")
33+ return nil, ErrRepoNotExist
34 }
35
36 return &Repo{
37@@ -330,7 +330,8 @@ func (d *SqliteBackend) Description(repo string) (string, error) {
38 repo = utils.SanitizeRepo(repo)
39 var desc string
40 if err := wrapTx(d.db, d.ctx, func(tx *sqlx.Tx) error {
41- return tx.Get(&desc, "SELECT description FROM repo WHERE name = ?", repo)
42+ row := tx.QueryRow("SELECT description FROM repo WHERE name = ?", repo)
43+ return row.Scan(&desc)
44 }); err != nil {
45 return "", wrapDbErr(err)
46 }
47@@ -360,7 +361,8 @@ func (d *SqliteBackend) IsPrivate(repo string) (bool, error) {
48 repo = utils.SanitizeRepo(repo)
49 var private bool
50 if err := wrapTx(d.db, d.ctx, func(tx *sqlx.Tx) error {
51- return tx.Get(&private, "SELECT private FROM repo WHERE name = ?", repo)
52+ row := tx.QueryRow("SELECT private FROM repo WHERE name = ?", repo)
53+ return row.Scan(&private)
54 }); err != nil {
55 return false, wrapDbErr(err)
56 }
57@@ -375,7 +377,8 @@ func (d *SqliteBackend) IsHidden(repo string) (bool, error) {
58 repo = utils.SanitizeRepo(repo)
59 var hidden bool
60 if err := wrapTx(d.db, d.ctx, func(tx *sqlx.Tx) error {
61- return tx.Get(&hidden, "SELECT hidden FROM repo WHERE name = ?", repo)
62+ row := tx.QueryRow("SELECT hidden FROM repo WHERE name = ?", repo)
63+ return row.Scan(&hidden)
64 }); err != nil {
65 return false, wrapDbErr(err)
66 }
67@@ -389,6 +392,13 @@ func (d *SqliteBackend) IsHidden(repo string) (bool, error) {
68 func (d *SqliteBackend) SetHidden(repo string, hidden bool) error {
69 repo = utils.SanitizeRepo(repo)
70 return wrapDbErr(wrapTx(d.db, d.ctx, func(tx *sqlx.Tx) error {
71+ var count int
72+ if err := tx.Get(&count, "SELECT COUNT(*) FROM repo WHERE name = ?", repo); err != nil {
73+ return err
74+ }
75+ if count == 0 {
76+ return ErrRepoNotExist
77+ }
78 _, err := tx.Exec("UPDATE repo SET hidden = ?, updated_at = CURRENT_TIMESTAMP WHERE name = ?;", hidden, repo)
79 return err
80 }))
81@@ -401,7 +411,8 @@ func (d *SqliteBackend) ProjectName(repo string) (string, error) {
82 repo = utils.SanitizeRepo(repo)
83 var name string
84 if err := wrapTx(d.db, d.ctx, func(tx *sqlx.Tx) error {
85- return tx.Get(&name, "SELECT project_name FROM repo WHERE name = ?", repo)
86+ row := tx.QueryRow("SELECT project_name FROM repo WHERE name = ?", repo)
87+ return row.Scan(&name)
88 }); err != nil {
89 return "", wrapDbErr(err)
90 }
91@@ -415,6 +426,13 @@ func (d *SqliteBackend) ProjectName(repo string) (string, error) {
92 func (d *SqliteBackend) SetDescription(repo string, desc string) error {
93 repo = utils.SanitizeRepo(repo)
94 return wrapTx(d.db, d.ctx, func(tx *sqlx.Tx) error {
95+ var count int
96+ if err := tx.Get(&count, "SELECT COUNT(*) FROM repo WHERE name = ?", repo); err != nil {
97+ return err
98+ }
99+ if count == 0 {
100+ return ErrRepoNotExist
101+ }
102 _, err := tx.Exec("UPDATE repo SET description = ? WHERE name = ?", desc, repo)
103 return err
104 })
105@@ -427,6 +445,13 @@ func (d *SqliteBackend) SetPrivate(repo string, private bool) error {
106 repo = utils.SanitizeRepo(repo)
107 return wrapDbErr(
108 wrapTx(d.db, d.ctx, func(tx *sqlx.Tx) error {
109+ var count int
110+ if err := tx.Get(&count, "SELECT COUNT(*) FROM repo WHERE name = ?", repo); err != nil {
111+ return err
112+ }
113+ if count == 0 {
114+ return ErrRepoNotExist
115+ }
116 _, err := tx.Exec("UPDATE repo SET private = ? WHERE name = ?", private, repo)
117 return err
118 }),
119@@ -440,6 +465,13 @@ func (d *SqliteBackend) SetProjectName(repo string, name string) error {
120 repo = utils.SanitizeRepo(repo)
121 return wrapDbErr(
122 wrapTx(d.db, d.ctx, func(tx *sqlx.Tx) error {
123+ var count int
124+ if err := tx.Get(&count, "SELECT COUNT(*) FROM repo WHERE name = ?", repo); err != nil {
125+ return err
126+ }
127+ if count == 0 {