package config import ( "fmt" "os" "audio-catalyst/internal/domain/entities" "gopkg.in/yaml.v3" ) // Repository реализация ConfigRepository type Repository struct{} // NewRepository создает новый репозиторий конфигурации func NewRepository() *Repository { return &Repository{} } // Load загружает конфигурацию из файла func (r *Repository) Load(filename string) (*entities.Config, error) { data, err := os.ReadFile(filename) if err != nil { return nil, fmt.Errorf("не удалось прочитать файл конфигурации: %w", err) } var config entities.Config if err := yaml.Unmarshal(data, &config); err != nil { return nil, fmt.Errorf("не удалось разобрать конфигурацию: %w", err) } return &config, nil } // Save сохраняет конфигурацию в файл func (r *Repository) Save(filename string, config *entities.Config) error { data, err := yaml.Marshal(config) if err != nil { return fmt.Errorf("не удалось сериализовать конфигурацию: %w", err) } if err := os.WriteFile(filename, data, 0644); err != nil { return fmt.Errorf("не удалось записать файл конфигурации: %w", err) } return nil }