-
Notifications
You must be signed in to change notification settings - Fork 1
/
app_repository.go
62 lines (48 loc) · 1.38 KB
/
app_repository.go
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
package postgres
import (
"database/sql"
"github.com/google/uuid"
"github.com/riser-platform/riser-server/pkg/core"
)
type appRepository struct {
db *sql.DB
}
func NewAppRepository(db *sql.DB) core.AppRepository {
return &appRepository{db: db}
}
func (r *appRepository) Get(id uuid.UUID) (*core.App, error) {
app := &core.App{}
err := r.db.QueryRow("SELECT id, name, namespace FROM app WHERE id = $1", id).Scan(&app.Id, &app.Name, &app.Namespace)
return app, noRowsErrorHandler(err)
}
func (r *appRepository) GetByName(name *core.NamespacedName) (*core.App, error) {
app := &core.App{}
err := r.db.QueryRow("SELECT id, name, namespace FROM app WHERE name = $1 and namespace = $2",
name.Name, name.Namespace).Scan(&app.Id, &app.Name, &app.Namespace)
return app, noRowsErrorHandler(err)
}
func (r *appRepository) Create(app *core.App) error {
_, err := r.db.Exec("INSERT INTO app (id, name, namespace) VALUES ($1,$2,$3)", app.Id, app.Name, app.Namespace)
return err
}
func (r *appRepository) ListApps() ([]core.App, error) {
apps := []core.App{}
rows, err := r.db.Query(`
SELECT id, name, namespace
FROM app
ORDER BY namespace, name
`)
if err != nil {
return nil, err
}
defer rows.Close()
for rows.Next() {
app := core.App{}
err := rows.Scan(&app.Id, &app.Name, &app.Namespace)
if err != nil {
return nil, err
}
apps = append(apps, app)
}
return apps, nil
}