syntax = "proto3";

package bet.beteran.c2se.member_bank_deposit;

import "protobuf/rpc.proto";
import "protobuf/pagination.proto";

import "models/member_bank_deposit.proto";

message CreateMemberBankDepositRequest {
  string name = 1;
  double amount = 2;
  optional string memo = 3;
}

message CreateMemberBankDepositResponse {
  message Result {
    bet.beteran.member_bank_deposit.MemberBankDepositModel member_bank_deposit = 1;
  }
  optional bet.protobuf.rpc.Error error = 1;
  optional Result result = 2;
}

message ListMemberBankDepositsRequest {
  message Search {
    optional string member_id = 1;
    optional string name_like = 2;
    optional double amount = 3;
    optional string memo_like = 4;
    optional bet.beteran.member_bank_deposit.MemberBankDepositState state = 5;
  }
  optional bet.protobuf.pagination.Pagination pagination = 1;
  repeated bet.protobuf.pagination.Sort sorts = 2;
  optional Search search = 3;
}

message ListMemberBankDepositsResponse {
  message Result {
    repeated bet.beteran.member_bank_deposit.MemberBankDepositModel member_bank_deposits = 1;
  }
  optional bet.protobuf.rpc.Error error = 1;
  optional Result result = 2;
}

message GetMemberBankDepositRequest {
  string id = 1;
}

message GetMemberBankDepositResponse {
  message Result {
    bet.beteran.member_bank_deposit.MemberBankDepositModel member_bank_deposit = 1;
  }
  optional bet.protobuf.rpc.Error error = 1;
  optional Result result = 2;
}

message UpdateMemberBankDepositRequest {
  string id = 1;
  string name = 3;
  double amount = 5;
  optional string memo = 7;
}

message UpdateMemberBankDepositResponse {
  message Result {
    bet.beteran.member_bank_deposit.MemberBankDepositModel member_bank_deposit = 1;
  }
  optional bet.protobuf.rpc.Error error = 1;
  optional Result result = 2;
}


message UpdateMemberBankDepositForStateRequest {
  string id = 1;
  bet.beteran.member_bank_deposit.MemberBankDepositState state = 2;
}

message UpdateMemberBankDepositForStateResponse {
  message Result {
    bet.beteran.member_bank_deposit.MemberBankDepositModel member_bank_deposit = 1;
  }
  optional bet.protobuf.rpc.Error error = 1;
  optional Result result = 2;
}

message DeleteMemberBankDepositRequest {
  string id = 1;
}

message DeleteMemberBankDepositResponse {
  message Result {
  }
  optional bet.protobuf.rpc.Error error = 1;
  optional Result result = 2;
}