Update internal/serializer/msgpack.go
This commit is contained in:
1 parent
afbc88c3e8
commit
7fd163af92
1 file changed
+52
-2
@@ -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)
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user