syntax = "proto3";

package user;

option go_package = "./user";

import "google/api/annotations.proto";

message Request {
  string Ping = 1;
}

message Response {
  string Pong = 1;
}

message UserEntity {
  int64 Id = 1;
  string Name = 2;
  string Gender = 3;
  string Mobile = 4;
}

// 用户登录
message LoginReq {
  string Mobile = 1;
  string Password = 2;
}
message LoginResp {
  int64 Id = 1;
  string Token = 2;
  int64 expire = 3;
}
// 用户登录

// 用户注册
message RegisterReq {
  string Name = 1;
  string Gender = 2;
  string Mobile = 3;
  string Password = 4;
}
message RegisterResp {
  int64 count = 1; // 注册成功返回成功注册数量1
  string Token = 2;
  int64 expire = 3;
}
// 用户注册

// 用户信息
message UserInfoReq {
  int64 Id = 1;
}
message UserInfoResp {
  UserEntity user = 1;
}
// 用户信息

// 删除用户
message DeleteUserReq {
  int64 Id = 1;
}
message DeleteUserResp {
  bool Status = 1;
}
// 删除用户

// 更新用户
message UpdateUserReq {
  int64 Id = 1;
  string Name = 2;
  string Gender = 3;
  string Mobile = 4;
  string Password = 5;
}
message UpdateUserResp {
  bool Status = 1;
}
// 更新用户

service User {
  rpc Ping(Request) returns(Response) {
    option (google.api.http) = {
      post: "/v1/user/ping"
      body: "*"
    };
  }
  rpc Login(LoginReq) returns(LoginResp) {
    option (google.api.http) = {
      post: "/v1/user/login"
      body: "*"
    };
  }
  rpc Register(RegisterReq) returns(RegisterResp) {
    option (google.api.http) = {
      post: "/v1/user/register"
      body: "*"
    };
  }
  rpc UserInfo(UserInfoReq) returns(UserInfoResp) {
    option (google.api.http) = {
      post: "/v1/user/info"
      body: "*"
    };
  }
  rpc DeleteUser(DeleteUserReq) returns(DeleteUserResp) {
    option (google.api.http) = {
      post: "/v1/user/delete"
      body: "*"
    };
  }
  rpc UpdateUser(UpdateUserReq) returns(UpdateUserResp) {
    option (google.api.http) = {
      post: "/v1/user/update"
      body: "*"
    };
  }
}