forked from mkideal/onepw
/
repository.go
44 lines (35 loc) · 959 Bytes
/
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
package core
import (
"io/ioutil"
)
// fileRepository implements BoxRepository interface
type fileRepository struct {
filename string
}
// NewFileRepository creates a FileRepository
func NewFileRepository(filename string) BoxRepository {
return &fileRepository{filename: filename}
}
// Load implements BoxRepository.Load method
func (repo *fileRepository) Load() ([]byte, error) {
return ioutil.ReadFile(repo.filename)
}
// Save implements BoxRepository.Save method
func (repo *fileRepository) Save(data []byte) error {
return ioutil.WriteFile(repo.filename, data, 0666)
}
// memRepository implements BoxRepository interface
// NOTE: only used to test
type memRepository struct {
data []byte
}
func NewMemRepository(data []byte) BoxRepository {
return &memRepository{data: data}
}
func (repo *memRepository) Load() ([]byte, error) {
return repo.data, nil
}
func (repo *memRepository) Save(data []byte) error {
repo.data = data
return nil
}