-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhelloworld.proto
169 lines (154 loc) · 6.11 KB
/
helloworld.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
syntax = "proto3";
option go_package = "github.com/begonia-org/begonia/example/api/v1";
option java_multiple_files = true;
option java_package = "io.grpc.examples.helloworld";
option java_outer_classname = "HelloWorldProto";
option objc_class_prefix = "HLW";
package helloworld;
import "google/api/annotations.proto";
import "google/protobuf/field_mask.proto";
import "google/protobuf/descriptor.proto";
import "google/api/httpbody.proto";
import "google/protobuf/timestamp.proto";
import "begonia/api/v1/options.proto";
// The greeting service definition.
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {
option (google.api.http)={
post:"/api/v1/example/post"
body:"*"
};
}
rpc SayHelloRPC (HelloRequest) returns (HelloReply) {
}
rpc SayHelloGet (HelloRequest) returns (HelloReply) {
option (google.api.http)={
get:"/api/v1/example/{name}"
};
}
rpc SayHelloServerSideEvent (HelloRequest) returns (stream HelloReply) {
option (google.api.http) = {
get: "/api/v1/example/server/sse/{name}"
};
option (.begonia.api.v1.dont_use_http_response) = true;
}
rpc SayHelloClientStream (stream HelloRequest) returns (RepeatedReply) {
option (google.api.http) = {
post: "/api/v1/example/client/stream"
body: "*"
};
}
rpc SayHelloWebsocket (stream HelloRequest) returns (stream HelloReply) {
option (google.api.http) = {
get: "/api/v1/example/server/websocket"
};
}
rpc SayHelloBody (google.api.HttpBody) returns (google.api.HttpBody) {
option (google.api.http) = {
post: "/api/v1/example/body"
};
}
rpc SayHelloError (ErrorRequest) returns (HelloReply) {
option (google.api.http) = {
get: "/api/v1/example/error/test"
};
}
}
message ErrorRequest {
string msg = 1;
int32 code = 2;
}
// The request message containing the user's name.
message HelloRequest {
string msg = 1;
string name = 2;
}
message HelloSubRequest{
string sub_msg = 1[json_name="sub_msg"];
// @gotags: validate:"required"
string sub_name = 2[json_name="sub_name",(.begonia.api.v1.validate)="required"];
// @gotags: validate:"required,gte=18,lte=35"
int32 sub_age = 4[json_name="sub_age",(.begonia.api.v1.validate)="required,gte=18,lte=35"];
google.protobuf.FieldMask update_mask = 3[json_name="update_mask"];
}
enum ExampleEnum {
EX_UNKNOWN = 0;
EX_STARTED = 1;
EX_RUNNING = 2;
EX_STOPPED = 3;
}
message HelloRequestWithValidator{
// @gotags: validate:"required"
string msg = 1;
// @gotags: validate:"required"
string name = 2;
int32 age = 3[(.begonia.api.v1.validate)="required,gte=18,lte=35"];
uint64 age2 = 15[(.begonia.api.v1.validate)="required,gte=18,lte=35"];
double float_num = 16[(.begonia.api.v1.validate)="required"];
bool bool_data = 17[json_name="bool_data",(.begonia.api.v1.validate)="required"];
bytes bytes_data=18[json_name="bytes_data",(.begonia.api.v1.validate)="required"];
HelloSubRequest sub = 4[(.begonia.api.v1.validate)="required"];
HelloRequest sub2=14[(.begonia.api.v1.validate)="required_if=Name hello"];
// @gotags: validate:"required,dive"
repeated HelloSubRequest subs = 5[json_name="subs",(.begonia.api.v1.validate)="required,dive"];
google.protobuf.FieldMask update_mask = 6[json_name="update_mask"];
// @gotags: validate:"required,dive"
map<string, HelloSubRequest> sub_map = 7[json_name="sub_map",(.begonia.api.v1.validate)="required,dive"];
// @gotags: validate:"required"
map<string, string> sub_map2 = 8[json_name="sub_map2",(.begonia.api.v1.validate)="required,dive"];
// @gotags: validate:"required"
ExampleEnum ex_enum = 9[json_name="ex_enum",(.begonia.api.v1.validate)="required,oneof=EX_STARTED EX_RUNNING EX_STOPPED"];
// @gotags: validate:"required"
repeated ExampleEnum ex_enums = 10[json_name="ex_enums",(.begonia.api.v1.validate)="required"];
// @gotags: validate:"required"
repeated string strs = 11[json_name="strs",(.begonia.api.v1.validate)="required"];
map<string, ExampleEnum> enum_map = 12[json_name="str_map",(.begonia.api.v1.validate)="required"];
map<string, ExampleEnum> enum_map2 = 13[json_name="enum_map2"];
}
// The response message containing the greetings
message HelloReply {
string message = 1;
string name = 2;
}
message RepeatedReply{
repeated HelloReply replies = 1;
}
enum EnumAllow {
ALLOW = 0;
DENY = 1;
}
message ExampleMessage {
string message = 1;
int32 code = 2;
double float_num = 3[json_name="float_num"];
float float_data = 14[json_name="float_data"];
bytes byte_data = 4[json_name="byte_data"];
bool bool_data = 5[json_name="bool_data"];
EnumAllow allow = 6;
repeated int64 repeated_data = 7[json_name="repeated_data"];
fixed64 fixed_data = 8[json_name="fixed_data"];
sfixed64 sfixed_data = 9[json_name="sfixed_data"];
sfixed32 sfixed32_data = 10[json_name="sfixed32_data"];
fixed32 fixed32_data = 11[json_name="fixed32_data"];
repeated HelloRequest repeated_msg = 12[json_name="repeated_msg"];
HelloRequest msg = 13;
google.protobuf.FieldMask mask = 18;
}
message ExampleTable{
// @gotags: gorm:"primaryKey;autoIncrement;comment:自增id"
int64 ID = 1;
// @gotags: json:"uid" primary:"uid" gorm:"column:uid;type:varchar(36);not null;unique;comment:uid"
string uid = 2;
// @gotags: json:"-" owner:"owner" gorm:"column:owner;not null;type:varchar(64);comment:app服务拥有者"
string owner = 3;
// @gotags: json:"is_deleted" gorm:"column:is_deleted;type:tinyint;comment:proto服务是否删除"
bool is_deleted=12 [json_name="is_deleted"];
// @gotags: doc:"完成时间" gorm:"column:created_at;type:datetime;serializer:timepb;comment:定时任务的最近一次完成时间"
google.protobuf.Timestamp created_at = 10[json_name="created_at"];
// @gotags: doc:"更新时间" gorm:"column:updated_at;type:datetime;serializer:timepb;comment:定时任务的更新时间"
google.protobuf.Timestamp updated_at = 11[json_name="updated_at"];
// @gotags: gorm:"-" json:"-"
google.protobuf.FieldMask update_mask = 18[json_name="update_mask"];
}