feat: add notification events handling and MQTT integration

- Implemented notification event publishing with a new NotificationEventPublisher interface.
- Created a noopNotificationEventPublisher for testing purposes.
- Added functionality to publish notification created events via MQTT.
- Introduced a new stream event publisher for handling job logs and updates.
- Added database migration for popup_ads table.
- Created tests for notification events and popup ads functionality.
- Established MQTT connection and publishing helpers for event messages.
This commit is contained in:
2026-03-29 15:47:09 +00:00
parent a910e6c624
commit 863a0ea2f6
42 changed files with 4606 additions and 576 deletions

View File

@@ -33,6 +33,11 @@ service Admin {
rpc CreateAdminAdTemplate(CreateAdminAdTemplateRequest) returns (CreateAdminAdTemplateResponse);
rpc UpdateAdminAdTemplate(UpdateAdminAdTemplateRequest) returns (UpdateAdminAdTemplateResponse);
rpc DeleteAdminAdTemplate(DeleteAdminAdTemplateRequest) returns (MessageResponse);
rpc ListAdminPopupAds(ListAdminPopupAdsRequest) returns (ListAdminPopupAdsResponse);
rpc GetAdminPopupAd(GetAdminPopupAdRequest) returns (GetAdminPopupAdResponse);
rpc CreateAdminPopupAd(CreateAdminPopupAdRequest) returns (CreateAdminPopupAdResponse);
rpc UpdateAdminPopupAd(UpdateAdminPopupAdRequest) returns (UpdateAdminPopupAdResponse);
rpc DeleteAdminPopupAd(DeleteAdminPopupAdRequest) returns (MessageResponse);
rpc ListAdminPlayerConfigs(ListAdminPlayerConfigsRequest) returns (ListAdminPlayerConfigsResponse);
rpc GetAdminPlayerConfig(GetAdminPlayerConfigRequest) returns (GetAdminPlayerConfigResponse);
rpc CreateAdminPlayerConfig(CreateAdminPlayerConfigRequest) returns (CreateAdminPlayerConfigResponse);
@@ -338,6 +343,59 @@ message DeleteAdminAdTemplateRequest {
string id = 1;
}
message ListAdminPopupAdsRequest {
int32 page = 1;
int32 limit = 2;
optional string user_id = 3;
optional string search = 4;
}
message ListAdminPopupAdsResponse {
repeated AdminPopupAd items = 1;
int64 total = 2;
int32 page = 3;
int32 limit = 4;
}
message GetAdminPopupAdRequest {
string id = 1;
}
message GetAdminPopupAdResponse {
AdminPopupAd item = 1;
}
message CreateAdminPopupAdRequest {
string user_id = 1;
string type = 2;
string label = 3;
string value = 4;
optional bool is_active = 5;
optional int32 max_triggers_per_session = 6;
}
message CreateAdminPopupAdResponse {
AdminPopupAd item = 1;
}
message UpdateAdminPopupAdRequest {
string id = 1;
string user_id = 2;
string type = 3;
string label = 4;
string value = 5;
optional bool is_active = 6;
optional int32 max_triggers_per_session = 7;
}
message UpdateAdminPopupAdResponse {
AdminPopupAd item = 1;
}
message DeleteAdminPopupAdRequest {
string id = 1;
}
message ListAdminPlayerConfigsRequest {
int32 page = 1;
int32 limit = 2;

View File

@@ -19,6 +19,14 @@ service AdTemplates {
rpc DeleteAdTemplate(DeleteAdTemplateRequest) returns (MessageResponse);
}
service PopupAds {
rpc ListPopupAds(ListPopupAdsRequest) returns (ListPopupAdsResponse);
rpc CreatePopupAd(CreatePopupAdRequest) returns (CreatePopupAdResponse);
rpc UpdatePopupAd(UpdatePopupAdRequest) returns (UpdatePopupAdResponse);
rpc DeletePopupAd(DeletePopupAdRequest) returns (MessageResponse);
rpc GetActivePopupAd(GetActivePopupAdRequest) returns (GetActivePopupAdResponse);
}
service PlayerConfigs {
rpc ListPlayerConfigs(ListPlayerConfigsRequest) returns (ListPlayerConfigsResponse);
rpc CreatePlayerConfig(CreatePlayerConfigRequest) returns (CreatePlayerConfigResponse);
@@ -87,6 +95,53 @@ message DeleteAdTemplateRequest {
string id = 1;
}
message ListPopupAdsRequest {
int32 page = 1;
int32 limit = 2;
}
message ListPopupAdsResponse {
repeated PopupAd items = 1;
int64 total = 2;
int32 page = 3;
int32 limit = 4;
}
message CreatePopupAdRequest {
string type = 1;
string label = 2;
string value = 3;
optional bool is_active = 4;
optional int32 max_triggers_per_session = 5;
}
message CreatePopupAdResponse {
PopupAd item = 1;
}
message UpdatePopupAdRequest {
string id = 1;
string type = 2;
string label = 3;
string value = 4;
optional bool is_active = 5;
optional int32 max_triggers_per_session = 6;
}
message UpdatePopupAdResponse {
PopupAd item = 1;
}
message DeletePopupAdRequest {
string id = 1;
}
message GetActivePopupAdRequest {}
message GetActivePopupAdResponse {
optional PopupAd item = 1;
}
message ListPlayerConfigsRequest {}
message ListPlayerConfigsResponse {

View File

@@ -79,6 +79,17 @@ message AdTemplate {
google.protobuf.Timestamp updated_at = 10;
}
message PopupAd {
string id = 1;
string type = 2;
string label = 3;
string value = 4;
bool is_active = 5;
int32 max_triggers_per_session = 6;
google.protobuf.Timestamp created_at = 7;
google.protobuf.Timestamp updated_at = 8;
}
message PlayerConfig {
string id = 1;
string name = 2;
@@ -331,6 +342,19 @@ message AdminAdTemplate {
google.protobuf.Timestamp updated_at = 12;
}
message AdminPopupAd {
string id = 1;
string user_id = 2;
string type = 3;
string label = 4;
string value = 5;
bool is_active = 6;
int32 max_triggers_per_session = 7;
optional string owner_email = 8;
google.protobuf.Timestamp created_at = 9;
google.protobuf.Timestamp updated_at = 10;
}
message AdminJob {
string id = 1;
string status = 2;