Golang gRP C формат ключа сериализации базы данных, определенный в struct - PullRequest
1 голос
/ 29 апреля 2020

Я хочу использовать структуры go, сгенерированные компилятором gRP C непосредственно для транзакций базы данных, но проблема в том, что только поле сериализации json установлено в gRP C.

Есть ли способ установить дополнительные ключи сериализации (как показано ниже) или есть другой golang указанный c способ сообщить драйверу базы данных (sqlx поверх database/sql), что json должен использоваться формат ключа?

Пример: компилятор gRP C создает следующую структуру:

type HelloWorld struct {
  TraceId string `protobuf:"bytes,1,opt,name=trace_id,json=traceId,proto3" json:"trace_id,omitempty"`
...

Что я хотел бы иметь:

type HelloWorld struct {
  TraceId string `db:"trace_id" protobuf:"bytes,1,opt,name=trace_id,json=traceId,proto3" json:"trace_id,omitempty"`
...

Временным обходным решением будет написание sql запросов, которые используют псевдонимы (traceid вместо trace_id в этом примере), но это не выглядит согласованным и добавляет много сложности.

1 Ответ

3 голосов
/ 29 апреля 2020

Я думаю, что в настоящее время нет встроенного способа сделать это. Однако вас может заинтересовать следующая тема: https://github.com/golang/protobuf/issues/52

Кроме этого, я думаю, вы можете просто создать еще одну структуру для доступа к базе данных и сделать явное отображение, которое может быть более читаемым.

...