Use filesystem based kv store instead of sqlite
[bloat] / model / app.go
1 package model
2
3 import (
4         "errors"
5         "strings"
6 )
7
8 var (
9         ErrAppNotFound = errors.New("app not found")
10 )
11
12 type App struct {
13         InstanceDomain string
14         InstanceURL    string
15         ClientID       string
16         ClientSecret   string
17 }
18
19 type AppRepository interface {
20         Add(app App) (err error)
21         Get(instanceDomain string) (app App, err error)
22 }
23
24 func (a *App) Marshal() []byte {
25         str := a.InstanceURL + "\n" + a.ClientID + "\n" + a.ClientSecret
26         return []byte(str)
27 }
28
29 func (a *App) Unmarshal(instanceDomain string, data []byte) error {
30         str := string(data)
31         lines := strings.Split(str, "\n")
32         if len(lines) != 3 {
33                 return errors.New("invalid data")
34         }
35         a.InstanceDomain = instanceDomain
36         a.InstanceURL = lines[0]
37         a.ClientID = lines[1]
38         a.ClientSecret = lines[2]
39         return nil
40 }