Я пытаюсь понять, как интегрировать поля gorm.Model (deleted_at, create_at, id и т. Д.) В мои определения proto3. Однако я не могу использовать тип datetime для proto3. Я попытался найти документацию о том, как сериализовать поля gorm в строки (поскольку proto3 обрабатывает строки), но я ничего не нашел.
Кто-нибудь смог успешно использовать поля модели горма в своих прото-определениях? Я использую плагин go-micro для создания файлов * pb.go.
Вот мое текущее определение сообщения, которое не работает. Похоже, что в базе данных для deleted_at хранятся пустые строки, поскольку при запросе на deleted_at значение null база данных postgres ничего не возвращает.
message DatabaseConfig {
string address = 1;
int32 port = 2;
string databaseName = 3;
string username = 4;
string password = 5;
string databaseType = 6;
string quertStatement = 7;
int32 id = 8;
string createdAt = 9;
string updatedAt = 10;
string deletedAt = 11;
}
ОБНОВЛЕНИЕ: я обновил свой прототип до следующего, но gorm по-прежнему неправильно использует поля Id, CreatedAt, UpdatedAt и DeletedAt
syntax = "proto3";
package go.micro.srv.importer;
import "google/protobuf/timestamp.proto";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
service ImporterService {
rpc CreateDatabaseConfig(DatabaseConfig) returns (Response) {}
rpc RetrieveDatabaseConfig(GetRequest) returns (Response) {}
rpc UpdateDatabaseConfig(DatabaseConfig) returns (Response) {}
rpc DeleteDatabaseConfig(DatabaseConfig) returns (Response) {}
}
message GetRequest {}
message DatabaseConfig {
string address = 1;
int32 port = 2;
string databaseName = 3;
string username = 4;
string password = 5;
string databaseType = 6;
string quertStatement = 7;
int32 id = 8;
google.protobuf.Timestamp createdAt = 9 [(gogoproto.stdtime) = true];
google.protobuf.Timestamp updatedAt = 10 [(gogoproto.stdtime) = true];
google.protobuf.Timestamp deletedAt = 11 [(gogoproto.stdtime) = true];
}
message Response {
bool created = 1;
DatabaseConfig database_config = 2;
repeated DatabaseConfig databaseConfigs = 3;
}