rc

package
v1.60.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 29, 2025 License: MIT Imports: 5 Imported by: 0

README

Package rc

Пакет rc предоставляет механизм управления удалённой конфигурацией с возможностью её обновления, объединения с конфигурацией-переопределением и валидации.

Types

Validator

Интерфейс Validator определяет метод для валидации конфигурации.

Config

Структура Config реализует управление конфигурацией с учётом переопределений, поддерживает блокировки и валидацию.

Methods:

New(validator Validator, overrideData []byte) *Config

Создаёт новый экземпляр Config с указанным валидатором и данными переопределения.

(c *Config) Upgrade(data []byte, newConfigPtr any, prevConfigPtr any) error

Обновляет конфигурацию:

  • объединяет переданные данные с переопределениями,
  • десериализует в newConfigPtr,
  • валидирует конфигурацию,
  • десериализует предыдущую конфигурацию в prevConfigPtr,
  • сохраняет новую конфигурацию как предыдущую.
Functions
Upgrade[T any](rc *Config, data []byte) (newCfg T, prevCfg T, err error)

Удобная обобщённая функция для обновления конфигурации с использованием типа T.

GenerateConfigSchema(cfgPtr any) schema.Schema

Генерирует схему конфигурации для переданной структуры с помощью генератора из пакета rc/schema.

Usage

Default usage flow
import (
    "github.com/txix-open/isp-kit/rc"
)

type MyConfig struct {
    // поля конфигурации
}

type MyValidator struct{}

func (v MyValidator) ValidateToError(value any) error {
    // реализовать валидацию
    return nil
}

func main() {
    validator := MyValidator{}
    overrideData := []byte(`{"some.key":"override value"}`)
    rcConfig := rc.New(validator, overrideData)

    data := []byte(`{"some.key":"value"}`)

    var newCfg, prevCfg MyConfig
    err := rcConfig.Upgrade(data, &newCfg, &prevCfg)
    if err != nil {
        panic(err)
    }
    // newCfg - новая конфигурация
    // prevCfg - предыдущая конфигурация
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GenerateConfigSchema

func GenerateConfigSchema(cfgPtr any) schema.Schema

func Upgrade added in v1.31.0

func Upgrade[T any](rc *Config, data []byte) (newCfg T, prevCfg T, err error)

nolint:ireturn,nonamedreturns

Types

type Config

type Config struct {
	// contains filtered or unexported fields
}

func New

func New(validator Validator, overrideData []byte) *Config

func (*Config) Upgrade

func (c *Config) Upgrade(data []byte, newConfigPtr any, prevConfigPtr any) error

type Validator

type Validator interface {
	ValidateToError(value any) error
}

Directories

Path Synopsis
nolint:goconst,mnd
nolint:goconst,mnd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL