Update internal/serializer/msgpack.go

This commit is contained in:
gvsafronov committed 2026-10-04 20:18:32 +00:00
1 parent afbc88c3e8
commit 7fd163af92
1 file changed
+51 -1
+51 -1
View File
@@ -10,18 +10,68 @@
// Файл: internal/serializer/msgpack.go // Файл: internal/serializer/msgpack.go
// Назначение: Сериализация и десериализация документов в формате MessagePack. // Назначение: Сериализация и десериализация документов в формате MessagePack.
// Используется библиотека vmihailenco/msgpack для высокой производительности. // Используется библиотека vmihailenco/msgpack/v5 для высокой производительности.
//
// MessagePack — это эффективный бинарный формат сериализации, который:
// - компактнее JSON (меньше размер);
// - быстрее при сериализации/десериализации;
// - поддерживает все основные типы данных;
// - позволяет сериализовать структуры Go с учётом тегов `msgpack`/`json`
// (поведение зависит от настроек библиотеки).
//
// Данный пакет предоставляет простую обёртку для унификации
// использования MessagePack во всём проекте.
// Package serializer предоставляет обёртки над сериализацией в формат
// MessagePack. Используется для эффективного хранения и передачи
// документов внутри СУБД futriis.
package serializer package serializer
import ( import (
"github.com/vmihailenco/msgpack/v5" "github.com/vmihailenco/msgpack/v5"
) )
// Marshal сериализует значение в формат MessagePack.
//
// Параметры:
// - v: любое значение Go (структура, карта, срез, примитив и т.д.).
//
// Возвращает:
// - []byte: сериализованные данные;
// - error: ошибка при сериализации (например, при наличии
// несериализуемых типов, таких как каналы или функции).
//
// Пример использования:
//
// data, err := serializer.Marshal(myStruct)
// if err != nil {
// return err
// }
// // data содержит бинарное представление myStruct
func Marshal(v interface{}) ([]byte, error) { func Marshal(v interface{}) ([]byte, error) {
return msgpack.Marshal(v) return msgpack.Marshal(v)
} }
// Unmarshal десериализует данные из формата MessagePack в значение.
//
// Параметры:
// - data: бинарные данные в формате MessagePack;
// - v: указатель на значение, в которое нужно десериализовать данные.
//
// Возвращает:
// - error: ошибка при десериализации (например, если данные повреждены
// или не соответствуют типу v).
//
// Важно: v должен быть указателем (!), иначе функция вернёт ошибку.
//
// Пример использования:
//
// var myStruct MyStruct
// err := serializer.Unmarshal(data, &myStruct)
// if err != nil {
// return err
// }
// // myStruct содержит восстановленные данные
func Unmarshal(data []byte, v interface{}) error { func Unmarshal(data []byte, v interface{}) error {
return msgpack.Unmarshal(data, v) return msgpack.Unmarshal(data, v)
} }