// agent.proto
message Agent {
Permission permission = 1;
google.protobuf.Timestamp born_time = 2;
message Permission {
Type type = 1;
enum Type {
KILLNONE = 0;
KILLALL = 1;
DANCE = 2;
}
}
}
Затем сканирует строку SQL в структуру protobuf агента:
// main.go
var a proto.Agent
.....
... row.Scan(&a.Permission.Type,...)
Этот тип разрешения сохраняется как простой MariaDB INT () value = 0
для типа по умолчанию.Так что я не могу сканировать это напрямую.Поэтому я сделал временную структуру, где Type int32
, и просканировал строку в эту временную структуру после того, что попытался отобразить поля временной структуры в структуру protobuf, но безуспешно.Подобные проблемы у меня возникали, когда я хотел сканировать строковые значения MariaDB в поля типа байта [], но я решил это с моей временной структурой []byte(tmp.UUID)
.
Что такое общие шаблоны для сканирования базы данных ROW (одна строка) в сообщение protubufкогда используются нестандартные типы полей protobuf?
EDIT: Должна ли быть какая-то дополнительная 0
обработка значений?