@mamindom/contracts 1.0.137 → 1.0.139

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -18,7 +18,7 @@ export interface BannerListItemResponse {
18
18
  name: {
19
19
  [key: string]: string;
20
20
  };
21
- placement: BannerPlacement;
21
+ placements: BannerPlacement[];
22
22
  status: boolean;
23
23
  sortOrder: number;
24
24
  categoryId?: string | undefined;
@@ -36,7 +36,7 @@ export interface BannerDetailResponse {
36
36
  name: {
37
37
  [key: string]: string;
38
38
  };
39
- placement: BannerPlacement;
39
+ placements: BannerPlacement[];
40
40
  status: boolean;
41
41
  sortOrder: number;
42
42
  categoryId?: string | undefined;
@@ -97,7 +97,7 @@ export interface CreateBannerRequest {
97
97
  name: {
98
98
  [key: string]: string;
99
99
  };
100
- placement: BannerPlacement;
100
+ placements: BannerPlacement[];
101
101
  status: boolean;
102
102
  sortOrder: number;
103
103
  categoryId?: string | undefined;
@@ -118,7 +118,8 @@ export interface UpdateBannerRequest {
118
118
  name: {
119
119
  [key: string]: string;
120
120
  };
121
- placement?: BannerPlacement | undefined;
121
+ /** empty = не оновлювати; non-empty = заміна повного списку плейсментів. */
122
+ placements: BannerPlacement[];
122
123
  status?: boolean | undefined;
123
124
  sortOrder?: number | undefined;
124
125
  categoryId?: string | undefined;
@@ -116,6 +116,19 @@ export interface ReorderPopularQueryItem {
116
116
  id: string;
117
117
  sortOrder: number;
118
118
  }
119
+ export interface ListZeroResultsRequest {
120
+ /** default 100, max 500 */
121
+ limit?: number | undefined;
122
+ }
123
+ export interface ZeroResultItem {
124
+ query: string;
125
+ count: number;
126
+ }
127
+ export interface ListZeroResultsResponse {
128
+ items: ZeroResultItem[];
129
+ }
130
+ export interface ClearZeroResultsRequest {
131
+ }
119
132
  export declare const CATALOG_V1_PACKAGE_NAME = "catalog.v1";
120
133
  /**
121
134
  * SearchService — окремий сервіс під autocomplete та керування пошуком
@@ -136,6 +149,9 @@ export interface SearchServiceClient {
136
149
  updatePopularQuery(request: UpdatePopularQueryRequest): Observable<PopularQueryResponse>;
137
150
  deletePopularQuery(request: DeletePopularQueryRequest): Observable<DeleteResponse>;
138
151
  reorderPopularQueries(request: ReorderPopularQueriesRequest): Observable<SuccessResponse>;
152
+ /** ─── Admin: zero-result analytics ──────────────────────────────────────── */
153
+ listZeroResults(request: ListZeroResultsRequest): Observable<ListZeroResultsResponse>;
154
+ clearZeroResults(request: ClearZeroResultsRequest): Observable<SuccessResponse>;
139
155
  }
140
156
  /**
141
157
  * SearchService — окремий сервіс під autocomplete та керування пошуком
@@ -156,6 +172,9 @@ export interface SearchServiceController {
156
172
  updatePopularQuery(request: UpdatePopularQueryRequest): Promise<PopularQueryResponse> | Observable<PopularQueryResponse> | PopularQueryResponse;
157
173
  deletePopularQuery(request: DeletePopularQueryRequest): Promise<DeleteResponse> | Observable<DeleteResponse> | DeleteResponse;
158
174
  reorderPopularQueries(request: ReorderPopularQueriesRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
175
+ /** ─── Admin: zero-result analytics ──────────────────────────────────────── */
176
+ listZeroResults(request: ListZeroResultsRequest): Promise<ListZeroResultsResponse> | Observable<ListZeroResultsResponse> | ListZeroResultsResponse;
177
+ clearZeroResults(request: ClearZeroResultsRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
159
178
  }
160
179
  export declare function SearchServiceControllerMethods(): (constructor: Function) => void;
161
180
  export declare const SEARCH_SERVICE_NAME = "SearchService";
@@ -31,6 +31,8 @@ function SearchServiceControllerMethods() {
31
31
  "updatePopularQuery",
32
32
  "deletePopularQuery",
33
33
  "reorderPopularQueries",
34
+ "listZeroResults",
35
+ "clearZeroResults",
34
36
  ];
35
37
  for (const method of grpcMethods) {
36
38
  const descriptor = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
@@ -38,7 +38,7 @@ message BannerListItemResponse {
38
38
  string id = 1;
39
39
  string slug = 2;
40
40
  map<string, string> name = 3;
41
- BannerPlacement placement = 4;
41
+ repeated BannerPlacement placements = 4;
42
42
  bool status = 5;
43
43
  int32 sort_order = 6;
44
44
  optional string category_id = 7;
@@ -51,7 +51,7 @@ message BannerDetailResponse {
51
51
  string id = 1;
52
52
  string slug = 2;
53
53
  map<string, string> name = 3;
54
- BannerPlacement placement = 4;
54
+ repeated BannerPlacement placements = 4;
55
55
  bool status = 5;
56
56
  int32 sort_order = 6;
57
57
  optional string category_id = 7;
@@ -102,7 +102,7 @@ message GetBannerRequest {
102
102
  message CreateBannerRequest {
103
103
  optional string slug = 1;
104
104
  map<string, string> name = 2;
105
- BannerPlacement placement = 3;
105
+ repeated BannerPlacement placements = 3;
106
106
  bool status = 4;
107
107
  int32 sort_order = 5;
108
108
  optional string category_id = 6;
@@ -118,7 +118,8 @@ message UpdateBannerRequest {
118
118
  string id = 1;
119
119
  optional string slug = 2;
120
120
  map<string, string> name = 3;
121
- optional BannerPlacement placement = 4;
121
+ // empty = не оновлювати; non-empty = заміна повного списку плейсментів.
122
+ repeated BannerPlacement placements = 4;
122
123
  optional bool status = 5;
123
124
  optional int32 sort_order = 6;
124
125
  optional string category_id = 7;
@@ -23,6 +23,10 @@ service SearchService {
23
23
  rpc UpdatePopularQuery (UpdatePopularQueryRequest) returns (PopularQueryResponse);
24
24
  rpc DeletePopularQuery (DeletePopularQueryRequest) returns (DeleteResponse);
25
25
  rpc ReorderPopularQueries (ReorderPopularQueriesRequest) returns (SuccessResponse);
26
+
27
+ // ─── Admin: zero-result analytics ────────────────────────────────────────
28
+ rpc ListZeroResults (ListZeroResultsRequest) returns (ListZeroResultsResponse);
29
+ rpc ClearZeroResults (ClearZeroResultsRequest) returns (SuccessResponse);
26
30
  }
27
31
 
28
32
  // ─────────────────────────── Suggest (public) ─────────────────────────────
@@ -159,3 +163,21 @@ message ReorderPopularQueryItem {
159
163
  string id = 1;
160
164
  int32 sort_order = 2;
161
165
  }
166
+
167
+ // ─────────────────────── Zero-result analytics (admin) ─────────────────────
168
+
169
+ message ListZeroResultsRequest {
170
+ optional int32 limit = 1; // default 100, max 500
171
+ }
172
+
173
+ message ZeroResultItem {
174
+ string query = 1;
175
+ int32 count = 2;
176
+ }
177
+
178
+ message ListZeroResultsResponse {
179
+ repeated ZeroResultItem items = 1;
180
+ }
181
+
182
+ message ClearZeroResultsRequest {
183
+ }
package/gen/banner.ts CHANGED
@@ -27,7 +27,7 @@ export interface BannerListItemResponse {
27
27
  id: string;
28
28
  slug: string;
29
29
  name: { [key: string]: string };
30
- placement: BannerPlacement;
30
+ placements: BannerPlacement[];
31
31
  status: boolean;
32
32
  sortOrder: number;
33
33
  categoryId?: string | undefined;
@@ -45,7 +45,7 @@ export interface BannerDetailResponse {
45
45
  id: string;
46
46
  slug: string;
47
47
  name: { [key: string]: string };
48
- placement: BannerPlacement;
48
+ placements: BannerPlacement[];
49
49
  status: boolean;
50
50
  sortOrder: number;
51
51
  categoryId?: string | undefined;
@@ -108,7 +108,7 @@ export interface GetBannerRequest {
108
108
  export interface CreateBannerRequest {
109
109
  slug?: string | undefined;
110
110
  name: { [key: string]: string };
111
- placement: BannerPlacement;
111
+ placements: BannerPlacement[];
112
112
  status: boolean;
113
113
  sortOrder: number;
114
114
  categoryId?: string | undefined;
@@ -129,7 +129,8 @@ export interface UpdateBannerRequest {
129
129
  id: string;
130
130
  slug?: string | undefined;
131
131
  name: { [key: string]: string };
132
- placement?: BannerPlacement | undefined;
132
+ /** empty = не оновлювати; non-empty = заміна повного списку плейсментів. */
133
+ placements: BannerPlacement[];
133
134
  status?: boolean | undefined;
134
135
  sortOrder?: number | undefined;
135
136
  categoryId?: string | undefined;
package/gen/search.ts CHANGED
@@ -146,6 +146,23 @@ export interface ReorderPopularQueryItem {
146
146
  sortOrder: number;
147
147
  }
148
148
 
149
+ export interface ListZeroResultsRequest {
150
+ /** default 100, max 500 */
151
+ limit?: number | undefined;
152
+ }
153
+
154
+ export interface ZeroResultItem {
155
+ query: string;
156
+ count: number;
157
+ }
158
+
159
+ export interface ListZeroResultsResponse {
160
+ items: ZeroResultItem[];
161
+ }
162
+
163
+ export interface ClearZeroResultsRequest {
164
+ }
165
+
149
166
  export const CATALOG_V1_PACKAGE_NAME = "catalog.v1";
150
167
 
151
168
  /**
@@ -181,6 +198,12 @@ export interface SearchServiceClient {
181
198
  deletePopularQuery(request: DeletePopularQueryRequest): Observable<DeleteResponse>;
182
199
 
183
200
  reorderPopularQueries(request: ReorderPopularQueriesRequest): Observable<SuccessResponse>;
201
+
202
+ /** ─── Admin: zero-result analytics ──────────────────────────────────────── */
203
+
204
+ listZeroResults(request: ListZeroResultsRequest): Observable<ListZeroResultsResponse>;
205
+
206
+ clearZeroResults(request: ClearZeroResultsRequest): Observable<SuccessResponse>;
184
207
  }
185
208
 
186
209
  /**
@@ -234,6 +257,16 @@ export interface SearchServiceController {
234
257
  reorderPopularQueries(
235
258
  request: ReorderPopularQueriesRequest,
236
259
  ): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
260
+
261
+ /** ─── Admin: zero-result analytics ──────────────────────────────────────── */
262
+
263
+ listZeroResults(
264
+ request: ListZeroResultsRequest,
265
+ ): Promise<ListZeroResultsResponse> | Observable<ListZeroResultsResponse> | ListZeroResultsResponse;
266
+
267
+ clearZeroResults(
268
+ request: ClearZeroResultsRequest,
269
+ ): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
237
270
  }
238
271
 
239
272
  export function SearchServiceControllerMethods() {
@@ -250,6 +283,8 @@ export function SearchServiceControllerMethods() {
250
283
  "updatePopularQuery",
251
284
  "deletePopularQuery",
252
285
  "reorderPopularQueries",
286
+ "listZeroResults",
287
+ "clearZeroResults",
253
288
  ];
254
289
  for (const method of grpcMethods) {
255
290
  const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mamindom/contracts",
3
3
  "description": "proto",
4
- "version": "1.0.137",
4
+ "version": "1.0.139",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",
7
7
  "exports": {
@@ -38,7 +38,7 @@ message BannerListItemResponse {
38
38
  string id = 1;
39
39
  string slug = 2;
40
40
  map<string, string> name = 3;
41
- BannerPlacement placement = 4;
41
+ repeated BannerPlacement placements = 4;
42
42
  bool status = 5;
43
43
  int32 sort_order = 6;
44
44
  optional string category_id = 7;
@@ -51,7 +51,7 @@ message BannerDetailResponse {
51
51
  string id = 1;
52
52
  string slug = 2;
53
53
  map<string, string> name = 3;
54
- BannerPlacement placement = 4;
54
+ repeated BannerPlacement placements = 4;
55
55
  bool status = 5;
56
56
  int32 sort_order = 6;
57
57
  optional string category_id = 7;
@@ -102,7 +102,7 @@ message GetBannerRequest {
102
102
  message CreateBannerRequest {
103
103
  optional string slug = 1;
104
104
  map<string, string> name = 2;
105
- BannerPlacement placement = 3;
105
+ repeated BannerPlacement placements = 3;
106
106
  bool status = 4;
107
107
  int32 sort_order = 5;
108
108
  optional string category_id = 6;
@@ -118,7 +118,8 @@ message UpdateBannerRequest {
118
118
  string id = 1;
119
119
  optional string slug = 2;
120
120
  map<string, string> name = 3;
121
- optional BannerPlacement placement = 4;
121
+ // empty = не оновлювати; non-empty = заміна повного списку плейсментів.
122
+ repeated BannerPlacement placements = 4;
122
123
  optional bool status = 5;
123
124
  optional int32 sort_order = 6;
124
125
  optional string category_id = 7;
@@ -23,6 +23,10 @@ service SearchService {
23
23
  rpc UpdatePopularQuery (UpdatePopularQueryRequest) returns (PopularQueryResponse);
24
24
  rpc DeletePopularQuery (DeletePopularQueryRequest) returns (DeleteResponse);
25
25
  rpc ReorderPopularQueries (ReorderPopularQueriesRequest) returns (SuccessResponse);
26
+
27
+ // ─── Admin: zero-result analytics ────────────────────────────────────────
28
+ rpc ListZeroResults (ListZeroResultsRequest) returns (ListZeroResultsResponse);
29
+ rpc ClearZeroResults (ClearZeroResultsRequest) returns (SuccessResponse);
26
30
  }
27
31
 
28
32
  // ─────────────────────────── Suggest (public) ─────────────────────────────
@@ -159,3 +163,21 @@ message ReorderPopularQueryItem {
159
163
  string id = 1;
160
164
  int32 sort_order = 2;
161
165
  }
166
+
167
+ // ─────────────────────── Zero-result analytics (admin) ─────────────────────
168
+
169
+ message ListZeroResultsRequest {
170
+ optional int32 limit = 1; // default 100, max 500
171
+ }
172
+
173
+ message ZeroResultItem {
174
+ string query = 1;
175
+ int32 count = 2;
176
+ }
177
+
178
+ message ListZeroResultsResponse {
179
+ repeated ZeroResultItem items = 1;
180
+ }
181
+
182
+ message ClearZeroResultsRequest {
183
+ }