textualize/storage/Local/ProjectDriver.go
Joshua Shoemaker 2963dac8a6 refact: moved storage behind interface
also better read and write methods
2023-03-28 23:50:54 -05:00

50 lines
1.3 KiB
Go

package storage
import (
"encoding/json"
"os"
storage "textualize/storage/Entities"
)
func (d LocalDriver) WriteProjectData(project storage.Project) bool {
jsonData, _ := json.MarshalIndent(project, "", " ")
writeError := WriteDataToAppDir(jsonData, "/projects/"+project.Name+"/", "Project.json")
return writeError == nil
}
func (d LocalDriver) ReadProjectDataByName(projectName string) storage.Project {
projectData := storage.Project{}
readError := AssignFileDataToStruct("/projects/"+projectName+"/Project.json", &projectData)
if readError != nil {
return storage.Project{}
}
return projectData
}
func (d LocalDriver) ReadAllProjects() []storage.Project {
localProjects := make([]storage.Project, 0)
subdirectory := "/projects/"
isLocalStorageDirectoryCreated := createLocalStorageSubDirIfNeeded(subdirectory)
if !isLocalStorageDirectoryCreated {
return localProjects
}
localProjectDirEntries, readDirError := os.ReadDir(getLocalStoragePath() + subdirectory)
if readDirError != nil {
return localProjects
}
localProjectDirNames := make([]string, 0)
for _, fileEntry := range localProjectDirEntries {
localProjectDirNames = append(localProjectDirNames, fileEntry.Name())
}
for _, projectName := range localProjectDirNames {
localProjects = append(localProjects, d.ReadProjectDataByName(projectName))
}
return localProjects
}