setup interface for file operations

This commit is contained in:
Carlosokumu 2024-08-29 19:56:50 +03:00
parent 08fcb7cdba
commit 20cf7bdb44
Signed by: carlos
GPG Key ID: 7BD6BC8160A5C953

View File

@ -0,0 +1,50 @@
package utils
import (
"encoding/json"
"os"
)
type AccountFileHandlerInterface interface {
EnsureFileExists() error
ReadAccountData() (map[string]string, error)
WriteAccountData(data map[string]string) error
}
type AccountFileHandler2 struct {
FilePath string
}
// Implement the methods required by AccountFileHandlerInterface.
func (afh *AccountFileHandler2) EnsureFileExists() error {
f, err := os.OpenFile(afh.FilePath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
return err
}
return f.Close()
}
func (afh *AccountFileHandler2) ReadAccountData() (map[string]string, error) {
jsonData, err := os.ReadFile(afh.FilePath)
if err != nil {
return nil, err
}
var accountData map[string]string
err = json.Unmarshal(jsonData, &accountData)
if err != nil {
return nil, err
}
return accountData, nil
}
func (afh *AccountFileHandler2) WriteAccountData(data map[string]string) error {
jsonData, err := json.Marshal(data)
if err != nil {
return err
}
return os.WriteFile(afh.FilePath, jsonData, 0644)
}