diff --git a/internal/serializer/msgpack.go b/internal/serializer/msgpack.go index af2016e..62a04ca 100644 --- a/internal/serializer/msgpack.go +++ b/internal/serializer/msgpack.go @@ -10,18 +10,68 @@ // Файл: internal/serializer/msgpack.go // Назначение: Сериализация и десериализация документов в формате MessagePack. -// Используется библиотека vmihailenco/msgpack для высокой производительности. +// Используется библиотека vmihailenco/msgpack/v5 для высокой производительности. +// +// MessagePack — это эффективный бинарный формат сериализации, который: +// - компактнее JSON (меньше размер); +// - быстрее при сериализации/десериализации; +// - поддерживает все основные типы данных; +// - позволяет сериализовать структуры Go с учётом тегов `msgpack`/`json` +// (поведение зависит от настроек библиотеки). +// +// Данный пакет предоставляет простую обёртку для унификации +// использования MessagePack во всём проекте. +// Package serializer предоставляет обёртки над сериализацией в формат +// MessagePack. Используется для эффективного хранения и передачи +// документов внутри СУБД futriis. package serializer import ( "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) { 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 { return msgpack.Unmarshal(data, v) -} +} \ No newline at end of file