Use json format for app and session repo
[bloat] / repository / sessionRepository.go
1 package repository
2
3 import (
4         "encoding/json"
5         "web/kv"
6         "web/model"
7 )
8
9 type sessionRepository struct {
10         db *kv.Database
11 }
12
13 func NewSessionRepository(db *kv.Database) *sessionRepository {
14         return &sessionRepository{
15                 db: db,
16         }
17 }
18
19 func (repo *sessionRepository) Add(s model.Session) (err error) {
20         data, err := json.Marshal(s)
21         if err != nil {
22                 return
23         }
24         err = repo.db.Set(s.ID, data)
25         return
26 }
27
28 func (repo *sessionRepository) Update(id string, accessToken string) (err error) {
29         data, err := repo.db.Get(id)
30         if err != nil {
31                 return
32         }
33
34         var s model.Session
35         err = json.Unmarshal(data, &s)
36         if err != nil {
37                 return
38         }
39
40         s.AccessToken = accessToken
41
42         data, err = json.Marshal(s)
43         if err != nil {
44                 return
45         }
46
47         return repo.db.Set(id, data)
48 }
49
50 func (repo *sessionRepository) Get(id string) (s model.Session, err error) {
51         data, err := repo.db.Get(id)
52         if err != nil {
53                 err = model.ErrSessionNotFound
54                 return
55         }
56
57         err = json.Unmarshal(data, &s)
58         if err != nil {
59                 return
60         }
61
62         return
63 }