forked from golang-bristol/beer-server
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstorage.go
More file actions
42 lines (34 loc) · 938 Bytes
/
storage.go
File metadata and controls
42 lines (34 loc) · 938 Bytes
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
package main
import (
model "github.com/golang-bristol/beer-model"
)
// StorageType defines available storage types
type StorageType int
const (
// JSON will store data in JSON files saved on disk
JSON StorageType = iota
// Memory will store data in memory
Memory
)
// Storage represents all possible actions available to deal with data
type Storage interface {
SaveBeer(...model.Beer) error
SaveReview(...model.Review) error
FindBeer(model.Beer) ([]*model.Beer, error)
FindReview(model.Review) ([]*model.Review, error)
FindBeers() []model.Beer
FindReviews() []model.Review
}
func newStorage(storageType StorageType) (Storage, error) {
var stg Storage
var err error
switch storageType {
case Memory:
stg = new(StorageMemory)
case JSON:
// TODO: configuration setup - For the moment storage location for
// JSON files is current working directory.
stg, err = newStorageJSON("./data/")
}
return stg, err
}