feat: Add gRPC API Layer - Phase 6 Integration
Added Protobuf definitions and gRPC services for all CQ layers:
Protobuf Files (4):
- configuration.proto: 2 Commands + 3 Queries (5 RPCs)
- clubmembership.proto: 3 Commands + 3 Queries (6 RPCs)
- networkmembership.proto: 3 Commands + 3 Queries (6 RPCs)
- commission.proto: 5 Commands + 4 Queries (9 RPCs)
gRPC Services (4):
- ConfigurationService: SetConfigurationValue, Deactivate, GetByKey, GetAll, GetHistory
- ClubMembershipService: Activate, Deactivate, AssignFeature, Get, GetAll, GetHistory
- NetworkMembershipService: Join, Move, Remove, GetPosition, GetTree, GetHistory
- CommissionService: Calculate+Process+Withdraw (5 commands), Get queries (4)
Features:
- HTTP transcoding enabled via google.api.http annotations
- Auto-registration via ConfigureGrpcEndpoints
- MetaData pagination support
- Request/Response DTOs for all endpoints
- Integration with MediatR CQRS handlers
Total: 4 proto files, 4 service classes, 26 RPC endpoints
Build: ✅ Successful (0 errors)
This commit is contained in:
166
src/CMSMicroservice.Protobuf/Protos/clubmembership.proto
Normal file
166
src/CMSMicroservice.Protobuf/Protos/clubmembership.proto
Normal file
@@ -0,0 +1,166 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package clubmembership;
|
||||
|
||||
import "public_messages.proto";
|
||||
import "google/protobuf/empty.proto";
|
||||
import "google/protobuf/wrappers.proto";
|
||||
import "google/protobuf/timestamp.proto";
|
||||
import "google/api/annotations.proto";
|
||||
|
||||
option csharp_namespace = "CMSMicroservice.Protobuf.Protos.ClubMembership";
|
||||
|
||||
service ClubMembershipContract
|
||||
{
|
||||
rpc ActivateClubMembership(ActivateClubMembershipRequest) returns (google.protobuf.Empty){
|
||||
option (google.api.http) = {
|
||||
post: "/ClubMembership/Activate"
|
||||
body: "*"
|
||||
};
|
||||
};
|
||||
rpc DeactivateClubMembership(DeactivateClubMembershipRequest) returns (google.protobuf.Empty){
|
||||
option (google.api.http) = {
|
||||
post: "/ClubMembership/Deactivate"
|
||||
body: "*"
|
||||
};
|
||||
};
|
||||
rpc AssignFeatureToMembership(AssignFeatureToMembershipRequest) returns (google.protobuf.Empty){
|
||||
option (google.api.http) = {
|
||||
post: "/ClubMembership/AssignFeature"
|
||||
body: "*"
|
||||
};
|
||||
};
|
||||
rpc GetClubMembership(GetClubMembershipRequest) returns (GetClubMembershipResponse){
|
||||
option (google.api.http) = {
|
||||
get: "/ClubMembership/Get"
|
||||
};
|
||||
};
|
||||
rpc GetAllClubMemberships(GetAllClubMembershipsRequest) returns (GetAllClubMembershipsResponse){
|
||||
option (google.api.http) = {
|
||||
get: "/ClubMembership/GetAll"
|
||||
};
|
||||
};
|
||||
rpc GetClubMembershipHistory(GetClubMembershipHistoryRequest) returns (GetClubMembershipHistoryResponse){
|
||||
option (google.api.http) = {
|
||||
get: "/ClubMembership/GetHistory"
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
// Activate Command
|
||||
message ActivateClubMembershipRequest
|
||||
{
|
||||
int64 user_id = 1;
|
||||
int64 package_id = 2;
|
||||
google.protobuf.StringValue activation_code = 3;
|
||||
int32 duration_months = 4;
|
||||
}
|
||||
|
||||
// Deactivate Command
|
||||
message DeactivateClubMembershipRequest
|
||||
{
|
||||
int64 user_id = 1;
|
||||
string reason = 2;
|
||||
}
|
||||
|
||||
// AssignFeature Command
|
||||
message AssignFeatureToMembershipRequest
|
||||
{
|
||||
int64 user_id = 1;
|
||||
int64 product_id = 2;
|
||||
google.protobuf.Int32Value quantity = 3;
|
||||
google.protobuf.Int32Value duration_days = 4;
|
||||
}
|
||||
|
||||
// Get Query
|
||||
message GetClubMembershipRequest
|
||||
{
|
||||
int64 user_id = 1;
|
||||
}
|
||||
|
||||
message GetClubMembershipResponse
|
||||
{
|
||||
int64 id = 1;
|
||||
int64 user_id = 2;
|
||||
int64 package_id = 3;
|
||||
string package_name = 4;
|
||||
string activation_code = 5;
|
||||
google.protobuf.Timestamp activated_at = 6;
|
||||
google.protobuf.Timestamp expires_at = 7;
|
||||
bool is_active = 8;
|
||||
google.protobuf.Timestamp created = 9;
|
||||
repeated MembershipFeatureModel features = 10;
|
||||
}
|
||||
|
||||
message MembershipFeatureModel
|
||||
{
|
||||
int64 product_id = 1;
|
||||
string product_name = 2;
|
||||
int32 quantity = 3;
|
||||
google.protobuf.Timestamp expires_at = 4;
|
||||
bool is_active = 5;
|
||||
}
|
||||
|
||||
// GetAll Query
|
||||
message GetAllClubMembershipsRequest
|
||||
{
|
||||
google.protobuf.Int64Value user_id = 1;
|
||||
google.protobuf.Int64Value package_id = 2;
|
||||
google.protobuf.BoolValue is_active = 3;
|
||||
google.protobuf.BoolValue is_expired = 4;
|
||||
int32 page_index = 5;
|
||||
int32 page_size = 6;
|
||||
}
|
||||
|
||||
message GetAllClubMembershipsResponse
|
||||
{
|
||||
messages.MetaData meta_data = 1;
|
||||
repeated ClubMembershipModel models = 2;
|
||||
}
|
||||
|
||||
message ClubMembershipModel
|
||||
{
|
||||
int64 id = 1;
|
||||
int64 user_id = 2;
|
||||
string user_name = 3;
|
||||
int64 package_id = 4;
|
||||
string package_name = 5;
|
||||
string activation_code = 6;
|
||||
google.protobuf.Timestamp activated_at = 7;
|
||||
google.protobuf.Timestamp expires_at = 8;
|
||||
bool is_active = 9;
|
||||
bool is_expired = 10;
|
||||
google.protobuf.Timestamp created = 11;
|
||||
}
|
||||
|
||||
// GetHistory Query
|
||||
message GetClubMembershipHistoryRequest
|
||||
{
|
||||
google.protobuf.Int64Value user_id = 1;
|
||||
google.protobuf.Int64Value package_id = 2;
|
||||
int32 page_index = 3;
|
||||
int32 page_size = 4;
|
||||
}
|
||||
|
||||
message GetClubMembershipHistoryResponse
|
||||
{
|
||||
messages.MetaData meta_data = 1;
|
||||
repeated ClubMembershipHistoryModel models = 2;
|
||||
}
|
||||
|
||||
message ClubMembershipHistoryModel
|
||||
{
|
||||
int64 id = 1;
|
||||
int64 club_membership_id = 2;
|
||||
int64 user_id = 3;
|
||||
google.protobuf.Int64Value old_package_id = 4;
|
||||
google.protobuf.Int64Value new_package_id = 5;
|
||||
google.protobuf.Timestamp old_activated_at = 6;
|
||||
google.protobuf.Timestamp new_activated_at = 7;
|
||||
google.protobuf.Timestamp old_expires_at = 8;
|
||||
google.protobuf.Timestamp new_expires_at = 9;
|
||||
int32 action = 10; // ClubMembershipAction enum
|
||||
string performed_by = 11;
|
||||
string reason = 12;
|
||||
google.protobuf.Timestamp created = 13;
|
||||
}
|
||||
Reference in New Issue
Block a user