// package warbot_config -- конфиг бота для хранения в базе
package warbot_config

import (
	"encoding/json"
	"fmt"
	"sync"
	"wartank/pkg/alias"
)

// ВарБотКонфиг -- конфиг бота для хранения в базе
type ВарБотКонфиг struct {
	ЕслиАвтозапуск_ bool           `json:"is_auto_run,omitempty"` // Признак автостарта при загрузке
	Логин_          string         `json:"login"`                 // Логин бота
	Пароль_         string         `json:"password"`              // Пароль бота
	Номер_          alias.БотНомер `json:"number"`                // Номер бота
	блок            sync.RWMutex
}

// Marshall -- сериализует конфиг в JSON
func (сам *ВарБотКонфиг) Marshall() []byte {
	binData, _ := json.Marshal(сам)
	return binData
}

// Unmarshal -- десериализует себя из байтового потока
func (сам *ВарБотКонфиг) Unmarshal(binData []byte) error {
	err := json.Unmarshal(binData, сам)
	if err != nil {
		return fmt.Errorf("WarBotConfig.Unmarshall(): err=\n\t%w", err)
	}
	return nil
}

// Логин -- возвращает логин
func (сам *ВарБотКонфиг) Логин() string {
	сам.блок.RLock()
	defer сам.блок.RUnlock()
	return сам.Логин_
}

// Номер -- возвращает номер бота
func (сам *ВарБотКонфиг) Номер() alias.БотНомер {
	сам.блок.RLock()
	defer сам.блок.RUnlock()
	return сам.Номер_
}
