The package and related files have been renamed to better reflect the project's naming conventions. This change includes: - Renaming the main package file - Updating all references in integration tests - Maintaining all existing functionality without behavior changes
125 lines
4.3 KiB
Go
125 lines
4.3 KiB
Go
// Package benadis_rac provides functionality for managing 1C service mode
|
||
package benadis_rac
|
||
|
||
import (
|
||
"context"
|
||
"fmt"
|
||
|
||
"git.benadis.ru/gitops/benadis-rac/internal/config"
|
||
"git.benadis.ru/gitops/benadis-rac/internal/logger"
|
||
"git.benadis.ru/gitops/benadis-rac/internal/service"
|
||
)
|
||
|
||
// ServiceModeManager интерфейс для управления сервисным режимом
|
||
type ServiceModeManager interface {
|
||
// EnableServiceMode включает сервисный режим
|
||
EnableServiceMode(ctx context.Context) error
|
||
|
||
// DisableServiceMode выключает сервисный режим
|
||
DisableServiceMode(ctx context.Context) error
|
||
|
||
// GetServiceModeStatus получает текущий статус сервисного режима
|
||
GetServiceModeStatus(ctx context.Context) (bool, error)
|
||
}
|
||
|
||
// Client клиент для работы с 1C сервисным режимом
|
||
type Client struct {
|
||
service *service.ServiceModeService
|
||
}
|
||
|
||
// Config конфигурация для создания клиента
|
||
type Config struct {
|
||
ConfigPath string // Путь к файлу конфигурации
|
||
SecretPath string // Путь к файлу с секретами
|
||
ProjectPath string // Путь к файлу проекта
|
||
LogLevel string // Уровень логирования (Debug, Info, Warn, Error)
|
||
}
|
||
|
||
// NewClient создает новый клиент для управления сервисным режимом
|
||
func NewClient(cfg Config) (*Client, error) {
|
||
if cfg.ConfigPath == "" {
|
||
cfg.ConfigPath = "config.yaml"
|
||
}
|
||
if cfg.SecretPath == "" {
|
||
cfg.SecretPath = "secret.yaml"
|
||
}
|
||
if cfg.ProjectPath == "" {
|
||
cfg.ProjectPath = "project.yaml"
|
||
}
|
||
if cfg.LogLevel == "" {
|
||
cfg.LogLevel = "Info"
|
||
}
|
||
|
||
// Загружаем конфигурацию
|
||
appConfig, err := config.LoadConfig(cfg.ConfigPath, cfg.SecretPath, cfg.ProjectPath)
|
||
if err != nil {
|
||
return nil, fmt.Errorf("failed to load config: %w", err)
|
||
}
|
||
|
||
// Переопределяем уровень логирования если указан
|
||
if appConfig.Project != nil && appConfig.Project.ServiceMode != nil {
|
||
appConfig.Project.ServiceMode.LogLevel = cfg.LogLevel
|
||
}
|
||
|
||
// Валидируем конфигурацию
|
||
if err := appConfig.Validate(); err != nil {
|
||
return nil, fmt.Errorf("config validation failed: %w", err)
|
||
}
|
||
|
||
// Создаем логгер
|
||
logLevel := "Info"
|
||
if appConfig.Project != nil && appConfig.Project.ServiceMode != nil && appConfig.Project.ServiceMode.LogLevel != "" {
|
||
logLevel = appConfig.Project.ServiceMode.LogLevel
|
||
}
|
||
log := logger.NewLogger(logLevel)
|
||
|
||
// Создаем сервис
|
||
svc := service.NewServiceModeService(appConfig, log)
|
||
|
||
return &Client{
|
||
service: svc,
|
||
}, nil
|
||
}
|
||
|
||
// EnableServiceMode включает сервисный режим
|
||
func (c *Client) EnableServiceMode(ctx context.Context) error {
|
||
return c.service.EnableServiceMode(ctx)
|
||
}
|
||
|
||
// DisableServiceMode выключает сервисный режим
|
||
func (c *Client) DisableServiceMode(ctx context.Context) error {
|
||
return c.service.DisableServiceMode(ctx)
|
||
}
|
||
|
||
// GetServiceModeStatus получает текущий статус сервисного режима
|
||
// Возвращает true если сервисный режим включен, false если выключен
|
||
func (c *Client) GetServiceModeStatus(ctx context.Context) (bool, error) {
|
||
return c.service.GetServiceModeStatus(ctx)
|
||
}
|
||
|
||
// NewClientFromConfig создает клиент из готовой конфигурации
|
||
func NewClientFromConfig(appConfig *config.AppConfig, logLevel string) (*Client, error) {
|
||
if logLevel != "" && appConfig.Project != nil && appConfig.Project.ServiceMode != nil {
|
||
appConfig.Project.ServiceMode.LogLevel = logLevel
|
||
}
|
||
|
||
// Валидируем конфигурацию
|
||
if err := appConfig.Validate(); err != nil {
|
||
return nil, fmt.Errorf("config validation failed: %w", err)
|
||
}
|
||
|
||
// Создаем логгер
|
||
logLevelToUse := "Info"
|
||
if appConfig.Project != nil && appConfig.Project.ServiceMode != nil && appConfig.Project.ServiceMode.LogLevel != "" {
|
||
logLevelToUse = appConfig.Project.ServiceMode.LogLevel
|
||
}
|
||
log := logger.NewLogger(logLevelToUse)
|
||
|
||
// Создаем сервис
|
||
svc := service.NewServiceModeService(appConfig, log)
|
||
|
||
return &Client{
|
||
service: svc,
|
||
}, nil
|
||
}
|