Skip to content

tesspib/protobson

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

protobson

GoDev Go Report Card

Description

protobson is a Go library consisting of a BSON codec for Protobuf messages that can be used with mongo-go-driver.

This library uses the second major version of the Go Protobuf API.

Overview

Usage

Below is a snippet making use of this codec by registering it with the MongoDB Go library:

package main

import (
    "reflect"

    "go.mongodb.org/mongo-driver/bson"
    "go.mongodb.org/mongo-driver/mongo/options"
    "google.golang.org/protobuf/proto"

    "github.com/tesspib/protobson"
)

func main() {
    regBuilder := bson.NewRegistryBuilder()
    codec := protobson.NewCodec()

    msgType := reflect.TypeOf((*proto.Message)(nil)).Elem()
    registry := regBuilder.RegisterHookDecoder(msgType, codec).RegisterHookEncoder(msgType, codec).Build()

    opts := options.Client().SetRegistry(registry)
    // opts.ApplyURI("mongodb://localhost:27017")
    // ...
}

Note the use of RegisterHookDecoder and RegisterHookEncoder methods. Those ensure that given codec will be used to encode and decode values which type implement the interface. Since every Protobuf message implements the proto.Message interface, the codec will work with any message value.

Credits

This library is originally based on protomongo, part of the MIT-licensed dataform project by Tada Science, Inc.

About

BSON codec for Protobuf messages

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages