1a8f20470e90bb607b34c6c589300f63a0f563ba
[bloat] / repository / appRepository.go
1 package repository
2
3 import (
4         "database/sql"
5
6         "web/model"
7 )
8
9 type appRepository struct {
10         db *sql.DB
11 }
12
13 func NewAppRepository(db *sql.DB) (*appRepository, error) {
14         _, err := db.Exec(`CREATE TABLE IF NOT EXISTS app 
15                 (instance_url varchar, client_id varchar, client_secret varchar)`,
16         )
17         if err != nil {
18                 return nil, err
19         }
20
21         return &appRepository{
22                 db: db,
23         }, nil
24 }
25
26 func (repo *appRepository) Add(a model.App) (err error) {
27         _, err = repo.db.Exec("INSERT INTO app VALUES (?, ?, ?)", a.InstanceURL, a.ClientID, a.ClientSecret)
28         return
29 }
30
31 func (repo *appRepository) Update(instanceURL string, clientID string, clientSecret string) (err error) {
32         _, err = repo.db.Exec("UPDATE app SET client_id = ?, client_secret = ? where instance_url = ?", clientID, clientSecret, instanceURL)
33         return
34 }
35
36 func (repo *appRepository) Get(instanceURL string) (a model.App, err error) {
37         rows, err := repo.db.Query("SELECT * FROM app WHERE instance_url = ?", instanceURL)
38         if err != nil {
39                 return
40         }
41         defer rows.Close()
42
43         if !rows.Next() {
44                 err = model.ErrAppNotFound
45                 return
46         }
47
48         err = rows.Scan(&a.InstanceURL, &a.ClientID, &a.ClientSecret)
49         if err != nil {
50                 return
51         }
52
53         return
54 }