syntax = "proto3";
// import "proto/include/google/protobuf/any.proto";
package users;

service UsersService {
  // users model Requests
  rpc FindUsersList(FindRequest) returns (stream Users) {}
  rpc GetUsersById(GetRequest) returns (Users) {}
  rpc CreateUsers(Users) returns (Users) {}
  rpc UpdateUsers(UpdateUsersRequest) returns (Users) {}
  rpc UpdateUsersById(UpdateUsersByIdRequest) returns (Users) {}
  rpc DeleteUsers(FindRequest) returns (DeleteResult) {}
  rpc DeleteUsersById(GetRequest) returns (DeleteResult) {}
  // users model Requests

  // UserChatGroups model Requests
  rpc FindUserChatGroupsList(FindRequest) returns (stream Users) {}
  rpc GetUserChatGroupsById(GetRequest) returns (Users) {}
  rpc CreateUserChatGroups(Users) returns (Users) {}
  rpc UpdateUserChatGroups(UpdateUsersRequest) returns (Users) {}
  rpc UpdateUserChatGroupsById(UpdateUsersByIdRequest) returns (Users) {}
  rpc DeleteUserChatGroups(FindRequest) returns (DeleteResult) {}
  rpc DeleteUserChatGroupsById(GetRequest) returns (DeleteResult) {}
  // UserChatGroups model Requests

  // UserDevices model Requests
  rpc FindUserDevicesList(FindRequest) returns (stream Users) {}
  rpc GetUserDevicesById(GetRequest) returns (Users) {}
  rpc CreateUserDevices(Users) returns (Users) {}
  rpc UpdateUserDevices(UpdateUsersRequest) returns (Users) {}
  rpc UpdateUserDevicesById(UpdateUsersByIdRequest) returns (Users) {}
  rpc DeleteUserDevices(FindRequest) returns (DeleteResult) {}
  rpc DeleteUserDevicesById(GetRequest) returns (DeleteResult) {}
  // UserDevices model Requests

  // UserFriends model Requests
  rpc FindUserFriendsList(FindRequest) returns (stream Users) {}
  rpc GetUserFriendsById(GetRequest) returns (Users) {}
  rpc CreateUserFriends(Users) returns (Users) {}
  rpc UpdateUserFriends(UpdateUsersRequest) returns (Users) {}
  rpc UpdateUserFriendsById(UpdateUsersByIdRequest) returns (Users) {}
  rpc DeleteUserFriends(FindRequest) returns (DeleteResult) {}
  rpc DeleteUserFriendsById(GetRequest) returns (DeleteResult) {}
  // UserFriends model Requests
}

message FindRequest { string query = 1; }

message GetRequest {
  string _id = 1;
  string userId = 2;
  int32 userIdCounts = 3;
  string query = 4;
}

message UpdateUsersRequest {
  string userId = 1;
  int32 userIdCounts = 2;
  string obj = 3;
}

message UpdateUsersByIdRequest {
  string _id = 1;
  string obj = 2;
}

message DeleteResult {
  bool state = 1;
  int32 num = 2;
}

message Users {
  string _id = 1;
  string userId = 2;
  string username = 3;
  string email = 4;
  bool emailVerified = 5;
  string phone = 6;
  bool phoneVerified = 7;
  string password = 8;
  Others others = 9;
  string token = 10;
  string createdAt = 13;
  string updatedAt = 14;
  string deletedAt = 15;
}

message Others {
  string nickname = 1;
  string headimgurl = 2;
  int32 sex = 3;
  string registerTime = 4;
  string loginTime = 5;
  bool activate = 6;
  int32 exp = 7;
  int64 userIdCounts = 8;
  int32 level = 9;
}