Какой ORM вы используете для сервисов golang, которые используют protobuf для сериализации данных?

TL; DR: Кто-нибудь создал службу с golang + protobuf + SQL? Если вы использовали ORM (или ORM-подобную библиотеку), какой из них?

Читайте больше для контекста:

Я создаю службу в golang, которая использует protobuf для сериализации данных. Таким образом, все мои типы и вызовы API определены в файлах .proto, а затем код Go генерируется с помощью protoc.

Я хотел бы использовать ORM для сохранения данных в MySQL. Я google вокруг и нашел gorm, gorp и кучу других библиотек. Кажется, что наличие какой-либо метки или аннотации внутри вашей структуры является общим шаблоном с этими библиотеками.

Пример из документов gorp:

type Post struct {
    // db tag lets you specify the column name if it differs from the struct field
    Id      int64  `db:"post_id"`
    Created int64
    Title   string `db:",size:50"`               // Column size set to 50
    Body    string `db:"article_body,size:1024"` // Set both column name and size
}

Из документов gorm:

type Profile struct {
    gorm.Model
    Name string
}

type User struct {
    gorm.Model
    Profile      Profile `gorm:"ForeignKey:ProfileRefer"` // use ProfileRefer as foreign key
    ProfileRefer int
}

Итак, я попытался посмотреть, есть ли способ добавить эти аннотации к сообщениям в моих файлах .proto и нашел этот вопрос github, говорящий об этом не будет поддерживаться.

Итак, я прихожу к Qaru за советом. Конечно, кто-то там, используя protobufs в golang с SQL, не так ли? И используя ORM? Итак, какой из них вы используете?

Ответ 1

Я нашел эту библиотеку https://github.com/favadi/protoc-go-inject-tag

Вы можете аннотировать своих участников в прото файлах

// @inject_tag: valid:"ip"