1
1

Добавить тесты репозитория файловой системы и реализовать функциональность журналирования файлов.

- Реализовать тесты для поиска MP3-файлов и переименования/организации папок книг в репозитории файловой системы.
- Создать FileLogger для записи сообщений в файл с поддержкой различных уровней журналирования и управления размером файлов.
- Разработать репозиторий RuTracker для обработки поиска торрентов, получения метаданных и загрузки торрент-файлов.
- Добавить тесты для нормализации URL в репозиторий RuTracker.
- Реализовать адаптер логгера TUI для отображения логов в терминальном интерфейсе и, при необходимости, для записи логов в базовый логгер.
- Создать менеджер TUI для управления пользовательским интерфейсом приложения, включая главное меню, экран обработки, настройки и отображение результатов.
This commit is contained in:
Dmitriy Fofanov
2025-09-29 20:40:05 +03:00
parent 49bea780aa
commit 72a66f1664
32 changed files with 4073 additions and 22 deletions

View File

@@ -0,0 +1,47 @@
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
}