From ffdc4e574fe131527858a65a4f60400e415eeb74 Mon Sep 17 00:00:00 2001 From: kaien Date: Fri, 20 Mar 2026 12:46:43 +0300 Subject: [PATCH] Initial commit --- stalker.pb.go | 1977 ++++++++++++++++++++++++++++++++++++++++++++ stalker.proto | 214 +++++ stalker_grpc.pb.go | 514 ++++++++++++ 3 files changed, 2705 insertions(+) create mode 100644 stalker.pb.go create mode 100644 stalker.proto create mode 100644 stalker_grpc.pb.go diff --git a/stalker.pb.go b/stalker.pb.go new file mode 100644 index 0000000..e20f34c --- /dev/null +++ b/stalker.pb.go @@ -0,0 +1,1977 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc v7.34.0 +// source: proto/stalker.proto + +package stalker + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Player represents a FaceIT player +type Player struct { + state protoimpl.MessageState `protogen:"open.v1"` + PlayerId string `protobuf:"bytes,1,opt,name=player_id,json=playerId,proto3" json:"player_id,omitempty"` + Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname,omitempty"` + Avatar string `protobuf:"bytes,3,opt,name=avatar,proto3" json:"avatar,omitempty"` + Country string `protobuf:"bytes,4,opt,name=country,proto3" json:"country,omitempty"` + FaceitUrl string `protobuf:"bytes,5,opt,name=faceit_url,json=faceitUrl,proto3" json:"faceit_url,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Player) Reset() { + *x = Player{} + mi := &file_proto_stalker_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Player) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Player) ProtoMessage() {} + +func (x *Player) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Player.ProtoReflect.Descriptor instead. +func (*Player) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{0} +} + +func (x *Player) GetPlayerId() string { + if x != nil { + return x.PlayerId + } + return "" +} + +func (x *Player) GetNickname() string { + if x != nil { + return x.Nickname + } + return "" +} + +func (x *Player) GetAvatar() string { + if x != nil { + return x.Avatar + } + return "" +} + +func (x *Player) GetCountry() string { + if x != nil { + return x.Country + } + return "" +} + +func (x *Player) GetFaceitUrl() string { + if x != nil { + return x.FaceitUrl + } + return "" +} + +// MatchStats represents individual player statistics in a match +type MatchStats struct { + state protoimpl.MessageState `protogen:"open.v1"` + Kills int32 `protobuf:"varint,1,opt,name=kills,proto3" json:"kills,omitempty"` + Deaths int32 `protobuf:"varint,2,opt,name=deaths,proto3" json:"deaths,omitempty"` + Assists int32 `protobuf:"varint,3,opt,name=assists,proto3" json:"assists,omitempty"` + SkillLevel int32 `protobuf:"varint,4,opt,name=skill_level,json=skillLevel,proto3" json:"skill_level,omitempty"` + Elo int32 `protobuf:"varint,5,opt,name=elo,proto3" json:"elo,omitempty"` + Headshots int32 `protobuf:"varint,6,opt,name=headshots,proto3" json:"headshots,omitempty"` + HeadshotsPct int32 `protobuf:"varint,7,opt,name=headshots_pct,json=headshotsPct,proto3" json:"headshots_pct,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MatchStats) Reset() { + *x = MatchStats{} + mi := &file_proto_stalker_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MatchStats) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MatchStats) ProtoMessage() {} + +func (x *MatchStats) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MatchStats.ProtoReflect.Descriptor instead. +func (*MatchStats) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{1} +} + +func (x *MatchStats) GetKills() int32 { + if x != nil { + return x.Kills + } + return 0 +} + +func (x *MatchStats) GetDeaths() int32 { + if x != nil { + return x.Deaths + } + return 0 +} + +func (x *MatchStats) GetAssists() int32 { + if x != nil { + return x.Assists + } + return 0 +} + +func (x *MatchStats) GetSkillLevel() int32 { + if x != nil { + return x.SkillLevel + } + return 0 +} + +func (x *MatchStats) GetElo() int32 { + if x != nil { + return x.Elo + } + return 0 +} + +func (x *MatchStats) GetHeadshots() int32 { + if x != nil { + return x.Headshots + } + return 0 +} + +func (x *MatchStats) GetHeadshotsPct() int32 { + if x != nil { + return x.HeadshotsPct + } + return 0 +} + +// TeamPlayer represents a player in a team +type TeamPlayer struct { + state protoimpl.MessageState `protogen:"open.v1"` + PlayerId string `protobuf:"bytes,1,opt,name=player_id,json=playerId,proto3" json:"player_id,omitempty"` + Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname,omitempty"` + Avatar string `protobuf:"bytes,3,opt,name=avatar,proto3" json:"avatar,omitempty"` + SkillLevel int32 `protobuf:"varint,4,opt,name=skill_level,json=skillLevel,proto3" json:"skill_level,omitempty"` + GamePlayerId string `protobuf:"bytes,5,opt,name=game_player_id,json=gamePlayerId,proto3" json:"game_player_id,omitempty"` + GamePlayerName string `protobuf:"bytes,6,opt,name=game_player_name,json=gamePlayerName,proto3" json:"game_player_name,omitempty"` + FaceitUrl string `protobuf:"bytes,7,opt,name=faceit_url,json=faceitUrl,proto3" json:"faceit_url,omitempty"` + Stats *MatchStats `protobuf:"bytes,8,opt,name=stats,proto3" json:"stats,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TeamPlayer) Reset() { + *x = TeamPlayer{} + mi := &file_proto_stalker_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TeamPlayer) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TeamPlayer) ProtoMessage() {} + +func (x *TeamPlayer) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TeamPlayer.ProtoReflect.Descriptor instead. +func (*TeamPlayer) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{2} +} + +func (x *TeamPlayer) GetPlayerId() string { + if x != nil { + return x.PlayerId + } + return "" +} + +func (x *TeamPlayer) GetNickname() string { + if x != nil { + return x.Nickname + } + return "" +} + +func (x *TeamPlayer) GetAvatar() string { + if x != nil { + return x.Avatar + } + return "" +} + +func (x *TeamPlayer) GetSkillLevel() int32 { + if x != nil { + return x.SkillLevel + } + return 0 +} + +func (x *TeamPlayer) GetGamePlayerId() string { + if x != nil { + return x.GamePlayerId + } + return "" +} + +func (x *TeamPlayer) GetGamePlayerName() string { + if x != nil { + return x.GamePlayerName + } + return "" +} + +func (x *TeamPlayer) GetFaceitUrl() string { + if x != nil { + return x.FaceitUrl + } + return "" +} + +func (x *TeamPlayer) GetStats() *MatchStats { + if x != nil { + return x.Stats + } + return nil +} + +// Team represents a team in a match +type Team struct { + state protoimpl.MessageState `protogen:"open.v1"` + TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` + Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname,omitempty"` + Avatar string `protobuf:"bytes,3,opt,name=avatar,proto3" json:"avatar,omitempty"` + Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` + Players []*TeamPlayer `protobuf:"bytes,5,rep,name=players,proto3" json:"players,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Team) Reset() { + *x = Team{} + mi := &file_proto_stalker_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Team) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Team) ProtoMessage() {} + +func (x *Team) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Team.ProtoReflect.Descriptor instead. +func (*Team) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{3} +} + +func (x *Team) GetTeamId() string { + if x != nil { + return x.TeamId + } + return "" +} + +func (x *Team) GetNickname() string { + if x != nil { + return x.Nickname + } + return "" +} + +func (x *Team) GetAvatar() string { + if x != nil { + return x.Avatar + } + return "" +} + +func (x *Team) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *Team) GetPlayers() []*TeamPlayer { + if x != nil { + return x.Players + } + return nil +} + +// MatchResult represents a single match result +type MatchResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + MatchId string `protobuf:"bytes,1,opt,name=match_id,json=matchId,proto3" json:"match_id,omitempty"` + GameId string `protobuf:"bytes,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` + Region string `protobuf:"bytes,3,opt,name=region,proto3" json:"region,omitempty"` + MatchType string `protobuf:"bytes,4,opt,name=match_type,json=matchType,proto3" json:"match_type,omitempty"` + GameMode string `protobuf:"bytes,5,opt,name=game_mode,json=gameMode,proto3" json:"game_mode,omitempty"` + MaxPlayers int32 `protobuf:"varint,6,opt,name=max_players,json=maxPlayers,proto3" json:"max_players,omitempty"` + TeamsSize int32 `protobuf:"varint,7,opt,name=teams_size,json=teamsSize,proto3" json:"teams_size,omitempty"` + Teams map[string]*Team `protobuf:"bytes,8,rep,name=teams,proto3" json:"teams,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + PlayingPlayers []string `protobuf:"bytes,9,rep,name=playing_players,json=playingPlayers,proto3" json:"playing_players,omitempty"` + CompetitionId string `protobuf:"bytes,10,opt,name=competition_id,json=competitionId,proto3" json:"competition_id,omitempty"` + CompetitionName string `protobuf:"bytes,11,opt,name=competition_name,json=competitionName,proto3" json:"competition_name,omitempty"` + CompetitionType string `protobuf:"bytes,12,opt,name=competition_type,json=competitionType,proto3" json:"competition_type,omitempty"` + OrganizerId string `protobuf:"bytes,13,opt,name=organizer_id,json=organizerId,proto3" json:"organizer_id,omitempty"` + Status string `protobuf:"bytes,14,opt,name=status,proto3" json:"status,omitempty"` + StartedAt int64 `protobuf:"varint,15,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` + FinishedAt int64 `protobuf:"varint,16,opt,name=finished_at,json=finishedAt,proto3" json:"finished_at,omitempty"` + Results *MatchResults `protobuf:"bytes,17,opt,name=results,proto3" json:"results,omitempty"` + FaceitUrl string `protobuf:"bytes,18,opt,name=faceit_url,json=faceitUrl,proto3" json:"faceit_url,omitempty"` + // Player-specific data + PlayerStats *MatchStats `protobuf:"bytes,19,opt,name=player_stats,json=playerStats,proto3" json:"player_stats,omitempty"` + PlayerFaction string `protobuf:"bytes,20,opt,name=player_faction,json=playerFaction,proto3" json:"player_faction,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MatchResult) Reset() { + *x = MatchResult{} + mi := &file_proto_stalker_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MatchResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MatchResult) ProtoMessage() {} + +func (x *MatchResult) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MatchResult.ProtoReflect.Descriptor instead. +func (*MatchResult) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{4} +} + +func (x *MatchResult) GetMatchId() string { + if x != nil { + return x.MatchId + } + return "" +} + +func (x *MatchResult) GetGameId() string { + if x != nil { + return x.GameId + } + return "" +} + +func (x *MatchResult) GetRegion() string { + if x != nil { + return x.Region + } + return "" +} + +func (x *MatchResult) GetMatchType() string { + if x != nil { + return x.MatchType + } + return "" +} + +func (x *MatchResult) GetGameMode() string { + if x != nil { + return x.GameMode + } + return "" +} + +func (x *MatchResult) GetMaxPlayers() int32 { + if x != nil { + return x.MaxPlayers + } + return 0 +} + +func (x *MatchResult) GetTeamsSize() int32 { + if x != nil { + return x.TeamsSize + } + return 0 +} + +func (x *MatchResult) GetTeams() map[string]*Team { + if x != nil { + return x.Teams + } + return nil +} + +func (x *MatchResult) GetPlayingPlayers() []string { + if x != nil { + return x.PlayingPlayers + } + return nil +} + +func (x *MatchResult) GetCompetitionId() string { + if x != nil { + return x.CompetitionId + } + return "" +} + +func (x *MatchResult) GetCompetitionName() string { + if x != nil { + return x.CompetitionName + } + return "" +} + +func (x *MatchResult) GetCompetitionType() string { + if x != nil { + return x.CompetitionType + } + return "" +} + +func (x *MatchResult) GetOrganizerId() string { + if x != nil { + return x.OrganizerId + } + return "" +} + +func (x *MatchResult) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *MatchResult) GetStartedAt() int64 { + if x != nil { + return x.StartedAt + } + return 0 +} + +func (x *MatchResult) GetFinishedAt() int64 { + if x != nil { + return x.FinishedAt + } + return 0 +} + +func (x *MatchResult) GetResults() *MatchResults { + if x != nil { + return x.Results + } + return nil +} + +func (x *MatchResult) GetFaceitUrl() string { + if x != nil { + return x.FaceitUrl + } + return "" +} + +func (x *MatchResult) GetPlayerStats() *MatchStats { + if x != nil { + return x.PlayerStats + } + return nil +} + +func (x *MatchResult) GetPlayerFaction() string { + if x != nil { + return x.PlayerFaction + } + return "" +} + +// MatchResults represents match results +type MatchResults struct { + state protoimpl.MessageState `protogen:"open.v1"` + Winner string `protobuf:"bytes,1,opt,name=winner,proto3" json:"winner,omitempty"` + Score map[string]int32 `protobuf:"bytes,2,rep,name=score,proto3" json:"score,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MatchResults) Reset() { + *x = MatchResults{} + mi := &file_proto_stalker_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MatchResults) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MatchResults) ProtoMessage() {} + +func (x *MatchResults) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MatchResults.ProtoReflect.Descriptor instead. +func (*MatchResults) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{5} +} + +func (x *MatchResults) GetWinner() string { + if x != nil { + return x.Winner + } + return "" +} + +func (x *MatchResults) GetScore() map[string]int32 { + if x != nil { + return x.Score + } + return nil +} + +// MatchDetails represents detailed match information +type MatchDetails struct { + state protoimpl.MessageState `protogen:"open.v1"` + MatchId string `protobuf:"bytes,1,opt,name=match_id,json=matchId,proto3" json:"match_id,omitempty"` + GameId string `protobuf:"bytes,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` + Teams map[string]*Team `protobuf:"bytes,3,rep,name=teams,proto3" json:"teams,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + PlayingPlayers []string `protobuf:"bytes,4,rep,name=playing_players,json=playingPlayers,proto3" json:"playing_players,omitempty"` + Results *MatchResults `protobuf:"bytes,5,opt,name=results,proto3" json:"results,omitempty"` + Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` + StartedAt int64 `protobuf:"varint,7,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` + FinishedAt int64 `protobuf:"varint,8,opt,name=finished_at,json=finishedAt,proto3" json:"finished_at,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MatchDetails) Reset() { + *x = MatchDetails{} + mi := &file_proto_stalker_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MatchDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MatchDetails) ProtoMessage() {} + +func (x *MatchDetails) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MatchDetails.ProtoReflect.Descriptor instead. +func (*MatchDetails) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{6} +} + +func (x *MatchDetails) GetMatchId() string { + if x != nil { + return x.MatchId + } + return "" +} + +func (x *MatchDetails) GetGameId() string { + if x != nil { + return x.GameId + } + return "" +} + +func (x *MatchDetails) GetTeams() map[string]*Team { + if x != nil { + return x.Teams + } + return nil +} + +func (x *MatchDetails) GetPlayingPlayers() []string { + if x != nil { + return x.PlayingPlayers + } + return nil +} + +func (x *MatchDetails) GetResults() *MatchResults { + if x != nil { + return x.Results + } + return nil +} + +func (x *MatchDetails) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *MatchDetails) GetStartedAt() int64 { + if x != nil { + return x.StartedAt + } + return 0 +} + +func (x *MatchDetails) GetFinishedAt() int64 { + if x != nil { + return x.FinishedAt + } + return 0 +} + +// FaceITMatch represents a match stored in the database +type FaceITMatch struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + GlobalUserId int64 `protobuf:"varint,2,opt,name=global_user_id,json=globalUserId,proto3" json:"global_user_id,omitempty"` + FaceitPlayerId string `protobuf:"bytes,3,opt,name=faceit_player_id,json=faceitPlayerId,proto3" json:"faceit_player_id,omitempty"` + MatchId string `protobuf:"bytes,4,opt,name=match_id,json=matchId,proto3" json:"match_id,omitempty"` + Game string `protobuf:"bytes,5,opt,name=game,proto3" json:"game,omitempty"` + Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` + Result string `protobuf:"bytes,7,opt,name=result,proto3" json:"result,omitempty"` + SkillLevel int32 `protobuf:"varint,8,opt,name=skill_level,json=skillLevel,proto3" json:"skill_level,omitempty"` + MatchStartTime *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=match_start_time,json=matchStartTime,proto3" json:"match_start_time,omitempty"` + MatchEndTime *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=match_end_time,json=matchEndTime,proto3" json:"match_end_time,omitempty"` + SyncedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=synced_at,json=syncedAt,proto3" json:"synced_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FaceITMatch) Reset() { + *x = FaceITMatch{} + mi := &file_proto_stalker_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FaceITMatch) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FaceITMatch) ProtoMessage() {} + +func (x *FaceITMatch) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FaceITMatch.ProtoReflect.Descriptor instead. +func (*FaceITMatch) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{7} +} + +func (x *FaceITMatch) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *FaceITMatch) GetGlobalUserId() int64 { + if x != nil { + return x.GlobalUserId + } + return 0 +} + +func (x *FaceITMatch) GetFaceitPlayerId() string { + if x != nil { + return x.FaceitPlayerId + } + return "" +} + +func (x *FaceITMatch) GetMatchId() string { + if x != nil { + return x.MatchId + } + return "" +} + +func (x *FaceITMatch) GetGame() string { + if x != nil { + return x.Game + } + return "" +} + +func (x *FaceITMatch) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *FaceITMatch) GetResult() string { + if x != nil { + return x.Result + } + return "" +} + +func (x *FaceITMatch) GetSkillLevel() int32 { + if x != nil { + return x.SkillLevel + } + return 0 +} + +func (x *FaceITMatch) GetMatchStartTime() *timestamppb.Timestamp { + if x != nil { + return x.MatchStartTime + } + return nil +} + +func (x *FaceITMatch) GetMatchEndTime() *timestamppb.Timestamp { + if x != nil { + return x.MatchEndTime + } + return nil +} + +func (x *FaceITMatch) GetSyncedAt() *timestamppb.Timestamp { + if x != nil { + return x.SyncedAt + } + return nil +} + +func (x *FaceITMatch) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +// LinkedAccount represents a linked FaceIT account +type LinkedAccount struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + GlobalUserId int64 `protobuf:"varint,2,opt,name=global_user_id,json=globalUserId,proto3" json:"global_user_id,omitempty"` + Platform string `protobuf:"bytes,3,opt,name=platform,proto3" json:"platform,omitempty"` + AccountId string `protobuf:"bytes,4,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + AccountUsername string `protobuf:"bytes,5,opt,name=account_username,json=accountUsername,proto3" json:"account_username,omitempty"` + AccountUrl string `protobuf:"bytes,6,opt,name=account_url,json=accountUrl,proto3" json:"account_url,omitempty"` + LinkedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=linked_at,json=linkedAt,proto3" json:"linked_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LinkedAccount) Reset() { + *x = LinkedAccount{} + mi := &file_proto_stalker_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LinkedAccount) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LinkedAccount) ProtoMessage() {} + +func (x *LinkedAccount) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LinkedAccount.ProtoReflect.Descriptor instead. +func (*LinkedAccount) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{8} +} + +func (x *LinkedAccount) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *LinkedAccount) GetGlobalUserId() int64 { + if x != nil { + return x.GlobalUserId + } + return 0 +} + +func (x *LinkedAccount) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *LinkedAccount) GetAccountId() string { + if x != nil { + return x.AccountId + } + return "" +} + +func (x *LinkedAccount) GetAccountUsername() string { + if x != nil { + return x.AccountUsername + } + return "" +} + +func (x *LinkedAccount) GetAccountUrl() string { + if x != nil { + return x.AccountUrl + } + return "" +} + +func (x *LinkedAccount) GetLinkedAt() *timestamppb.Timestamp { + if x != nil { + return x.LinkedAt + } + return nil +} + +func (x *LinkedAccount) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +// UserMatchStats represents aggregated user statistics +type UserMatchStats struct { + state protoimpl.MessageState `protogen:"open.v1"` + TotalMatches int32 `protobuf:"varint,1,opt,name=total_matches,json=totalMatches,proto3" json:"total_matches,omitempty"` + Wins int32 `protobuf:"varint,2,opt,name=wins,proto3" json:"wins,omitempty"` + Losses int32 `protobuf:"varint,3,opt,name=losses,proto3" json:"losses,omitempty"` + AvgKills float32 `protobuf:"fixed32,4,opt,name=avg_kills,json=avgKills,proto3" json:"avg_kills,omitempty"` + AvgDeaths float32 `protobuf:"fixed32,5,opt,name=avg_deaths,json=avgDeaths,proto3" json:"avg_deaths,omitempty"` + AvgAssists float32 `protobuf:"fixed32,6,opt,name=avg_assists,json=avgAssists,proto3" json:"avg_assists,omitempty"` + WinRate float32 `protobuf:"fixed32,7,opt,name=win_rate,json=winRate,proto3" json:"win_rate,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UserMatchStats) Reset() { + *x = UserMatchStats{} + mi := &file_proto_stalker_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UserMatchStats) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UserMatchStats) ProtoMessage() {} + +func (x *UserMatchStats) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UserMatchStats.ProtoReflect.Descriptor instead. +func (*UserMatchStats) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{9} +} + +func (x *UserMatchStats) GetTotalMatches() int32 { + if x != nil { + return x.TotalMatches + } + return 0 +} + +func (x *UserMatchStats) GetWins() int32 { + if x != nil { + return x.Wins + } + return 0 +} + +func (x *UserMatchStats) GetLosses() int32 { + if x != nil { + return x.Losses + } + return 0 +} + +func (x *UserMatchStats) GetAvgKills() float32 { + if x != nil { + return x.AvgKills + } + return 0 +} + +func (x *UserMatchStats) GetAvgDeaths() float32 { + if x != nil { + return x.AvgDeaths + } + return 0 +} + +func (x *UserMatchStats) GetAvgAssists() float32 { + if x != nil { + return x.AvgAssists + } + return 0 +} + +func (x *UserMatchStats) GetWinRate() float32 { + if x != nil { + return x.WinRate + } + return 0 +} + +// Request/Response messages +type SearchPlayerRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Nickname string `protobuf:"bytes,1,opt,name=nickname,proto3" json:"nickname,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SearchPlayerRequest) Reset() { + *x = SearchPlayerRequest{} + mi := &file_proto_stalker_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SearchPlayerRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchPlayerRequest) ProtoMessage() {} + +func (x *SearchPlayerRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchPlayerRequest.ProtoReflect.Descriptor instead. +func (*SearchPlayerRequest) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{10} +} + +func (x *SearchPlayerRequest) GetNickname() string { + if x != nil { + return x.Nickname + } + return "" +} + +type GetPlayerByIDRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PlayerId string `protobuf:"bytes,1,opt,name=player_id,json=playerId,proto3" json:"player_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetPlayerByIDRequest) Reset() { + *x = GetPlayerByIDRequest{} + mi := &file_proto_stalker_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetPlayerByIDRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPlayerByIDRequest) ProtoMessage() {} + +func (x *GetPlayerByIDRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetPlayerByIDRequest.ProtoReflect.Descriptor instead. +func (*GetPlayerByIDRequest) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{11} +} + +func (x *GetPlayerByIDRequest) GetPlayerId() string { + if x != nil { + return x.PlayerId + } + return "" +} + +type GetPlayerMatchesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PlayerId string `protobuf:"bytes,1,opt,name=player_id,json=playerId,proto3" json:"player_id,omitempty"` + Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetPlayerMatchesRequest) Reset() { + *x = GetPlayerMatchesRequest{} + mi := &file_proto_stalker_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetPlayerMatchesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPlayerMatchesRequest) ProtoMessage() {} + +func (x *GetPlayerMatchesRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetPlayerMatchesRequest.ProtoReflect.Descriptor instead. +func (*GetPlayerMatchesRequest) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{12} +} + +func (x *GetPlayerMatchesRequest) GetPlayerId() string { + if x != nil { + return x.PlayerId + } + return "" +} + +func (x *GetPlayerMatchesRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +type GetPlayerMatchesResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Matches []*MatchResult `protobuf:"bytes,1,rep,name=matches,proto3" json:"matches,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetPlayerMatchesResponse) Reset() { + *x = GetPlayerMatchesResponse{} + mi := &file_proto_stalker_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetPlayerMatchesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPlayerMatchesResponse) ProtoMessage() {} + +func (x *GetPlayerMatchesResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetPlayerMatchesResponse.ProtoReflect.Descriptor instead. +func (*GetPlayerMatchesResponse) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{13} +} + +func (x *GetPlayerMatchesResponse) GetMatches() []*MatchResult { + if x != nil { + return x.Matches + } + return nil +} + +type GetMatchDetailsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + MatchId string `protobuf:"bytes,1,opt,name=match_id,json=matchId,proto3" json:"match_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetMatchDetailsRequest) Reset() { + *x = GetMatchDetailsRequest{} + mi := &file_proto_stalker_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetMatchDetailsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetMatchDetailsRequest) ProtoMessage() {} + +func (x *GetMatchDetailsRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetMatchDetailsRequest.ProtoReflect.Descriptor instead. +func (*GetMatchDetailsRequest) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{14} +} + +func (x *GetMatchDetailsRequest) GetMatchId() string { + if x != nil { + return x.MatchId + } + return "" +} + +type SaveMatchesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Matches []*FaceITMatch `protobuf:"bytes,1,rep,name=matches,proto3" json:"matches,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SaveMatchesRequest) Reset() { + *x = SaveMatchesRequest{} + mi := &file_proto_stalker_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SaveMatchesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SaveMatchesRequest) ProtoMessage() {} + +func (x *SaveMatchesRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SaveMatchesRequest.ProtoReflect.Descriptor instead. +func (*SaveMatchesRequest) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{15} +} + +func (x *SaveMatchesRequest) GetMatches() []*FaceITMatch { + if x != nil { + return x.Matches + } + return nil +} + +type GetUserMatchesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + GlobalUserId int64 `protobuf:"varint,1,opt,name=global_user_id,json=globalUserId,proto3" json:"global_user_id,omitempty"` + Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetUserMatchesRequest) Reset() { + *x = GetUserMatchesRequest{} + mi := &file_proto_stalker_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetUserMatchesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetUserMatchesRequest) ProtoMessage() {} + +func (x *GetUserMatchesRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetUserMatchesRequest.ProtoReflect.Descriptor instead. +func (*GetUserMatchesRequest) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{16} +} + +func (x *GetUserMatchesRequest) GetGlobalUserId() int64 { + if x != nil { + return x.GlobalUserId + } + return 0 +} + +func (x *GetUserMatchesRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +type GetUserMatchesResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Matches []*FaceITMatch `protobuf:"bytes,1,rep,name=matches,proto3" json:"matches,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetUserMatchesResponse) Reset() { + *x = GetUserMatchesResponse{} + mi := &file_proto_stalker_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetUserMatchesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetUserMatchesResponse) ProtoMessage() {} + +func (x *GetUserMatchesResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetUserMatchesResponse.ProtoReflect.Descriptor instead. +func (*GetUserMatchesResponse) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{17} +} + +func (x *GetUserMatchesResponse) GetMatches() []*FaceITMatch { + if x != nil { + return x.Matches + } + return nil +} + +type GetUserMatchStatsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + GlobalUserId int64 `protobuf:"varint,1,opt,name=global_user_id,json=globalUserId,proto3" json:"global_user_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetUserMatchStatsRequest) Reset() { + *x = GetUserMatchStatsRequest{} + mi := &file_proto_stalker_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetUserMatchStatsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetUserMatchStatsRequest) ProtoMessage() {} + +func (x *GetUserMatchStatsRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetUserMatchStatsRequest.ProtoReflect.Descriptor instead. +func (*GetUserMatchStatsRequest) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{18} +} + +func (x *GetUserMatchStatsRequest) GetGlobalUserId() int64 { + if x != nil { + return x.GlobalUserId + } + return 0 +} + +type GetMatchesSinceRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + GlobalUserId int64 `protobuf:"varint,1,opt,name=global_user_id,json=globalUserId,proto3" json:"global_user_id,omitempty"` + Since *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=since,proto3" json:"since,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetMatchesSinceRequest) Reset() { + *x = GetMatchesSinceRequest{} + mi := &file_proto_stalker_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetMatchesSinceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetMatchesSinceRequest) ProtoMessage() {} + +func (x *GetMatchesSinceRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetMatchesSinceRequest.ProtoReflect.Descriptor instead. +func (*GetMatchesSinceRequest) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{19} +} + +func (x *GetMatchesSinceRequest) GetGlobalUserId() int64 { + if x != nil { + return x.GlobalUserId + } + return 0 +} + +func (x *GetMatchesSinceRequest) GetSince() *timestamppb.Timestamp { + if x != nil { + return x.Since + } + return nil +} + +type GetMatchesLastNDaysRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + GlobalUserId int64 `protobuf:"varint,1,opt,name=global_user_id,json=globalUserId,proto3" json:"global_user_id,omitempty"` + Days int32 `protobuf:"varint,2,opt,name=days,proto3" json:"days,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetMatchesLastNDaysRequest) Reset() { + *x = GetMatchesLastNDaysRequest{} + mi := &file_proto_stalker_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetMatchesLastNDaysRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetMatchesLastNDaysRequest) ProtoMessage() {} + +func (x *GetMatchesLastNDaysRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetMatchesLastNDaysRequest.ProtoReflect.Descriptor instead. +func (*GetMatchesLastNDaysRequest) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{20} +} + +func (x *GetMatchesLastNDaysRequest) GetGlobalUserId() int64 { + if x != nil { + return x.GlobalUserId + } + return 0 +} + +func (x *GetMatchesLastNDaysRequest) GetDays() int32 { + if x != nil { + return x.Days + } + return 0 +} + +type LinkFaceITAccountRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + GlobalUserId int64 `protobuf:"varint,1,opt,name=global_user_id,json=globalUserId,proto3" json:"global_user_id,omitempty"` + AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + AccountUsername string `protobuf:"bytes,3,opt,name=account_username,json=accountUsername,proto3" json:"account_username,omitempty"` + AccountUrl string `protobuf:"bytes,4,opt,name=account_url,json=accountUrl,proto3" json:"account_url,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LinkFaceITAccountRequest) Reset() { + *x = LinkFaceITAccountRequest{} + mi := &file_proto_stalker_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LinkFaceITAccountRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LinkFaceITAccountRequest) ProtoMessage() {} + +func (x *LinkFaceITAccountRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LinkFaceITAccountRequest.ProtoReflect.Descriptor instead. +func (*LinkFaceITAccountRequest) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{21} +} + +func (x *LinkFaceITAccountRequest) GetGlobalUserId() int64 { + if x != nil { + return x.GlobalUserId + } + return 0 +} + +func (x *LinkFaceITAccountRequest) GetAccountId() string { + if x != nil { + return x.AccountId + } + return "" +} + +func (x *LinkFaceITAccountRequest) GetAccountUsername() string { + if x != nil { + return x.AccountUsername + } + return "" +} + +func (x *LinkFaceITAccountRequest) GetAccountUrl() string { + if x != nil { + return x.AccountUrl + } + return "" +} + +type GetLinkedFaceITAccountRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + GlobalUserId int64 `protobuf:"varint,1,opt,name=global_user_id,json=globalUserId,proto3" json:"global_user_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetLinkedFaceITAccountRequest) Reset() { + *x = GetLinkedFaceITAccountRequest{} + mi := &file_proto_stalker_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetLinkedFaceITAccountRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetLinkedFaceITAccountRequest) ProtoMessage() {} + +func (x *GetLinkedFaceITAccountRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_stalker_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetLinkedFaceITAccountRequest.ProtoReflect.Descriptor instead. +func (*GetLinkedFaceITAccountRequest) Descriptor() ([]byte, []int) { + return file_proto_stalker_proto_rawDescGZIP(), []int{22} +} + +func (x *GetLinkedFaceITAccountRequest) GetGlobalUserId() int64 { + if x != nil { + return x.GlobalUserId + } + return 0 +} + +var File_proto_stalker_proto protoreflect.FileDescriptor + +const file_proto_stalker_proto_rawDesc = "" + + "\n" + + "\x13proto/stalker.proto\x12\astalker\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\"\x92\x01\n" + + "\x06Player\x12\x1b\n" + + "\tplayer_id\x18\x01 \x01(\tR\bplayerId\x12\x1a\n" + + "\bnickname\x18\x02 \x01(\tR\bnickname\x12\x16\n" + + "\x06avatar\x18\x03 \x01(\tR\x06avatar\x12\x18\n" + + "\acountry\x18\x04 \x01(\tR\acountry\x12\x1d\n" + + "\n" + + "faceit_url\x18\x05 \x01(\tR\tfaceitUrl\"\xca\x01\n" + + "\n" + + "MatchStats\x12\x14\n" + + "\x05kills\x18\x01 \x01(\x05R\x05kills\x12\x16\n" + + "\x06deaths\x18\x02 \x01(\x05R\x06deaths\x12\x18\n" + + "\aassists\x18\x03 \x01(\x05R\aassists\x12\x1f\n" + + "\vskill_level\x18\x04 \x01(\x05R\n" + + "skillLevel\x12\x10\n" + + "\x03elo\x18\x05 \x01(\x05R\x03elo\x12\x1c\n" + + "\theadshots\x18\x06 \x01(\x05R\theadshots\x12#\n" + + "\rheadshots_pct\x18\a \x01(\x05R\fheadshotsPct\"\x98\x02\n" + + "\n" + + "TeamPlayer\x12\x1b\n" + + "\tplayer_id\x18\x01 \x01(\tR\bplayerId\x12\x1a\n" + + "\bnickname\x18\x02 \x01(\tR\bnickname\x12\x16\n" + + "\x06avatar\x18\x03 \x01(\tR\x06avatar\x12\x1f\n" + + "\vskill_level\x18\x04 \x01(\x05R\n" + + "skillLevel\x12$\n" + + "\x0egame_player_id\x18\x05 \x01(\tR\fgamePlayerId\x12(\n" + + "\x10game_player_name\x18\x06 \x01(\tR\x0egamePlayerName\x12\x1d\n" + + "\n" + + "faceit_url\x18\a \x01(\tR\tfaceitUrl\x12)\n" + + "\x05stats\x18\b \x01(\v2\x13.stalker.MatchStatsR\x05stats\"\x96\x01\n" + + "\x04Team\x12\x17\n" + + "\ateam_id\x18\x01 \x01(\tR\x06teamId\x12\x1a\n" + + "\bnickname\x18\x02 \x01(\tR\bnickname\x12\x16\n" + + "\x06avatar\x18\x03 \x01(\tR\x06avatar\x12\x12\n" + + "\x04type\x18\x04 \x01(\tR\x04type\x12-\n" + + "\aplayers\x18\x05 \x03(\v2\x13.stalker.TeamPlayerR\aplayers\"\xa5\x06\n" + + "\vMatchResult\x12\x19\n" + + "\bmatch_id\x18\x01 \x01(\tR\amatchId\x12\x17\n" + + "\agame_id\x18\x02 \x01(\tR\x06gameId\x12\x16\n" + + "\x06region\x18\x03 \x01(\tR\x06region\x12\x1d\n" + + "\n" + + "match_type\x18\x04 \x01(\tR\tmatchType\x12\x1b\n" + + "\tgame_mode\x18\x05 \x01(\tR\bgameMode\x12\x1f\n" + + "\vmax_players\x18\x06 \x01(\x05R\n" + + "maxPlayers\x12\x1d\n" + + "\n" + + "teams_size\x18\a \x01(\x05R\tteamsSize\x125\n" + + "\x05teams\x18\b \x03(\v2\x1f.stalker.MatchResult.TeamsEntryR\x05teams\x12'\n" + + "\x0fplaying_players\x18\t \x03(\tR\x0eplayingPlayers\x12%\n" + + "\x0ecompetition_id\x18\n" + + " \x01(\tR\rcompetitionId\x12)\n" + + "\x10competition_name\x18\v \x01(\tR\x0fcompetitionName\x12)\n" + + "\x10competition_type\x18\f \x01(\tR\x0fcompetitionType\x12!\n" + + "\forganizer_id\x18\r \x01(\tR\vorganizerId\x12\x16\n" + + "\x06status\x18\x0e \x01(\tR\x06status\x12\x1d\n" + + "\n" + + "started_at\x18\x0f \x01(\x03R\tstartedAt\x12\x1f\n" + + "\vfinished_at\x18\x10 \x01(\x03R\n" + + "finishedAt\x12/\n" + + "\aresults\x18\x11 \x01(\v2\x15.stalker.MatchResultsR\aresults\x12\x1d\n" + + "\n" + + "faceit_url\x18\x12 \x01(\tR\tfaceitUrl\x126\n" + + "\fplayer_stats\x18\x13 \x01(\v2\x13.stalker.MatchStatsR\vplayerStats\x12%\n" + + "\x0eplayer_faction\x18\x14 \x01(\tR\rplayerFaction\x1aG\n" + + "\n" + + "TeamsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12#\n" + + "\x05value\x18\x02 \x01(\v2\r.stalker.TeamR\x05value:\x028\x01\"\x98\x01\n" + + "\fMatchResults\x12\x16\n" + + "\x06winner\x18\x01 \x01(\tR\x06winner\x126\n" + + "\x05score\x18\x02 \x03(\v2 .stalker.MatchResults.ScoreEntryR\x05score\x1a8\n" + + "\n" + + "ScoreEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\x05R\x05value:\x028\x01\"\xf5\x02\n" + + "\fMatchDetails\x12\x19\n" + + "\bmatch_id\x18\x01 \x01(\tR\amatchId\x12\x17\n" + + "\agame_id\x18\x02 \x01(\tR\x06gameId\x126\n" + + "\x05teams\x18\x03 \x03(\v2 .stalker.MatchDetails.TeamsEntryR\x05teams\x12'\n" + + "\x0fplaying_players\x18\x04 \x03(\tR\x0eplayingPlayers\x12/\n" + + "\aresults\x18\x05 \x01(\v2\x15.stalker.MatchResultsR\aresults\x12\x16\n" + + "\x06status\x18\x06 \x01(\tR\x06status\x12\x1d\n" + + "\n" + + "started_at\x18\a \x01(\x03R\tstartedAt\x12\x1f\n" + + "\vfinished_at\x18\b \x01(\x03R\n" + + "finishedAt\x1aG\n" + + "\n" + + "TeamsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12#\n" + + "\x05value\x18\x02 \x01(\v2\r.stalker.TeamR\x05value:\x028\x01\"\xe9\x03\n" + + "\vFaceITMatch\x12\x0e\n" + + "\x02id\x18\x01 \x01(\x03R\x02id\x12$\n" + + "\x0eglobal_user_id\x18\x02 \x01(\x03R\fglobalUserId\x12(\n" + + "\x10faceit_player_id\x18\x03 \x01(\tR\x0efaceitPlayerId\x12\x19\n" + + "\bmatch_id\x18\x04 \x01(\tR\amatchId\x12\x12\n" + + "\x04game\x18\x05 \x01(\tR\x04game\x12\x16\n" + + "\x06status\x18\x06 \x01(\tR\x06status\x12\x16\n" + + "\x06result\x18\a \x01(\tR\x06result\x12\x1f\n" + + "\vskill_level\x18\b \x01(\x05R\n" + + "skillLevel\x12D\n" + + "\x10match_start_time\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x0ematchStartTime\x12@\n" + + "\x0ematch_end_time\x18\n" + + " \x01(\v2\x1a.google.protobuf.TimestampR\fmatchEndTime\x127\n" + + "\tsynced_at\x18\v \x01(\v2\x1a.google.protobuf.TimestampR\bsyncedAt\x129\n" + + "\n" + + "updated_at\x18\f \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\"\xc0\x02\n" + + "\rLinkedAccount\x12\x0e\n" + + "\x02id\x18\x01 \x01(\x03R\x02id\x12$\n" + + "\x0eglobal_user_id\x18\x02 \x01(\x03R\fglobalUserId\x12\x1a\n" + + "\bplatform\x18\x03 \x01(\tR\bplatform\x12\x1d\n" + + "\n" + + "account_id\x18\x04 \x01(\tR\taccountId\x12)\n" + + "\x10account_username\x18\x05 \x01(\tR\x0faccountUsername\x12\x1f\n" + + "\vaccount_url\x18\x06 \x01(\tR\n" + + "accountUrl\x127\n" + + "\tlinked_at\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\blinkedAt\x129\n" + + "\n" + + "updated_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\"\xd9\x01\n" + + "\x0eUserMatchStats\x12#\n" + + "\rtotal_matches\x18\x01 \x01(\x05R\ftotalMatches\x12\x12\n" + + "\x04wins\x18\x02 \x01(\x05R\x04wins\x12\x16\n" + + "\x06losses\x18\x03 \x01(\x05R\x06losses\x12\x1b\n" + + "\tavg_kills\x18\x04 \x01(\x02R\bavgKills\x12\x1d\n" + + "\n" + + "avg_deaths\x18\x05 \x01(\x02R\tavgDeaths\x12\x1f\n" + + "\vavg_assists\x18\x06 \x01(\x02R\n" + + "avgAssists\x12\x19\n" + + "\bwin_rate\x18\a \x01(\x02R\awinRate\"1\n" + + "\x13SearchPlayerRequest\x12\x1a\n" + + "\bnickname\x18\x01 \x01(\tR\bnickname\"3\n" + + "\x14GetPlayerByIDRequest\x12\x1b\n" + + "\tplayer_id\x18\x01 \x01(\tR\bplayerId\"L\n" + + "\x17GetPlayerMatchesRequest\x12\x1b\n" + + "\tplayer_id\x18\x01 \x01(\tR\bplayerId\x12\x14\n" + + "\x05limit\x18\x02 \x01(\x05R\x05limit\"J\n" + + "\x18GetPlayerMatchesResponse\x12.\n" + + "\amatches\x18\x01 \x03(\v2\x14.stalker.MatchResultR\amatches\"3\n" + + "\x16GetMatchDetailsRequest\x12\x19\n" + + "\bmatch_id\x18\x01 \x01(\tR\amatchId\"D\n" + + "\x12SaveMatchesRequest\x12.\n" + + "\amatches\x18\x01 \x03(\v2\x14.stalker.FaceITMatchR\amatches\"S\n" + + "\x15GetUserMatchesRequest\x12$\n" + + "\x0eglobal_user_id\x18\x01 \x01(\x03R\fglobalUserId\x12\x14\n" + + "\x05limit\x18\x02 \x01(\x05R\x05limit\"H\n" + + "\x16GetUserMatchesResponse\x12.\n" + + "\amatches\x18\x01 \x03(\v2\x14.stalker.FaceITMatchR\amatches\"@\n" + + "\x18GetUserMatchStatsRequest\x12$\n" + + "\x0eglobal_user_id\x18\x01 \x01(\x03R\fglobalUserId\"p\n" + + "\x16GetMatchesSinceRequest\x12$\n" + + "\x0eglobal_user_id\x18\x01 \x01(\x03R\fglobalUserId\x120\n" + + "\x05since\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x05since\"V\n" + + "\x1aGetMatchesLastNDaysRequest\x12$\n" + + "\x0eglobal_user_id\x18\x01 \x01(\x03R\fglobalUserId\x12\x12\n" + + "\x04days\x18\x02 \x01(\x05R\x04days\"\xab\x01\n" + + "\x18LinkFaceITAccountRequest\x12$\n" + + "\x0eglobal_user_id\x18\x01 \x01(\x03R\fglobalUserId\x12\x1d\n" + + "\n" + + "account_id\x18\x02 \x01(\tR\taccountId\x12)\n" + + "\x10account_username\x18\x03 \x01(\tR\x0faccountUsername\x12\x1f\n" + + "\vaccount_url\x18\x04 \x01(\tR\n" + + "accountUrl\"E\n" + + "\x1dGetLinkedFaceITAccountRequest\x12$\n" + + "\x0eglobal_user_id\x18\x01 \x01(\x03R\fglobalUserId2\xf8\x06\n" + + "\x0eStalkerService\x12=\n" + + "\fSearchPlayer\x12\x1c.stalker.SearchPlayerRequest\x1a\x0f.stalker.Player\x12?\n" + + "\rGetPlayerByID\x12\x1d.stalker.GetPlayerByIDRequest\x1a\x0f.stalker.Player\x12W\n" + + "\x10GetPlayerMatches\x12 .stalker.GetPlayerMatchesRequest\x1a!.stalker.GetPlayerMatchesResponse\x12I\n" + + "\x0fGetMatchDetails\x12\x1f.stalker.GetMatchDetailsRequest\x1a\x15.stalker.MatchDetails\x12B\n" + + "\vSaveMatches\x12\x1b.stalker.SaveMatchesRequest\x1a\x16.google.protobuf.Empty\x12Q\n" + + "\x0eGetUserMatches\x12\x1e.stalker.GetUserMatchesRequest\x1a\x1f.stalker.GetUserMatchesResponse\x12O\n" + + "\x11GetUserMatchStats\x12!.stalker.GetUserMatchStatsRequest\x1a\x17.stalker.UserMatchStats\x12S\n" + + "\x0fGetMatchesSince\x12\x1f.stalker.GetMatchesSinceRequest\x1a\x1f.stalker.GetUserMatchesResponse\x12[\n" + + "\x13GetMatchesLastNDays\x12#.stalker.GetMatchesLastNDaysRequest\x1a\x1f.stalker.GetUserMatchesResponse\x12N\n" + + "\x11LinkFaceITAccount\x12!.stalker.LinkFaceITAccountRequest\x1a\x16.stalker.LinkedAccount\x12X\n" + + "\x16GetLinkedFaceITAccount\x12&.stalker.GetLinkedFaceITAccountRequest\x1a\x16.stalker.LinkedAccountB\x1fZ\x1dstalker-service/proto/stalkerb\x06proto3" + +var ( + file_proto_stalker_proto_rawDescOnce sync.Once + file_proto_stalker_proto_rawDescData []byte +) + +func file_proto_stalker_proto_rawDescGZIP() []byte { + file_proto_stalker_proto_rawDescOnce.Do(func() { + file_proto_stalker_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_proto_stalker_proto_rawDesc), len(file_proto_stalker_proto_rawDesc))) + }) + return file_proto_stalker_proto_rawDescData +} + +var file_proto_stalker_proto_msgTypes = make([]protoimpl.MessageInfo, 26) +var file_proto_stalker_proto_goTypes = []any{ + (*Player)(nil), // 0: stalker.Player + (*MatchStats)(nil), // 1: stalker.MatchStats + (*TeamPlayer)(nil), // 2: stalker.TeamPlayer + (*Team)(nil), // 3: stalker.Team + (*MatchResult)(nil), // 4: stalker.MatchResult + (*MatchResults)(nil), // 5: stalker.MatchResults + (*MatchDetails)(nil), // 6: stalker.MatchDetails + (*FaceITMatch)(nil), // 7: stalker.FaceITMatch + (*LinkedAccount)(nil), // 8: stalker.LinkedAccount + (*UserMatchStats)(nil), // 9: stalker.UserMatchStats + (*SearchPlayerRequest)(nil), // 10: stalker.SearchPlayerRequest + (*GetPlayerByIDRequest)(nil), // 11: stalker.GetPlayerByIDRequest + (*GetPlayerMatchesRequest)(nil), // 12: stalker.GetPlayerMatchesRequest + (*GetPlayerMatchesResponse)(nil), // 13: stalker.GetPlayerMatchesResponse + (*GetMatchDetailsRequest)(nil), // 14: stalker.GetMatchDetailsRequest + (*SaveMatchesRequest)(nil), // 15: stalker.SaveMatchesRequest + (*GetUserMatchesRequest)(nil), // 16: stalker.GetUserMatchesRequest + (*GetUserMatchesResponse)(nil), // 17: stalker.GetUserMatchesResponse + (*GetUserMatchStatsRequest)(nil), // 18: stalker.GetUserMatchStatsRequest + (*GetMatchesSinceRequest)(nil), // 19: stalker.GetMatchesSinceRequest + (*GetMatchesLastNDaysRequest)(nil), // 20: stalker.GetMatchesLastNDaysRequest + (*LinkFaceITAccountRequest)(nil), // 21: stalker.LinkFaceITAccountRequest + (*GetLinkedFaceITAccountRequest)(nil), // 22: stalker.GetLinkedFaceITAccountRequest + nil, // 23: stalker.MatchResult.TeamsEntry + nil, // 24: stalker.MatchResults.ScoreEntry + nil, // 25: stalker.MatchDetails.TeamsEntry + (*timestamppb.Timestamp)(nil), // 26: google.protobuf.Timestamp + (*emptypb.Empty)(nil), // 27: google.protobuf.Empty +} +var file_proto_stalker_proto_depIdxs = []int32{ + 1, // 0: stalker.TeamPlayer.stats:type_name -> stalker.MatchStats + 2, // 1: stalker.Team.players:type_name -> stalker.TeamPlayer + 23, // 2: stalker.MatchResult.teams:type_name -> stalker.MatchResult.TeamsEntry + 5, // 3: stalker.MatchResult.results:type_name -> stalker.MatchResults + 1, // 4: stalker.MatchResult.player_stats:type_name -> stalker.MatchStats + 24, // 5: stalker.MatchResults.score:type_name -> stalker.MatchResults.ScoreEntry + 25, // 6: stalker.MatchDetails.teams:type_name -> stalker.MatchDetails.TeamsEntry + 5, // 7: stalker.MatchDetails.results:type_name -> stalker.MatchResults + 26, // 8: stalker.FaceITMatch.match_start_time:type_name -> google.protobuf.Timestamp + 26, // 9: stalker.FaceITMatch.match_end_time:type_name -> google.protobuf.Timestamp + 26, // 10: stalker.FaceITMatch.synced_at:type_name -> google.protobuf.Timestamp + 26, // 11: stalker.FaceITMatch.updated_at:type_name -> google.protobuf.Timestamp + 26, // 12: stalker.LinkedAccount.linked_at:type_name -> google.protobuf.Timestamp + 26, // 13: stalker.LinkedAccount.updated_at:type_name -> google.protobuf.Timestamp + 4, // 14: stalker.GetPlayerMatchesResponse.matches:type_name -> stalker.MatchResult + 7, // 15: stalker.SaveMatchesRequest.matches:type_name -> stalker.FaceITMatch + 7, // 16: stalker.GetUserMatchesResponse.matches:type_name -> stalker.FaceITMatch + 26, // 17: stalker.GetMatchesSinceRequest.since:type_name -> google.protobuf.Timestamp + 3, // 18: stalker.MatchResult.TeamsEntry.value:type_name -> stalker.Team + 3, // 19: stalker.MatchDetails.TeamsEntry.value:type_name -> stalker.Team + 10, // 20: stalker.StalkerService.SearchPlayer:input_type -> stalker.SearchPlayerRequest + 11, // 21: stalker.StalkerService.GetPlayerByID:input_type -> stalker.GetPlayerByIDRequest + 12, // 22: stalker.StalkerService.GetPlayerMatches:input_type -> stalker.GetPlayerMatchesRequest + 14, // 23: stalker.StalkerService.GetMatchDetails:input_type -> stalker.GetMatchDetailsRequest + 15, // 24: stalker.StalkerService.SaveMatches:input_type -> stalker.SaveMatchesRequest + 16, // 25: stalker.StalkerService.GetUserMatches:input_type -> stalker.GetUserMatchesRequest + 18, // 26: stalker.StalkerService.GetUserMatchStats:input_type -> stalker.GetUserMatchStatsRequest + 19, // 27: stalker.StalkerService.GetMatchesSince:input_type -> stalker.GetMatchesSinceRequest + 20, // 28: stalker.StalkerService.GetMatchesLastNDays:input_type -> stalker.GetMatchesLastNDaysRequest + 21, // 29: stalker.StalkerService.LinkFaceITAccount:input_type -> stalker.LinkFaceITAccountRequest + 22, // 30: stalker.StalkerService.GetLinkedFaceITAccount:input_type -> stalker.GetLinkedFaceITAccountRequest + 0, // 31: stalker.StalkerService.SearchPlayer:output_type -> stalker.Player + 0, // 32: stalker.StalkerService.GetPlayerByID:output_type -> stalker.Player + 13, // 33: stalker.StalkerService.GetPlayerMatches:output_type -> stalker.GetPlayerMatchesResponse + 6, // 34: stalker.StalkerService.GetMatchDetails:output_type -> stalker.MatchDetails + 27, // 35: stalker.StalkerService.SaveMatches:output_type -> google.protobuf.Empty + 17, // 36: stalker.StalkerService.GetUserMatches:output_type -> stalker.GetUserMatchesResponse + 9, // 37: stalker.StalkerService.GetUserMatchStats:output_type -> stalker.UserMatchStats + 17, // 38: stalker.StalkerService.GetMatchesSince:output_type -> stalker.GetUserMatchesResponse + 17, // 39: stalker.StalkerService.GetMatchesLastNDays:output_type -> stalker.GetUserMatchesResponse + 8, // 40: stalker.StalkerService.LinkFaceITAccount:output_type -> stalker.LinkedAccount + 8, // 41: stalker.StalkerService.GetLinkedFaceITAccount:output_type -> stalker.LinkedAccount + 31, // [31:42] is the sub-list for method output_type + 20, // [20:31] is the sub-list for method input_type + 20, // [20:20] is the sub-list for extension type_name + 20, // [20:20] is the sub-list for extension extendee + 0, // [0:20] is the sub-list for field type_name +} + +func init() { file_proto_stalker_proto_init() } +func file_proto_stalker_proto_init() { + if File_proto_stalker_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_stalker_proto_rawDesc), len(file_proto_stalker_proto_rawDesc)), + NumEnums: 0, + NumMessages: 26, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_proto_stalker_proto_goTypes, + DependencyIndexes: file_proto_stalker_proto_depIdxs, + MessageInfos: file_proto_stalker_proto_msgTypes, + }.Build() + File_proto_stalker_proto = out.File + file_proto_stalker_proto_goTypes = nil + file_proto_stalker_proto_depIdxs = nil +} diff --git a/stalker.proto b/stalker.proto new file mode 100644 index 0000000..a4b8cf1 --- /dev/null +++ b/stalker.proto @@ -0,0 +1,214 @@ +syntax = "proto3"; + +package stalker; + +option go_package = "stalker-service/proto/stalker"; + +import "google/protobuf/timestamp.proto"; +import "google/protobuf/empty.proto"; + +// StalkerService provides FaceIT match tracking and player management +service StalkerService { + // Player management + rpc SearchPlayer(SearchPlayerRequest) returns (Player); + rpc GetPlayerByID(GetPlayerByIDRequest) returns (Player); + + // Match management + rpc GetPlayerMatches(GetPlayerMatchesRequest) returns (GetPlayerMatchesResponse); + rpc GetMatchDetails(GetMatchDetailsRequest) returns (MatchDetails); + + // Database operations + rpc SaveMatches(SaveMatchesRequest) returns (google.protobuf.Empty); + rpc GetUserMatches(GetUserMatchesRequest) returns (GetUserMatchesResponse); + rpc GetUserMatchStats(GetUserMatchStatsRequest) returns (UserMatchStats); + rpc GetMatchesSince(GetMatchesSinceRequest) returns (GetUserMatchesResponse); + rpc GetMatchesLastNDays(GetMatchesLastNDaysRequest) returns (GetUserMatchesResponse); + + // Account linking + rpc LinkFaceITAccount(LinkFaceITAccountRequest) returns (LinkedAccount); + rpc GetLinkedFaceITAccount(GetLinkedFaceITAccountRequest) returns (LinkedAccount); +} + +// Player represents a FaceIT player +message Player { + string player_id = 1; + string nickname = 2; + string avatar = 3; + string country = 4; + string faceit_url = 5; +} + +// MatchStats represents individual player statistics in a match +message MatchStats { + int32 kills = 1; + int32 deaths = 2; + int32 assists = 3; + int32 skill_level = 4; + int32 elo = 5; + int32 headshots = 6; + int32 headshots_pct = 7; +} + +// TeamPlayer represents a player in a team +message TeamPlayer { + string player_id = 1; + string nickname = 2; + string avatar = 3; + int32 skill_level = 4; + string game_player_id = 5; + string game_player_name = 6; + string faceit_url = 7; + MatchStats stats = 8; +} + +// Team represents a team in a match +message Team { + string team_id = 1; + string nickname = 2; + string avatar = 3; + string type = 4; + repeated TeamPlayer players = 5; +} + +// MatchResult represents a single match result +message MatchResult { + string match_id = 1; + string game_id = 2; + string region = 3; + string match_type = 4; + string game_mode = 5; + int32 max_players = 6; + int32 teams_size = 7; + map teams = 8; + repeated string playing_players = 9; + string competition_id = 10; + string competition_name = 11; + string competition_type = 12; + string organizer_id = 13; + string status = 14; + int64 started_at = 15; + int64 finished_at = 16; + MatchResults results = 17; + string faceit_url = 18; + + // Player-specific data + MatchStats player_stats = 19; + string player_faction = 20; +} + +// MatchResults represents match results +message MatchResults { + string winner = 1; + map score = 2; +} + +// MatchDetails represents detailed match information +message MatchDetails { + string match_id = 1; + string game_id = 2; + map teams = 3; + repeated string playing_players = 4; + MatchResults results = 5; + string status = 6; + int64 started_at = 7; + int64 finished_at = 8; +} + +// FaceITMatch represents a match stored in the database +message FaceITMatch { + int64 id = 1; + int64 global_user_id = 2; + string faceit_player_id = 3; + string match_id = 4; + string game = 5; + string status = 6; + string result = 7; + int32 skill_level = 8; + google.protobuf.Timestamp match_start_time = 9; + google.protobuf.Timestamp match_end_time = 10; + google.protobuf.Timestamp synced_at = 11; + google.protobuf.Timestamp updated_at = 12; +} + +// LinkedAccount represents a linked FaceIT account +message LinkedAccount { + int64 id = 1; + int64 global_user_id = 2; + string platform = 3; + string account_id = 4; + string account_username = 5; + string account_url = 6; + google.protobuf.Timestamp linked_at = 7; + google.protobuf.Timestamp updated_at = 8; +} + +// UserMatchStats represents aggregated user statistics +message UserMatchStats { + int32 total_matches = 1; + int32 wins = 2; + int32 losses = 3; + float avg_kills = 4; + float avg_deaths = 5; + float avg_assists = 6; + float win_rate = 7; +} + +// Request/Response messages +message SearchPlayerRequest { + string nickname = 1; +} + +message GetPlayerByIDRequest { + string player_id = 1; +} + +message GetPlayerMatchesRequest { + string player_id = 1; + int32 limit = 2; +} + +message GetPlayerMatchesResponse { + repeated MatchResult matches = 1; +} + +message GetMatchDetailsRequest { + string match_id = 1; +} + +message SaveMatchesRequest { + repeated FaceITMatch matches = 1; +} + +message GetUserMatchesRequest { + int64 global_user_id = 1; + int32 limit = 2; +} + +message GetUserMatchesResponse { + repeated FaceITMatch matches = 1; +} + +message GetUserMatchStatsRequest { + int64 global_user_id = 1; +} + +message GetMatchesSinceRequest { + int64 global_user_id = 1; + google.protobuf.Timestamp since = 2; +} + +message GetMatchesLastNDaysRequest { + int64 global_user_id = 1; + int32 days = 2; +} + +message LinkFaceITAccountRequest { + int64 global_user_id = 1; + string account_id = 2; + string account_username = 3; + string account_url = 4; +} + +message GetLinkedFaceITAccountRequest { + int64 global_user_id = 1; +} diff --git a/stalker_grpc.pb.go b/stalker_grpc.pb.go new file mode 100644 index 0000000..f2edac2 --- /dev/null +++ b/stalker_grpc.pb.go @@ -0,0 +1,514 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.6.1 +// - protoc v7.34.0 +// source: proto/stalker.proto + +package stalker + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + StalkerService_SearchPlayer_FullMethodName = "/stalker.StalkerService/SearchPlayer" + StalkerService_GetPlayerByID_FullMethodName = "/stalker.StalkerService/GetPlayerByID" + StalkerService_GetPlayerMatches_FullMethodName = "/stalker.StalkerService/GetPlayerMatches" + StalkerService_GetMatchDetails_FullMethodName = "/stalker.StalkerService/GetMatchDetails" + StalkerService_SaveMatches_FullMethodName = "/stalker.StalkerService/SaveMatches" + StalkerService_GetUserMatches_FullMethodName = "/stalker.StalkerService/GetUserMatches" + StalkerService_GetUserMatchStats_FullMethodName = "/stalker.StalkerService/GetUserMatchStats" + StalkerService_GetMatchesSince_FullMethodName = "/stalker.StalkerService/GetMatchesSince" + StalkerService_GetMatchesLastNDays_FullMethodName = "/stalker.StalkerService/GetMatchesLastNDays" + StalkerService_LinkFaceITAccount_FullMethodName = "/stalker.StalkerService/LinkFaceITAccount" + StalkerService_GetLinkedFaceITAccount_FullMethodName = "/stalker.StalkerService/GetLinkedFaceITAccount" +) + +// StalkerServiceClient is the client API for StalkerService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// StalkerService provides FaceIT match tracking and player management +type StalkerServiceClient interface { + // Player management + SearchPlayer(ctx context.Context, in *SearchPlayerRequest, opts ...grpc.CallOption) (*Player, error) + GetPlayerByID(ctx context.Context, in *GetPlayerByIDRequest, opts ...grpc.CallOption) (*Player, error) + // Match management + GetPlayerMatches(ctx context.Context, in *GetPlayerMatchesRequest, opts ...grpc.CallOption) (*GetPlayerMatchesResponse, error) + GetMatchDetails(ctx context.Context, in *GetMatchDetailsRequest, opts ...grpc.CallOption) (*MatchDetails, error) + // Database operations + SaveMatches(ctx context.Context, in *SaveMatchesRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + GetUserMatches(ctx context.Context, in *GetUserMatchesRequest, opts ...grpc.CallOption) (*GetUserMatchesResponse, error) + GetUserMatchStats(ctx context.Context, in *GetUserMatchStatsRequest, opts ...grpc.CallOption) (*UserMatchStats, error) + GetMatchesSince(ctx context.Context, in *GetMatchesSinceRequest, opts ...grpc.CallOption) (*GetUserMatchesResponse, error) + GetMatchesLastNDays(ctx context.Context, in *GetMatchesLastNDaysRequest, opts ...grpc.CallOption) (*GetUserMatchesResponse, error) + // Account linking + LinkFaceITAccount(ctx context.Context, in *LinkFaceITAccountRequest, opts ...grpc.CallOption) (*LinkedAccount, error) + GetLinkedFaceITAccount(ctx context.Context, in *GetLinkedFaceITAccountRequest, opts ...grpc.CallOption) (*LinkedAccount, error) +} + +type stalkerServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewStalkerServiceClient(cc grpc.ClientConnInterface) StalkerServiceClient { + return &stalkerServiceClient{cc} +} + +func (c *stalkerServiceClient) SearchPlayer(ctx context.Context, in *SearchPlayerRequest, opts ...grpc.CallOption) (*Player, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Player) + err := c.cc.Invoke(ctx, StalkerService_SearchPlayer_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *stalkerServiceClient) GetPlayerByID(ctx context.Context, in *GetPlayerByIDRequest, opts ...grpc.CallOption) (*Player, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Player) + err := c.cc.Invoke(ctx, StalkerService_GetPlayerByID_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *stalkerServiceClient) GetPlayerMatches(ctx context.Context, in *GetPlayerMatchesRequest, opts ...grpc.CallOption) (*GetPlayerMatchesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetPlayerMatchesResponse) + err := c.cc.Invoke(ctx, StalkerService_GetPlayerMatches_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *stalkerServiceClient) GetMatchDetails(ctx context.Context, in *GetMatchDetailsRequest, opts ...grpc.CallOption) (*MatchDetails, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(MatchDetails) + err := c.cc.Invoke(ctx, StalkerService_GetMatchDetails_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *stalkerServiceClient) SaveMatches(ctx context.Context, in *SaveMatchesRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, StalkerService_SaveMatches_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *stalkerServiceClient) GetUserMatches(ctx context.Context, in *GetUserMatchesRequest, opts ...grpc.CallOption) (*GetUserMatchesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetUserMatchesResponse) + err := c.cc.Invoke(ctx, StalkerService_GetUserMatches_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *stalkerServiceClient) GetUserMatchStats(ctx context.Context, in *GetUserMatchStatsRequest, opts ...grpc.CallOption) (*UserMatchStats, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(UserMatchStats) + err := c.cc.Invoke(ctx, StalkerService_GetUserMatchStats_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *stalkerServiceClient) GetMatchesSince(ctx context.Context, in *GetMatchesSinceRequest, opts ...grpc.CallOption) (*GetUserMatchesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetUserMatchesResponse) + err := c.cc.Invoke(ctx, StalkerService_GetMatchesSince_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *stalkerServiceClient) GetMatchesLastNDays(ctx context.Context, in *GetMatchesLastNDaysRequest, opts ...grpc.CallOption) (*GetUserMatchesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetUserMatchesResponse) + err := c.cc.Invoke(ctx, StalkerService_GetMatchesLastNDays_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *stalkerServiceClient) LinkFaceITAccount(ctx context.Context, in *LinkFaceITAccountRequest, opts ...grpc.CallOption) (*LinkedAccount, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(LinkedAccount) + err := c.cc.Invoke(ctx, StalkerService_LinkFaceITAccount_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *stalkerServiceClient) GetLinkedFaceITAccount(ctx context.Context, in *GetLinkedFaceITAccountRequest, opts ...grpc.CallOption) (*LinkedAccount, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(LinkedAccount) + err := c.cc.Invoke(ctx, StalkerService_GetLinkedFaceITAccount_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// StalkerServiceServer is the server API for StalkerService service. +// All implementations must embed UnimplementedStalkerServiceServer +// for forward compatibility. +// +// StalkerService provides FaceIT match tracking and player management +type StalkerServiceServer interface { + // Player management + SearchPlayer(context.Context, *SearchPlayerRequest) (*Player, error) + GetPlayerByID(context.Context, *GetPlayerByIDRequest) (*Player, error) + // Match management + GetPlayerMatches(context.Context, *GetPlayerMatchesRequest) (*GetPlayerMatchesResponse, error) + GetMatchDetails(context.Context, *GetMatchDetailsRequest) (*MatchDetails, error) + // Database operations + SaveMatches(context.Context, *SaveMatchesRequest) (*emptypb.Empty, error) + GetUserMatches(context.Context, *GetUserMatchesRequest) (*GetUserMatchesResponse, error) + GetUserMatchStats(context.Context, *GetUserMatchStatsRequest) (*UserMatchStats, error) + GetMatchesSince(context.Context, *GetMatchesSinceRequest) (*GetUserMatchesResponse, error) + GetMatchesLastNDays(context.Context, *GetMatchesLastNDaysRequest) (*GetUserMatchesResponse, error) + // Account linking + LinkFaceITAccount(context.Context, *LinkFaceITAccountRequest) (*LinkedAccount, error) + GetLinkedFaceITAccount(context.Context, *GetLinkedFaceITAccountRequest) (*LinkedAccount, error) + mustEmbedUnimplementedStalkerServiceServer() +} + +// UnimplementedStalkerServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedStalkerServiceServer struct{} + +func (UnimplementedStalkerServiceServer) SearchPlayer(context.Context, *SearchPlayerRequest) (*Player, error) { + return nil, status.Error(codes.Unimplemented, "method SearchPlayer not implemented") +} +func (UnimplementedStalkerServiceServer) GetPlayerByID(context.Context, *GetPlayerByIDRequest) (*Player, error) { + return nil, status.Error(codes.Unimplemented, "method GetPlayerByID not implemented") +} +func (UnimplementedStalkerServiceServer) GetPlayerMatches(context.Context, *GetPlayerMatchesRequest) (*GetPlayerMatchesResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetPlayerMatches not implemented") +} +func (UnimplementedStalkerServiceServer) GetMatchDetails(context.Context, *GetMatchDetailsRequest) (*MatchDetails, error) { + return nil, status.Error(codes.Unimplemented, "method GetMatchDetails not implemented") +} +func (UnimplementedStalkerServiceServer) SaveMatches(context.Context, *SaveMatchesRequest) (*emptypb.Empty, error) { + return nil, status.Error(codes.Unimplemented, "method SaveMatches not implemented") +} +func (UnimplementedStalkerServiceServer) GetUserMatches(context.Context, *GetUserMatchesRequest) (*GetUserMatchesResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetUserMatches not implemented") +} +func (UnimplementedStalkerServiceServer) GetUserMatchStats(context.Context, *GetUserMatchStatsRequest) (*UserMatchStats, error) { + return nil, status.Error(codes.Unimplemented, "method GetUserMatchStats not implemented") +} +func (UnimplementedStalkerServiceServer) GetMatchesSince(context.Context, *GetMatchesSinceRequest) (*GetUserMatchesResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetMatchesSince not implemented") +} +func (UnimplementedStalkerServiceServer) GetMatchesLastNDays(context.Context, *GetMatchesLastNDaysRequest) (*GetUserMatchesResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetMatchesLastNDays not implemented") +} +func (UnimplementedStalkerServiceServer) LinkFaceITAccount(context.Context, *LinkFaceITAccountRequest) (*LinkedAccount, error) { + return nil, status.Error(codes.Unimplemented, "method LinkFaceITAccount not implemented") +} +func (UnimplementedStalkerServiceServer) GetLinkedFaceITAccount(context.Context, *GetLinkedFaceITAccountRequest) (*LinkedAccount, error) { + return nil, status.Error(codes.Unimplemented, "method GetLinkedFaceITAccount not implemented") +} +func (UnimplementedStalkerServiceServer) mustEmbedUnimplementedStalkerServiceServer() {} +func (UnimplementedStalkerServiceServer) testEmbeddedByValue() {} + +// UnsafeStalkerServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to StalkerServiceServer will +// result in compilation errors. +type UnsafeStalkerServiceServer interface { + mustEmbedUnimplementedStalkerServiceServer() +} + +func RegisterStalkerServiceServer(s grpc.ServiceRegistrar, srv StalkerServiceServer) { + // If the following call panics, it indicates UnimplementedStalkerServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&StalkerService_ServiceDesc, srv) +} + +func _StalkerService_SearchPlayer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchPlayerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(StalkerServiceServer).SearchPlayer(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: StalkerService_SearchPlayer_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(StalkerServiceServer).SearchPlayer(ctx, req.(*SearchPlayerRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _StalkerService_GetPlayerByID_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetPlayerByIDRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(StalkerServiceServer).GetPlayerByID(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: StalkerService_GetPlayerByID_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(StalkerServiceServer).GetPlayerByID(ctx, req.(*GetPlayerByIDRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _StalkerService_GetPlayerMatches_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetPlayerMatchesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(StalkerServiceServer).GetPlayerMatches(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: StalkerService_GetPlayerMatches_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(StalkerServiceServer).GetPlayerMatches(ctx, req.(*GetPlayerMatchesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _StalkerService_GetMatchDetails_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetMatchDetailsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(StalkerServiceServer).GetMatchDetails(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: StalkerService_GetMatchDetails_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(StalkerServiceServer).GetMatchDetails(ctx, req.(*GetMatchDetailsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _StalkerService_SaveMatches_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SaveMatchesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(StalkerServiceServer).SaveMatches(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: StalkerService_SaveMatches_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(StalkerServiceServer).SaveMatches(ctx, req.(*SaveMatchesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _StalkerService_GetUserMatches_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetUserMatchesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(StalkerServiceServer).GetUserMatches(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: StalkerService_GetUserMatches_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(StalkerServiceServer).GetUserMatches(ctx, req.(*GetUserMatchesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _StalkerService_GetUserMatchStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetUserMatchStatsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(StalkerServiceServer).GetUserMatchStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: StalkerService_GetUserMatchStats_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(StalkerServiceServer).GetUserMatchStats(ctx, req.(*GetUserMatchStatsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _StalkerService_GetMatchesSince_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetMatchesSinceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(StalkerServiceServer).GetMatchesSince(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: StalkerService_GetMatchesSince_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(StalkerServiceServer).GetMatchesSince(ctx, req.(*GetMatchesSinceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _StalkerService_GetMatchesLastNDays_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetMatchesLastNDaysRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(StalkerServiceServer).GetMatchesLastNDays(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: StalkerService_GetMatchesLastNDays_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(StalkerServiceServer).GetMatchesLastNDays(ctx, req.(*GetMatchesLastNDaysRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _StalkerService_LinkFaceITAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(LinkFaceITAccountRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(StalkerServiceServer).LinkFaceITAccount(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: StalkerService_LinkFaceITAccount_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(StalkerServiceServer).LinkFaceITAccount(ctx, req.(*LinkFaceITAccountRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _StalkerService_GetLinkedFaceITAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetLinkedFaceITAccountRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(StalkerServiceServer).GetLinkedFaceITAccount(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: StalkerService_GetLinkedFaceITAccount_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(StalkerServiceServer).GetLinkedFaceITAccount(ctx, req.(*GetLinkedFaceITAccountRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// StalkerService_ServiceDesc is the grpc.ServiceDesc for StalkerService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var StalkerService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "stalker.StalkerService", + HandlerType: (*StalkerServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "SearchPlayer", + Handler: _StalkerService_SearchPlayer_Handler, + }, + { + MethodName: "GetPlayerByID", + Handler: _StalkerService_GetPlayerByID_Handler, + }, + { + MethodName: "GetPlayerMatches", + Handler: _StalkerService_GetPlayerMatches_Handler, + }, + { + MethodName: "GetMatchDetails", + Handler: _StalkerService_GetMatchDetails_Handler, + }, + { + MethodName: "SaveMatches", + Handler: _StalkerService_SaveMatches_Handler, + }, + { + MethodName: "GetUserMatches", + Handler: _StalkerService_GetUserMatches_Handler, + }, + { + MethodName: "GetUserMatchStats", + Handler: _StalkerService_GetUserMatchStats_Handler, + }, + { + MethodName: "GetMatchesSince", + Handler: _StalkerService_GetMatchesSince_Handler, + }, + { + MethodName: "GetMatchesLastNDays", + Handler: _StalkerService_GetMatchesLastNDays_Handler, + }, + { + MethodName: "LinkFaceITAccount", + Handler: _StalkerService_LinkFaceITAccount_Handler, + }, + { + MethodName: "GetLinkedFaceITAccount", + Handler: _StalkerService_GetLinkedFaceITAccount_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "proto/stalker.proto", +}