summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/.gitignore1
-rw-r--r--api/buf.gen.yaml16
-rw-r--r--api/buf.lock7
-rw-r--r--api/buf.yaml9
-rw-r--r--api/touchpad/common/v1/enums.proto30
-rw-r--r--api/touchpad/common/v1/message.proto85
-rw-r--r--api/touchpad/meet/v1/request_response.proto24
-rw-r--r--api/touchpad/meet/v1/service.proto25
-rw-r--r--api/touchpad/swimmer/v1/request_response.proto30
-rw-r--r--api/touchpad/swimmer/v1/service.proto24
10 files changed, 251 insertions, 0 deletions
diff --git a/api/.gitignore b/api/.gitignore
new file mode 100644
index 0000000..6bca335
--- /dev/null
+++ b/api/.gitignore
@@ -0,0 +1 @@
+gen/ \ No newline at end of file
diff --git a/api/buf.gen.yaml b/api/buf.gen.yaml
new file mode 100644
index 0000000..2bdd033
--- /dev/null
+++ b/api/buf.gen.yaml
@@ -0,0 +1,16 @@
+version: v1
+plugins:
+ - name: go
+ out: gen/go
+ opt:
+ - paths=source_relative
+ - name: go-grpc
+ out: gen/go
+ opt:
+ - paths=source_relative
+ - name: grpc-gateway
+ out: gen/go
+ opt:
+ - paths=source_relative
+ - name: openapiv2
+ out: gen/openapiv2
diff --git a/api/buf.lock b/api/buf.lock
new file mode 100644
index 0000000..57e7364
--- /dev/null
+++ b/api/buf.lock
@@ -0,0 +1,7 @@
+# Generated by buf. DO NOT EDIT.
+version: v1
+deps:
+ - remote: buf.build
+ owner: googleapis
+ repository: googleapis
+ commit: c3e1b2e164044397af6f283b0773eddf
diff --git a/api/buf.yaml b/api/buf.yaml
new file mode 100644
index 0000000..69baf0f
--- /dev/null
+++ b/api/buf.yaml
@@ -0,0 +1,9 @@
+version: v1
+deps:
+ - buf.build/googleapis/googleapis
+breaking:
+ use:
+ - FILE
+lint:
+ use:
+ - DEFAULT
diff --git a/api/touchpad/common/v1/enums.proto b/api/touchpad/common/v1/enums.proto
new file mode 100644
index 0000000..909ead4
--- /dev/null
+++ b/api/touchpad/common/v1/enums.proto
@@ -0,0 +1,30 @@
+syntax = "proto3";
+
+package touchpad.common.v1;
+
+option go_package = "go.anshulg.com/touchpad/api/gen/go/touchpad/common/v1;common";
+option java_multiple_files = true;
+option java_outer_classname = "EnumsProto";
+option java_package = "com.anshulg.touchpad.common.v1";
+
+enum Gender {
+ GENDER_UNSPECIFIED = 0;
+ GENDER_MALE = 1;
+ GENDER_FEMALE = 2;
+}
+
+enum Stroke {
+ STROKE_UNSPECIFIED = 0;
+ STROKE_FLY = 1;
+ STROKE_BACK = 2;
+ STROKE_BREAST = 3;
+ STROKE_FREE = 4;
+ STROKE_MEDLEY = 5;
+}
+
+enum EventTimeResult {
+ EVENT_TIME_RESULT_UNSPECIFIED = 0;
+ EVENT_TIME_RESULT_OK = 1;
+ EVENT_TIME_RESULT_DQ = 2; // Disqualification
+ EVENT_TIME_RESULT_DNS = 3; // Did not start
+}
diff --git a/api/touchpad/common/v1/message.proto b/api/touchpad/common/v1/message.proto
new file mode 100644
index 0000000..3a0055e
--- /dev/null
+++ b/api/touchpad/common/v1/message.proto
@@ -0,0 +1,85 @@
+syntax = "proto3";
+
+package touchpad.common.v1;
+
+import "google/protobuf/duration.proto";
+import "google/protobuf/timestamp.proto";
+import "touchpad/common/v1/enums.proto";
+
+option go_package = "go.anshulg.com/touchpad/api/gen/go/touchpad/common/v1;common";
+option java_multiple_files = true;
+option java_outer_classname = "MessageProto";
+option java_package = "com.anshulg.touchpad.common.v1";
+
+message SwimMeet {
+ uint32 id = 1;
+ string meet_name = 2;
+ google.protobuf.Timestamp start = 3;
+ google.protobuf.Timestamp end = 4;
+
+ repeated Team teams = 5;
+
+ // Map key is Team.id
+ map<uint32, uint32> points = 6;
+}
+
+message Event {
+ uint32 id = 1;
+ uint32 meet_id = 2;
+
+ uint32 event_num = 3;
+ uint32 age_lo = 4;
+ uint32 age_hi = 5;
+ uint32 distance = 6;
+
+ oneof event {
+ IndividualEvent individual = 7;
+ RelayEvent relay = 8;
+ }
+}
+
+message IndividualEvent {
+ Gender gender = 1;
+
+ message IndividualEventTime {
+ Swimmer swimmer = 1;
+ EventTime time = 2;
+ }
+
+ repeated IndividualEventTime times = 2;
+}
+
+message RelayEvent {
+ message RelayEventTime {
+ string name = 1;
+ EventTime time = 2;
+ }
+
+ repeated RelayEventTime times = 1;
+}
+
+message EventTime {
+ uint32 event_id = 1;
+ Team team = 2;
+
+ uint32 heat = 3;
+ uint32 lane = 4;
+
+ EventTimeResult result = 5;
+ google.protobuf.Duration time = 6;
+ google.protobuf.Duration seed = 7;
+
+ int32 rank = 8;
+ float points = 9;
+}
+
+message Team {
+ uint32 id = 1;
+ string name = 2;
+}
+
+message Swimmer {
+ uint32 id = 1;
+ string name = 2;
+ Gender gender = 3;
+}
diff --git a/api/touchpad/meet/v1/request_response.proto b/api/touchpad/meet/v1/request_response.proto
new file mode 100644
index 0000000..32efdd1
--- /dev/null
+++ b/api/touchpad/meet/v1/request_response.proto
@@ -0,0 +1,24 @@
+syntax = "proto3";
+
+package touchpad.meet.v1;
+
+import "touchpad/common/v1/message.proto";
+
+option go_package = "go.anshulg.com/touchpad/api/gen/go/touchpad/meet/v1;meet";
+option java_multiple_files = true;
+option java_outer_classname = "RequestResponseProto";
+option java_package = "com.anshulg.touchpad.meet.v1";
+
+message GetMeetRequest {
+ uint32 id = 1;
+}
+message GetMeetResponse {
+ common.v1.SwimMeet meet = 1;
+}
+
+message GetEventsRequest {
+ uint32 id = 1;
+}
+message GetEventsResponse {
+ common.v1.Event events = 1;
+}
diff --git a/api/touchpad/meet/v1/service.proto b/api/touchpad/meet/v1/service.proto
new file mode 100644
index 0000000..75fa303
--- /dev/null
+++ b/api/touchpad/meet/v1/service.proto
@@ -0,0 +1,25 @@
+syntax = "proto3";
+
+package touchpad.meet.v1;
+
+import "google/api/annotations.proto";
+import "touchpad/meet/v1/request_response.proto";
+
+option go_package = "go.anshulg.com/touchpad/api/gen/go/touchpad/meet/v1;meet";
+option java_multiple_files = true;
+option java_outer_classname = "ServiceProto";
+option java_package = "com.anshulg.touchpad.meet.v1";
+
+service MeetService {
+ rpc GetMeet(GetMeetRequest) returns (GetMeetResponse) {
+ option (google.api.http) = {
+ get: "/v1/meet/{id}"
+ };
+ }
+
+ rpc GetEvents(GetEventsRequest) returns (GetEventsResponse) {
+ option (google.api.http) = {
+ get: "/v1/meet/{id}/events"
+ };
+ }
+}
diff --git a/api/touchpad/swimmer/v1/request_response.proto b/api/touchpad/swimmer/v1/request_response.proto
new file mode 100644
index 0000000..c5a5565
--- /dev/null
+++ b/api/touchpad/swimmer/v1/request_response.proto
@@ -0,0 +1,30 @@
+syntax = "proto3";
+
+package touchpad.swimmer.v1;
+
+import "touchpad/common/v1/message.proto";
+
+option go_package = "go.anshulg.com/touchpad/api/gen/go/touchpad/swimmer/v1;swimmer";
+option java_multiple_files = true;
+option java_outer_classname = "RequestResponseProto";
+option java_package = "com.anshulg.touchpad.swimmer.v1";
+
+message GetSwimmerRequest {
+ uint32 id = 1;
+}
+message GetSwimmerResponse {
+ common.v1.Swimmer swimmer = 1;
+}
+
+message GetSwimmerFullRequest {
+ uint32 id = 1;
+}
+message GetSwimmerFullResponse {
+ common.v1.Swimmer swimmer = 1;
+ common.v1.Team current_team = 2;
+
+ repeated common.v1.EventTime events = 3;
+
+ // Map key is common.v1.Stroke
+ map<uint32, common.v1.EventTime> top_times = 4;
+}
diff --git a/api/touchpad/swimmer/v1/service.proto b/api/touchpad/swimmer/v1/service.proto
new file mode 100644
index 0000000..072557a
--- /dev/null
+++ b/api/touchpad/swimmer/v1/service.proto
@@ -0,0 +1,24 @@
+syntax = "proto3";
+
+package touchpad.swimmer.v1;
+
+import "google/api/annotations.proto";
+import "touchpad/swimmer/v1/request_response.proto";
+
+option go_package = "go.anshulg.com/touchpad/api/gen/go/touchpad/swimmer/v1;swimmer";
+option java_multiple_files = true;
+option java_outer_classname = "ServiceProto";
+option java_package = "com.anshulg.touchpad.swimmer.v1";
+
+service SwimmerService {
+ rpc GetSwimmer(GetSwimmerRequest) returns (GetSwimmerResponse) {
+ option (google.api.http) = {
+ get: "/v1/swimmer/{id}"
+ };
+ }
+ rpc GetSwimmerFull(GetSwimmerFullRequest) returns (GetSwimmerFullResponse) {
+ option (google.api.http) = {
+ get: "/v1/swimmer/{id}/full"
+ };
+ }
+}