tailly_back_v2/proto/subscribe.proto
admin db403171da
All checks were successful
continuous-integration/drone/push Build is passing
v0.0.25 Добавлен gRPC сервис подписок/пидписчиков
2025-08-26 09:48:50 +03:00

154 lines
5.1 KiB
Protocol Buffer
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

syntax = "proto3";
package proto;
option go_package = ".;proto";
// Сервис для работы с подписками
service SubscribeService {
// Подписаться на пользователя
rpc FollowUser (FollowRequest) returns (FollowResponse);
// Отписаться от пользователя
rpc UnfollowUser (UnfollowRequest) returns (UnfollowResponse);
// Получить список подписчиков пользователя
rpc GetFollowers (GetFollowersRequest) returns (GetFollowersResponse);
// Получить список подписок пользователя
rpc GetFollowing (GetFollowingRequest) returns (GetFollowingResponse);
// Проверить, подписан ли пользователь на другого
rpc IsFollowing (IsFollowingRequest) returns (IsFollowingResponse);
// Получить уведомления о подписках для пользователя
rpc GetSubscriptionNotifications (GetNotificationsRequest) returns (GetNotificationsResponse);
// Пометить уведомление как прочитанное
rpc MarkNotificationAsRead (MarkNotificationReadRequest) returns (MarkNotificationReadResponse);
// Получить только КОЛИЧЕСТВО подписчиков
rpc GetFollowersCount (GetCountRequest) returns (GetCountResponse);
// Получить только КОЛИЧЕСТВО подписок
rpc GetFollowingCount (GetCountRequest) returns (GetCountResponse);
}
message GetCountRequest {
int32 user_id = 1;
}
// Ответ с количеством
message GetCountResponse {
int32 count = 1;
}
// Запрос на подписку
message FollowRequest {
int32 follower_id = 1; // ID пользователя, который подписывается
int32 following_id = 2; // ID пользователя, на которого подписываются
}
// Ответ на подписку
message FollowResponse {
bool success = 1; // Успешность операции
string message = 2; // Сообщение (например, об ошибке)
int32 subscription_id = 3; // ID созданной подписки
int32 notification_id = 4; // ID созданного уведомления
}
// Запрос на отписку
message UnfollowRequest {
int32 follower_id = 1;
int32 following_id = 2;
}
// Ответ на отписку
message UnfollowResponse {
bool success = 1;
string message = 2;
}
// Запрос на получение подписчиков
message GetFollowersRequest {
int32 user_id = 1; // ID пользователя, чьих подписчиков запрашиваем
int32 limit = 2; // Лимит (для пагинации)
int32 offset = 3; // Смещение (для пагинации)
}
// Ответ с подписчиками
message GetFollowersResponse {
repeated Follower followers = 1; // Список подписчиков
int32 total_count = 2; // Общее количество подписчиков
message Follower {
int32 user_id = 1;
string username = 2;
string avatar = 3;
}
}
// Запрос на получение подписок
message GetFollowingRequest {
int32 user_id = 1; // ID пользователя, чьи подписки запрашиваем
int32 limit = 2;
int32 offset = 3;
}
// Ответ с подписками
message GetFollowingResponse {
repeated Following following = 1; // Список подписок
int32 total_count = 2; // Общее количество подписок
message Following {
int32 user_id = 1;
string username = 2;
string avatar = 3;
}
}
// Запрос на проверку подписки
message IsFollowingRequest {
int32 follower_id = 1;
int32 following_id = 2;
}
// Ответ на проверку подписки
message IsFollowingResponse {
bool is_following = 1; // true - подписан, false - не подписан
}
// Запрос на получение уведомлений
message GetNotificationsRequest {
int32 user_id = 1; // ID пользователя, чьи уведомления запрашиваем
bool unread_only = 2; // Только непрочитанные
int32 limit = 3;
int32 offset = 4;
}
// Ответ с уведомлениями
message GetNotificationsResponse {
repeated Notification notifications = 1;
int32 total_count = 2;
int32 unread_count = 3; // Количество непрочитанных уведомлений
message Notification {
int32 id = 1;
int32 subscription_id = 2;
int32 follower_id = 3;
string follower_username = 4;
string follower_avatar = 5;
bool is_read = 6;
string created_at = 7;
string expires_at = 8;
}
}
// Запрос на пометку уведомления как прочитанного
message MarkNotificationReadRequest {
int32 notification_id = 1;
int32 user_id = 2; // Для проверки прав
}
// Ответ на пометку уведомления
message MarkNotificationReadResponse {
bool success = 1;
string message = 2;
}