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