♻️ Move the chat part of the Sphere service to the Messager service
This commit is contained in:
133
DysonNetwork.Shared/Proto/poll.proto
Normal file
133
DysonNetwork.Shared/Proto/poll.proto
Normal file
@@ -0,0 +1,133 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package proto;
|
||||
|
||||
option csharp_namespace = "DysonNetwork.Shared.Proto";
|
||||
|
||||
import "google/protobuf/timestamp.proto";
|
||||
import "google/protobuf/wrappers.proto";
|
||||
import "publisher.proto";
|
||||
|
||||
// Enums
|
||||
enum PollQuestionType {
|
||||
POLL_QUESTION_TYPE_UNSPECIFIED = 0;
|
||||
SINGLE_CHOICE = 1;
|
||||
MULTIPLE_CHOICE = 2;
|
||||
YES_NO = 3;
|
||||
RATING = 4;
|
||||
FREE_TEXT = 5;
|
||||
}
|
||||
|
||||
// Messages
|
||||
|
||||
message PollOption {
|
||||
string id = 1;
|
||||
string label = 2;
|
||||
google.protobuf.StringValue description = 3;
|
||||
int32 order = 4;
|
||||
}
|
||||
|
||||
message PollQuestion {
|
||||
string id = 1;
|
||||
PollQuestionType type = 2;
|
||||
repeated PollOption options = 3;
|
||||
string title = 4;
|
||||
google.protobuf.StringValue description = 5;
|
||||
int32 order = 6;
|
||||
bool is_required = 7;
|
||||
}
|
||||
|
||||
message Poll {
|
||||
string id = 1;
|
||||
google.protobuf.StringValue title = 2;
|
||||
google.protobuf.StringValue description = 3;
|
||||
optional google.protobuf.Timestamp ended_at = 4;
|
||||
bool is_anonymous = 5;
|
||||
|
||||
string publisher_id = 6;
|
||||
optional Publisher publisher = 7;
|
||||
|
||||
repeated PollQuestion questions = 8;
|
||||
|
||||
google.protobuf.Timestamp created_at = 9;
|
||||
google.protobuf.Timestamp updated_at = 10;
|
||||
optional google.protobuf.Timestamp deleted_at = 11;
|
||||
}
|
||||
|
||||
message PollAnswer {
|
||||
string id = 1;
|
||||
bytes answer = 2; // Dictionary<string, JsonElement>
|
||||
|
||||
string account_id = 3;
|
||||
string poll_id = 4;
|
||||
|
||||
google.protobuf.Timestamp created_at = 5;
|
||||
google.protobuf.Timestamp updated_at = 6;
|
||||
optional google.protobuf.Timestamp deleted_at = 7;
|
||||
}
|
||||
|
||||
// ====================================
|
||||
// Request/Response Messages
|
||||
// ====================================
|
||||
|
||||
message GetPollRequest {
|
||||
oneof identifier {
|
||||
string id = 1;
|
||||
}
|
||||
}
|
||||
|
||||
message GetPollBatchRequest {
|
||||
repeated string ids = 1;
|
||||
}
|
||||
|
||||
message GetPollBatchResponse {
|
||||
repeated Poll polls = 1;
|
||||
}
|
||||
|
||||
message ListPollsRequest {
|
||||
google.protobuf.StringValue publisher_id = 1;
|
||||
int32 page_size = 2;
|
||||
string page_token = 3;
|
||||
google.protobuf.StringValue order_by = 4;
|
||||
bool order_desc = 5;
|
||||
}
|
||||
|
||||
message ListPollsResponse {
|
||||
repeated Poll polls = 1;
|
||||
string next_page_token = 2;
|
||||
int32 total_size = 3;
|
||||
}
|
||||
|
||||
message GetPollAnswerRequest {
|
||||
string poll_id = 1;
|
||||
string account_id = 2;
|
||||
}
|
||||
|
||||
message GetPollStatsRequest {
|
||||
string poll_id = 1;
|
||||
}
|
||||
|
||||
message GetPollStatsResponse {
|
||||
map<string, string> stats = 1; // Question ID -> JSON string of stats (option_id -> count)
|
||||
}
|
||||
|
||||
message GetPollQuestionStatsRequest {
|
||||
string question_id = 1;
|
||||
}
|
||||
|
||||
message GetPollQuestionStatsResponse {
|
||||
map<string, int32> stats = 1; // Option ID -> count
|
||||
}
|
||||
|
||||
// ====================================
|
||||
// Service Definitions
|
||||
// ====================================
|
||||
|
||||
service PollService {
|
||||
rpc GetPoll(GetPollRequest) returns (Poll);
|
||||
rpc GetPollBatch(GetPollBatchRequest) returns (GetPollBatchResponse);
|
||||
rpc ListPolls(ListPollsRequest) returns (ListPollsResponse);
|
||||
rpc GetPollAnswer(GetPollAnswerRequest) returns (PollAnswer);
|
||||
rpc GetPollStats(GetPollStatsRequest) returns (GetPollStatsResponse);
|
||||
rpc GetPollQuestionStats(GetPollQuestionStatsRequest) returns (GetPollQuestionStatsResponse);
|
||||
}
|
||||
@@ -9,6 +9,7 @@ import "google/protobuf/wrappers.proto";
|
||||
import "file.proto";
|
||||
import "realm.proto";
|
||||
import "publisher.proto";
|
||||
import "account.proto";
|
||||
|
||||
// Enums
|
||||
enum PostType {
|
||||
@@ -320,5 +321,3 @@ service PostService {
|
||||
// List posts with filters
|
||||
rpc ListPosts(ListPostsRequest) returns (ListPostsResponse);
|
||||
}
|
||||
|
||||
import 'account.proto';
|
||||
|
||||
Reference in New Issue
Block a user