syntax = "proto3";
// import healthcheck payment
import "proto/healthcheck/healthcheck.proto";
// import "proto/include/google/protobuf/any.proto";
package <%=proto%>;

service <%=protoCamelCapitalize%>Service {
    // automate grpc healthcheck method
    rpc Check(HealthCheckRequest) returns (HealthCheckResponse);
    // your model Requests
    rpc Find<%=protoCamelCapitalize%>List (FindRequest) returns (Find<%=protoCamelCapitalize%>Result) {}
    rpc Get<%=protoCamelCapitalize%>ById (GetRequest) returns (<%=protoCamelCapitalize%>) {}
    rpc Create<%=protoCamelCapitalize%> (Create<%=protoCamelCapitalize%>Request) returns (<%=protoCamelCapitalize%>) {}
    rpc Update<%=protoCamelCapitalize%> (Update<%=protoCamelCapitalize%>Request) returns (<%=protoCamelCapitalize%>) {}
    rpc Update<%=protoCamelCapitalize%>ById (Update<%=protoCamelCapitalize%>ByIdRequest) returns (<%=protoCamelCapitalize%>) {}
    rpc Delete<%=protoCamelCapitalize%> (FindRequest) returns (DeleteResult) {}
    rpc Delete<%=protoCamelCapitalize%>ById (GetRequest) returns (DeleteResult) {}
}

message FindRequest {
    string query = 1;
}

message GetRequest {
    string id = 1;
    string query = 2;
}

message Create<%=protoCamelCapitalize%>Request {
    string name = 1;
}

message Update<%=protoCamelCapitalize%>Request {
    string query = 1;
    Create<%=protoCamelCapitalize%>Request obj = 2;
}

message Update<%=protoCamelCapitalize%>ByIdRequest {
    string id = 1;
    Create<%=protoCamelCapitalize%>Request obj = 2;
}

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

message <%=protoCamelCapitalize%> {
    string id = 1;
    string name = 2;
    string createdAt = 13;
    string updatedAt = 14;
    string deletedAt = 15;
}

message Find<%=protoCamelCapitalize%>Result {
    repeated <%=protoCamelCapitalize%> data = 1;
    int32 limit = 2;
    int64 skip = 3;
    int64 total = 4;
}