syntax = "proto3";

package user_service;
option go_package = "./user";

message Request {
  string ping = 1;
}

message Response {
  string pong = 1;
}

message SetUserRequest{
  uint64 UserId = 1;//用户id
  string Nickname = 2;//昵称
  string Avatar = 3;//头像
}

message SetUserResponse{
  int64 RowsAffected = 1;
}

message CreateUserRequest{
  string Nickname = 1;
  string Avatar = 2;
}

message UserId{
  uint64 UserId = 1;
}

message Empty {}//空结构体

message User {
  uint64 ID = 1;
  string Nickname = 2;
  string Avatar = 3;
  bool IsNew = 4;
}

message UserIds {
  repeated uint64 UserId = 1;
}

message UserList {
  repeated User UserList = 1;
}

service user_service {
  rpc Ping(Request) returns(Response);

  //SetUser 设置用户信息
  rpc SetUser (SetUserRequest) returns(SetUserResponse);

  //CreateUser 获取用户或者创建用户
  rpc CreateUser(CreateUserRequest) returns(UserId);

  //CreateEmptyUser 创建空用户,用于关联游戏账号的空数据
  rpc CreateEmptyUser(Empty) returns(UserId);

  //FirstOrCreateUser 创建用户或者获取用户
  rpc FindById(UserId) returns(User);

  //GetUserById 通过 ID 获取用户
  rpc GetUserById(UserId) returns(User);

  //GetUserIds 通过 ID 获取用户
  rpc GetUserIds(UserIds) returns(UserList);
}