@@ -42,6 +42,7 @@ type Datastore struct {
42
42
Settings Settings
43
43
Websocket Websocket
44
44
Logger Logger
45
+ FileStorage FileStorage
45
46
}
46
47
47
48
type Settings interface {
@@ -74,6 +75,14 @@ func (ds *Datastore) TurnOffLogging() {
74
75
dat .SetErrorLogger (nil )
75
76
}
76
77
78
+ type FileStorage interface {
79
+ OpenFile (fileIdentifier string ) (b []byte , fileIdentifier string , fullURL string , err error )
80
+ GetURL (fileIdentifier string ) (fullURL string )
81
+ // always returning bytes might be a little expensive, but it makes the interface much more reasonable
82
+ SaveFile (fileIdentifier string , b io.Reader ) (fileIdentifier string , fullURL string , err error )
83
+ }
84
+
85
+
77
86
// type Logger struct {
78
87
// errLog string
79
88
// }
@@ -117,12 +126,13 @@ func (ds *Datastore) TurnOffLogging() {
117
126
118
127
// New - returns a new datastore which contains redis, database and settings.
119
128
// everything in the datastore should be concurrent safe and stand within thier own right. i.e. accessible at anypoint from the app
120
- func New (logger Logger , settings Settings , cache Cache , ws Websocket ) * Datastore {
129
+ func New (logger Logger , settings Settings , cache Cache , filestorage FileStorage , ws Websocket ) * Datastore {
121
130
store := Simple ()
122
131
store .Logger = logger
123
132
store .Settings = settings
124
133
store .DB = getDBConnection (store , cache )
125
134
store .Cache = cache
135
+ store .FileStorage =
126
136
return store
127
137
}
128
138
0 commit comments