syntax = "proto3"; package category; import "public_messages.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/wrappers.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; import "google/api/annotations.proto"; option csharp_namespace = "CMSMicroservice.Protobuf.Protos.Category"; service CategoryContract { rpc CreateNewCategory(CreateNewCategoryRequest) returns (CreateNewCategoryResponse){ option (google.api.http) = { post: "/CreateNewCategory" body: "*" }; }; rpc UpdateCategory(UpdateCategoryRequest) returns (google.protobuf.Empty){ option (google.api.http) = { put: "/UpdateCategory" body: "*" }; }; rpc DeleteCategory(DeleteCategoryRequest) returns (google.protobuf.Empty){ option (google.api.http) = { delete: "/DeleteCategory" body: "*" }; }; rpc GetCategory(GetCategoryRequest) returns (GetCategoryResponse){ option (google.api.http) = { get: "/GetCategory" }; }; rpc GetAllCategoryByFilter(GetAllCategoryByFilterRequest) returns (GetAllCategoryByFilterResponse){ option (google.api.http) = { get: "/GetAllCategoryByFilter" }; }; rpc GetAllCategoriesForCustomer(GetAllCategoriesForCustomerRequest) returns (GetAllCategoriesForCustomerResponse){ option (google.api.http) = { get: "/Customer/Categories/GetAllCategories" }; }; rpc GetCategoryByIdForCustomer(GetCategoryByIdForCustomerRequest) returns (GetCategoryByIdForCustomerResponse){ option (google.api.http) = { get: "/Customer/Categories/GetCategory/{id}" }; }; rpc GetAllCategories(GetAllCategoriesRequest) returns (GetAllCategoriesResponse){ option (google.api.http) = { get: "/Customer/GetAllCategories" }; }; } message CreateNewCategoryRequest { string name = 1; string title = 2; google.protobuf.StringValue description = 3; google.protobuf.StringValue image_path = 4; google.protobuf.Int64Value parent_id = 5; bool is_active = 6; int32 sort_order = 7; } message CreateNewCategoryResponse { int64 id = 1; } message UpdateCategoryRequest { int64 id = 1; string name = 2; string title = 3; google.protobuf.StringValue description = 4; google.protobuf.StringValue image_path = 5; google.protobuf.Int64Value parent_id = 6; bool is_active = 7; int32 sort_order = 8; } message DeleteCategoryRequest { int64 id = 1; } message GetCategoryRequest { int64 id = 1; } message GetCategoryResponse { int64 id = 1; string name = 2; string title = 3; google.protobuf.StringValue description = 4; google.protobuf.StringValue image_path = 5; google.protobuf.Int64Value parent_id = 6; bool is_active = 7; int32 sort_order = 8; } message GetAllCategoryByFilterRequest { messages.PaginationState pagination_state = 1; google.protobuf.StringValue sort_by = 2; GetAllCategoryByFilterFilter filter = 3; } message GetAllCategoryByFilterFilter { google.protobuf.Int64Value id = 1; google.protobuf.StringValue name = 2; google.protobuf.StringValue title = 3; google.protobuf.StringValue description = 4; google.protobuf.StringValue image_path = 5; google.protobuf.Int64Value parent_id = 6; google.protobuf.BoolValue is_active = 7; google.protobuf.Int32Value sort_order = 8; } message GetAllCategoryByFilterResponse { messages.MetaData meta_data = 1; repeated GetAllCategoryByFilterResponseModel models = 2; } message GetAllCategoryByFilterResponseModel { int64 id = 1; string name = 2; string title = 3; google.protobuf.StringValue description = 4; google.protobuf.StringValue image_path = 5; google.protobuf.Int64Value parent_id = 6; bool is_active = 7; int32 sort_order = 8; // تعداد محصولات این دسته‌بندی int32 product_count = 9; } message GetAllCategoriesRequest { messages.PaginationState pagination_state = 1; google.protobuf.StringValue sort_by = 2; GetAllCategoryByFilterFilter filter = 3; } message GetAllCategoriesResponse { messages.MetaData meta_data = 1; repeated GetAllCategoryFilterResponseModel models = 2; } message GetAllCategoryFilterResponseModel { int64 id = 1; string name = 2; string title = 3; string description = 4; google.protobuf.StringValue image_path = 5; google.protobuf.Int64Value parent_id = 6; bool is_active = 7; int32 sort_order = 8; } // Customer Messages message GetAllCategoriesForCustomerRequest { google.protobuf.Int64Value parent_id = 1; int32 page_number = 2; int32 page_size = 3; } message GetAllCategoriesForCustomerResponse { messages.MetaData meta_data = 1; repeated GetAllCategoryFilterResponseModel models = 2; } message GetCategoryByIdForCustomerRequest { int64 id = 1; } message GetCategoryByIdForCustomerResponse { GetAllCategoryFilterResponseModel category = 1; }