diff options
-rw-r--r-- | api/.gitignore | 1 | ||||
-rw-r--r-- | api/buf.gen.yaml | 16 | ||||
-rw-r--r-- | api/buf.lock | 7 | ||||
-rw-r--r-- | api/buf.yaml | 9 | ||||
-rw-r--r-- | api/touchpad/common/v1/enums.proto | 30 | ||||
-rw-r--r-- | api/touchpad/common/v1/message.proto | 85 | ||||
-rw-r--r-- | api/touchpad/meet/v1/request_response.proto | 24 | ||||
-rw-r--r-- | api/touchpad/meet/v1/service.proto | 25 | ||||
-rw-r--r-- | api/touchpad/swimmer/v1/request_response.proto | 30 | ||||
-rw-r--r-- | api/touchpad/swimmer/v1/service.proto | 24 |
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" + }; + } +} |