aboutsummaryrefslogtreecommitdiffstats
path: root/todolist/file_store.go
diff options
context:
space:
mode:
authorGrant Ammons <gammons@gmail.com>2016-04-26 09:01:40 -0400
committerGrant Ammons <gammons@gmail.com>2016-04-26 09:01:40 -0400
commite3213b3ef2c84387b66eeb731f5493c5e6da6a5d (patch)
tree46b5ee148e7fd578d992f08ab89ba1d24a322d29 /todolist/file_store.go
parenta0f7203996439210b2a40663eeeeb8563ab03d68 (diff)
Get adding a todo working
Diffstat (limited to 'todolist/file_store.go')
-rw-r--r--todolist/file_store.go22
1 files changed, 22 insertions, 0 deletions
diff --git a/todolist/file_store.go b/todolist/file_store.go
index ac3dff5..3b5fbfe 100644
--- a/todolist/file_store.go
+++ b/todolist/file_store.go
@@ -18,6 +18,11 @@ func NewFileStore() *FileStore {
return &FileStore{FileLocation: usr.HomeDir + "/.todos.json"}
}
+func (f *FileStore) Add(todo *Todo) {
+ todo.Id = f.NextId()
+ f.Data = append(f.Data, *todo)
+}
+
func (f *FileStore) Load() {
data, err := ioutil.ReadFile(f.FileLocation)
if err != nil {
@@ -32,6 +37,23 @@ func (f *FileStore) Load() {
}
}
+func (f *FileStore) Save() {
+ data, _ := json.Marshal(f.Data)
+ if err := ioutil.WriteFile(f.FileLocation, []byte(data), 0644); err != nil {
+ fmt.Println("Error writing json file", err)
+ }
+}
+
func (f *FileStore) Todos() []Todo {
return f.Data
}
+
+func (f *FileStore) NextId() int {
+ maxId := 0
+ for _, todo := range f.Data {
+ if todo.Id > maxId {
+ maxId = todo.Id
+ }
+ }
+ return maxId + 1
+}