package store import ( "log/slog" "os" "path/filepath" "github.com/spf13/viper" ) func SetupStore() { path, err := filepath.Abs(viper.GetString("store.path")) if err != nil { slog.Error("could get full create storage path", "error", err, "path", viper.GetString("store.path")) panic(err) } err = os.MkdirAll(path, os.ModePerm) if err != nil { slog.Error("could get create storage directory", "error", err, "path", viper.GetString("store.path")) } slog.Info("Initialized File storage directory") } func SaveFile(fileName string, fileBytes []byte) (string, error) { path, err := filepath.Abs(viper.GetString("store.path")) if err != nil { slog.Error("could not save file,", "error", err) return "", err } osFile, err := os.Create(filepath.Join(path, fileName)) if err != nil { slog.Error("could not create file on disk,", "error", err) return "", err } defer osFile.Close() _, err = osFile.Write(fileBytes) if err != nil { slog.Error("could not write file content,", "error", err) return "", err } return fileName, nil } func OpenFile(fileName string) (*os.File, error) { path, err := filepath.Abs(viper.GetString("store.path")) if err != nil { slog.Error("Storage directory not accessible", "error", err) return nil, err } file, err := os.Open(filepath.Join(path, fileName)) return file, err } func DeleteFile(fileName string) error { path, err := filepath.Abs(viper.GetString("store.path")) if err != nil { slog.Error("Storage directory not accessible", "error", err) return err } file := filepath.Join(path, fileName) return os.Remove(file) } func absPath(fileName string) (string, error) { path, err := filepath.Abs(viper.GetString("store.path")) if err != nil { slog.Error("could not get full path for file,", "error", err) return "", err } return filepath.Join(path, fileName), nil }