Skip to content

Instantly share code, notes, and snippets.

@yaliv
Created March 21, 2022 01:34
Show Gist options
  • Save yaliv/44be42bdc9d3c07148056da35500869c to your computer and use it in GitHub Desktop.
Save yaliv/44be42bdc9d3c07148056da35500869c to your computer and use it in GitHub Desktop.
Simple storage in a JSON file
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