2024-11-11 16:36:51 +03:00
|
|
|
// пакет для микрофункций с логгером
|
|
|
|
|
|
|
|
|
|
package microl
|
|
|
|
|
|
|
|
|
|
import (
|
2024-11-28 16:59:40 +03:00
|
|
|
"fmt"
|
2025-08-12 16:01:00 +03:00
|
|
|
"github.com/ManyakRus/starter/constants_starter"
|
2024-11-11 16:36:51 +03:00
|
|
|
"github.com/ManyakRus/starter/log"
|
2024-11-28 16:59:40 +03:00
|
|
|
"github.com/ManyakRus/starter/micro"
|
2024-11-11 16:36:51 +03:00
|
|
|
"os"
|
2024-11-29 14:33:29 +03:00
|
|
|
"strconv"
|
|
|
|
|
"time"
|
2024-11-11 16:36:51 +03:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// Getenv - возвращает переменную окружения
|
|
|
|
|
func Getenv(Name string, IsRequired bool) string {
|
|
|
|
|
TextError := "Need fill OS environment variable: "
|
2024-12-06 14:30:27 +03:00
|
|
|
Otvet, IsFind := os.LookupEnv(Name)
|
|
|
|
|
if IsFind == true {
|
|
|
|
|
return Otvet
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if IsRequired == true {
|
|
|
|
|
log.Panic(TextError + Name)
|
|
|
|
|
} else {
|
2024-12-06 14:31:34 +03:00
|
|
|
log.Warn(TextError + Name)
|
2024-11-11 16:36:51 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return Otvet
|
|
|
|
|
}
|
2024-11-28 16:59:40 +03:00
|
|
|
|
|
|
|
|
// Set_FieldFromEnv_String - устанавливает значение поля из переменной окружения
|
|
|
|
|
// Параметры:
|
|
|
|
|
// Object - указатель на структуру
|
|
|
|
|
// FieldName - имя поля
|
2024-11-29 14:33:29 +03:00
|
|
|
// IsRequired - обязательное ли поле
|
2024-11-28 16:59:40 +03:00
|
|
|
func Set_FieldFromEnv_String(StructReference any, FieldName string, IsRequired bool) {
|
|
|
|
|
Value := Getenv(FieldName, IsRequired)
|
|
|
|
|
|
|
|
|
|
err := micro.SetFieldValue(StructReference, FieldName, Value)
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
err = fmt.Errorf("SetFieldFrom() FieldName: %s error: %w", FieldName, err)
|
|
|
|
|
log.Error(err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-11-29 14:33:29 +03:00
|
|
|
|
|
|
|
|
// Set_FieldFromEnv_Int - устанавливает значение поля из переменной окружения
|
|
|
|
|
// Параметры:
|
|
|
|
|
// Object - указатель на структуру
|
|
|
|
|
// FieldName - имя поля
|
|
|
|
|
// IsRequired - обязательное ли поле
|
|
|
|
|
func Set_FieldFromEnv_Int(StructReference any, FieldName string, IsRequired bool) {
|
|
|
|
|
sValue := Getenv(FieldName, IsRequired)
|
|
|
|
|
|
|
|
|
|
Value, err := strconv.Atoi(sValue)
|
|
|
|
|
if err != nil {
|
|
|
|
|
err = fmt.Errorf("Atoi() FieldName: %s error: %w", FieldName, err)
|
|
|
|
|
log.Error(err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = micro.SetFieldValue(StructReference, FieldName, Value)
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
err = fmt.Errorf("SetFieldFrom() FieldName: %s error: %w", FieldName, err)
|
|
|
|
|
log.Error(err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Set_FieldFromEnv_Int64 - устанавливает значение поля из переменной окружения
|
|
|
|
|
// Параметры:
|
|
|
|
|
// Object - указатель на структуру
|
|
|
|
|
// FieldName - имя поля
|
|
|
|
|
// IsRequired - обязательное ли поле
|
|
|
|
|
func Set_FieldFromEnv_Int64(StructReference any, FieldName string, IsRequired bool) {
|
|
|
|
|
sValue := Getenv(FieldName, IsRequired)
|
|
|
|
|
|
|
|
|
|
Value, err := strconv.ParseInt(sValue, 10, 64)
|
|
|
|
|
if err != nil {
|
|
|
|
|
err = fmt.Errorf("ParseInt() FieldName: %s error: %w", FieldName, err)
|
|
|
|
|
log.Error(err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = micro.SetFieldValue(StructReference, FieldName, Value)
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
err = fmt.Errorf("SetFieldFrom() FieldName: %s error: %w", FieldName, err)
|
|
|
|
|
log.Error(err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Set_FieldFromEnv_Int32 - устанавливает значение поля из переменной окружения
|
|
|
|
|
// Параметры:
|
|
|
|
|
// Object - указатель на структуру
|
|
|
|
|
// FieldName - имя поля
|
|
|
|
|
// IsRequired - обязательное ли поле
|
|
|
|
|
func Set_FieldFromEnv_Int32(StructReference any, FieldName string, IsRequired bool) {
|
|
|
|
|
sValue := Getenv(FieldName, IsRequired)
|
|
|
|
|
|
|
|
|
|
var Value int32
|
|
|
|
|
Value, err := micro.Int32FromString(sValue)
|
|
|
|
|
if err != nil {
|
|
|
|
|
err = fmt.Errorf("ParseInt() FieldName: %s error: %w", FieldName, err)
|
|
|
|
|
log.Error(err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = micro.SetFieldValue(StructReference, FieldName, Value)
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
err = fmt.Errorf("SetFieldFrom() FieldName: %s error: %w", FieldName, err)
|
|
|
|
|
log.Error(err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Set_FieldFromEnv_Time - устанавливает значение поля из переменной окружения
|
|
|
|
|
// Параметры:
|
|
|
|
|
// Object - указатель на структуру
|
|
|
|
|
// FieldName - имя поля
|
|
|
|
|
// IsRequired - обязательное ли поле
|
|
|
|
|
func Set_FieldFromEnv_Time(StructReference any, FieldName string, IsRequired bool) {
|
|
|
|
|
sValue := Getenv(FieldName, IsRequired)
|
|
|
|
|
|
2025-08-12 13:02:09 +03:00
|
|
|
Value, err := time.Parse(constants_starter.LayoutDateTimeRus, sValue)
|
2024-11-29 14:33:29 +03:00
|
|
|
if err != nil {
|
|
|
|
|
err = fmt.Errorf("time.Parse() FieldName: %s error: %w", FieldName, err)
|
|
|
|
|
log.Error(err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = micro.SetFieldValue(StructReference, FieldName, Value)
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
err = fmt.Errorf("SetFieldFrom() FieldName: %s error: %w", FieldName, err)
|
|
|
|
|
log.Error(err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Set_FieldFromEnv_Date - устанавливает значение поля из переменной окружения
|
|
|
|
|
// Параметры:
|
|
|
|
|
// Object - указатель на структуру
|
|
|
|
|
// FieldName - имя поля
|
|
|
|
|
// IsRequired - обязательное ли поле
|
|
|
|
|
func Set_FieldFromEnv_Date(StructReference any, FieldName string, IsRequired bool) {
|
|
|
|
|
sValue := Getenv(FieldName, IsRequired)
|
|
|
|
|
|
2025-08-12 13:02:09 +03:00
|
|
|
Value, err := time.Parse(constants_starter.LayoutDateRus, sValue)
|
2024-11-29 14:33:29 +03:00
|
|
|
if err != nil {
|
|
|
|
|
err = fmt.Errorf("time.Parse() FieldName: %s error: %w", FieldName, err)
|
|
|
|
|
log.Error(err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = micro.SetFieldValue(StructReference, FieldName, Value)
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
err = fmt.Errorf("SetFieldFrom() FieldName: %s error: %w", FieldName, err)
|
|
|
|
|
log.Error(err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-12-02 13:58:30 +03:00
|
|
|
|
|
|
|
|
// Set_FieldFromEnv_Bool - устанавливает значение поля из переменной окружения
|
|
|
|
|
// Параметры:
|
|
|
|
|
// Object - указатель на структуру
|
|
|
|
|
// FieldName - имя поля
|
|
|
|
|
// IsRequired - обязательное ли поле
|
|
|
|
|
func Set_FieldFromEnv_Bool(StructReference any, FieldName string, IsRequired bool) {
|
|
|
|
|
sValue := Getenv(FieldName, IsRequired)
|
|
|
|
|
|
|
|
|
|
Value := micro.BoolFromString(sValue)
|
|
|
|
|
|
|
|
|
|
err := micro.SetFieldValue(StructReference, FieldName, Value)
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
err = fmt.Errorf("SetFieldFrom() FieldName: %s error: %w", FieldName, err)
|
|
|
|
|
log.Error(err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-12-02 14:28:04 +03:00
|
|
|
|
|
|
|
|
// ShowTimePassed - показывает время прошедшее с момента старта
|
|
|
|
|
// запускать:
|
|
|
|
|
// defer micro.ShowTimePassed(time.Now())
|
|
|
|
|
func ShowTimePassed(StartAt time.Time) {
|
|
|
|
|
log.Debugf("Time passed: %s\n", time.Since(StartAt))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ShowTimePassed_FormatText - показывает время прошедшее с момента старта
|
|
|
|
|
// запускать:
|
|
|
|
|
// defer micro.ShowTimePassed(time.Now())
|
|
|
|
|
func ShowTimePassed_FormatText(FormatText string, StartAt time.Time) {
|
|
|
|
|
log.Debugf(FormatText, time.Since(StartAt))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ShowTimePassedSeconds - показывает время секунд прошедшее с момента старта
|
|
|
|
|
// запускать:
|
|
|
|
|
// defer micro.ShowTimePassedSeconds(time.Now())
|
|
|
|
|
func ShowTimePassedSeconds(StartAt time.Time) {
|
|
|
|
|
log.Debugf("Time passed: %s\n", time.Since(StartAt).Round(time.Second))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ShowTimePassedMilliSeconds - показывает время миллисекунд прошедшее с момента старта
|
|
|
|
|
// запускать:
|
|
|
|
|
// defer micro.ShowTimePassedMilliSeconds(time.Now())
|
|
|
|
|
func ShowTimePassedMilliSeconds(StartAt time.Time) {
|
|
|
|
|
log.Debugf("Time passed: %s\n", time.Since(StartAt).Round(time.Millisecond))
|
|
|
|
|
}
|
2024-12-09 17:09:46 +03:00
|
|
|
|
|
|
|
|
// Set_StructField - устанавливает значение поля из переменной окружения
|
|
|
|
|
// Параметры:
|
|
|
|
|
// Object - указатель на структуру
|
|
|
|
|
// FieldName - имя поля
|
|
|
|
|
// Value - значение
|
|
|
|
|
func Set_StructField(StructReference any, FieldName string, Value any) {
|
|
|
|
|
err := micro.SetFieldValue(StructReference, FieldName, Value)
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
err = fmt.Errorf("Set_StructField() FieldName: %s error: %w", FieldName, err)
|
|
|
|
|
log.Error(err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-06-20 09:51:22 +03:00
|
|
|
|
|
|
|
|
// Show_Stage - показывает в логе переменную окружения STAGE
|
|
|
|
|
func Show_Stage() {
|
|
|
|
|
Stage := os.Getenv("STAGE")
|
|
|
|
|
log.Debugf("STAGE: %s", Stage)
|
|
|
|
|
}
|