Created
March 21, 2022 01:34
-
-
Save yaliv/44be42bdc9d3c07148056da35500869c to your computer and use it in GitHub Desktop.
Simple storage in a JSON file
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package secretstore | |
import ( | |
"encoding/json" | |
"errors" | |
"os" | |
) | |
type Secret struct { | |
ID int64 `json:"id"` | |
Value string `json:"value"` | |
} | |
const filename = ".secret.json" | |
func Initialize() error { | |
// Check if file doesn't exist. | |
if _, err := os.Stat(filename); errors.Is(err, os.ErrNotExist) { | |
// Create it. | |
if err1 := os.WriteFile(filename, []byte("[]"), os.ModePerm); err1 != nil { | |
return err1 | |
} | |
} | |
return nil | |
} | |
func Get() ([]Secret, error) { | |
// Read file content. | |
content, err := os.ReadFile(filename) | |
if err != nil { | |
return nil, err | |
} | |
// Parse it. | |
var secrets []Secret | |
if err := json.Unmarshal(content, &secrets); err != nil { | |
return nil, err | |
} | |
return secrets, nil | |
} | |
func Set(data []Secret) error { | |
// Serialize the data. | |
out, err := json.MarshalIndent(data, "", " ") | |
if err != nil { | |
return err | |
} | |
// Write it to file. | |
return os.WriteFile(filename, out, os.ModePerm) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment