Add delete command to fileStore

This commit is contained in:
Soam Vasani
2016-09-10 01:01:27 -07:00
parent 6ea465c67c
commit 60de12dfce
2 changed files with 24 additions and 4 deletions
+19 -4
View File
@@ -19,6 +19,7 @@ package controller
import (
"io/ioutil"
"log"
"os"
"path"
)
@@ -27,6 +28,7 @@ type requestType int
const (
READ requestType = iota
WRITE
DELETE
)
type (
@@ -67,6 +69,8 @@ func (fs *fileStore) fileStoreService() {
response.fileContents, response.error = ioutil.ReadFile(path.Join(fs.root, req.fileName))
case WRITE:
response.error = ioutil.WriteFile(path.Join(fs.root, req.fileName), req.fileContents, 0600)
case DELETE:
response.error = os.Remove(path.Join(fs.root, req.fileName))
default:
log.Panic("bad request")
}
@@ -75,24 +79,35 @@ func (fs *fileStore) fileStoreService() {
}
func (fs *fileStore) read(fileName string) ([]byte, error) {
req := &fileStoreRequest{
req := fileStoreRequest{
requestType: READ,
fileName: fileName,
responseChannel: make(chan fileStoreResponse),
}
fs.requestChannel <- *req
fs.requestChannel <- req
response := <-req.responseChannel
return response.fileContents, response.error
}
func (fs *fileStore) write(fileName string, contents []byte) error {
req := &fileStoreRequest{
req := fileStoreRequest{
requestType: WRITE,
fileName: fileName,
fileContents: contents,
responseChannel: make(chan fileStoreResponse),
}
fs.requestChannel <- *req
fs.requestChannel <- req
response := <-req.responseChannel
return response.error
}
func (fs *fileStore) delete(fileName string) error {
req := fileStoreRequest{
requestType: DELETE,
fileName: fileName,
responseChannel: make(chan fileStoreResponse),
}
fs.requestChannel <- req
response := <-req.responseChannel
return response.error
}
+5
View File
@@ -55,4 +55,9 @@ func TestFileStore(t *testing.T) {
if string(observedContents) != string(contents) {
t.Fatalf("contents don't match")
}
err = fs.delete(path)
if err != nil {
t.Fatalf("error: %v", err)
}
}