@barupost/contracts 0.0.1
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.
- package/dist/events/account/email-changed.interface.d.ts +4 -0
- package/dist/events/account/email-changed.interface.js +2 -0
- package/dist/events/account/index.d.ts +2 -0
- package/dist/events/account/index.js +18 -0
- package/dist/events/account/phone-changed.interface.d.ts +4 -0
- package/dist/events/account/phone-changed.interface.js +2 -0
- package/dist/events/auth/index.d.ts +1 -0
- package/dist/events/auth/index.js +17 -0
- package/dist/events/auth/otp-requested.interface.d.ts +5 -0
- package/dist/events/auth/otp-requested.interface.js +2 -0
- package/dist/events/index.d.ts +2 -0
- package/dist/events/index.js +18 -0
- package/dist/generated/account.d.ts +70 -0
- package/dist/generated/account.js +45 -0
- package/dist/generated/auth.d.ts +83 -0
- package/dist/generated/auth.js +34 -0
- package/dist/generated/google/protobuf/empty.d.ts +13 -0
- package/dist/generated/google/protobuf/empty.js +11 -0
- package/dist/generated/google/protobuf/timestamp.d.ts +109 -0
- package/dist/generated/google/protobuf/timestamp.js +11 -0
- package/dist/generated/index.d.ts +6 -0
- package/dist/generated/index.js +22 -0
- package/dist/generated/media.d.ts +124 -0
- package/dist/generated/media.js +35 -0
- package/dist/generated/posts.d.ts +259 -0
- package/dist/generated/posts.js +57 -0
- package/dist/generated/session.d.ts +56 -0
- package/dist/generated/session.js +32 -0
- package/dist/generated/users.d.ts +87 -0
- package/dist/generated/users.js +40 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +19 -0
- package/dist/proto/index.d.ts +1 -0
- package/dist/proto/index.js +17 -0
- package/dist/proto/paths.d.ts +8 -0
- package/dist/proto/paths.js +12 -0
- package/gen/go/.gitkeep +0 -0
- package/gen/go/media/media.pb.go +1545 -0
- package/gen/go/media/media_grpc.pb.go +342 -0
- package/gen/ts/.gitkeep +0 -0
- package/gen/ts/account.ts +133 -0
- package/gen/ts/auth.ts +135 -0
- package/gen/ts/google/protobuf/empty.ts +23 -0
- package/gen/ts/google/protobuf/struct.ts +197 -0
- package/gen/ts/google/protobuf/timestamp.ts +119 -0
- package/gen/ts/media.ts +205 -0
- package/gen/ts/posts.ts +417 -0
- package/gen/ts/session.ts +110 -0
- package/gen/ts/users.ts +140 -0
- package/package.json +28 -0
- package/proto/account.proto +75 -0
- package/proto/auth.proto +91 -0
- package/proto/media.proto +120 -0
- package/proto/posts.proto +270 -0
- package/proto/session.proto +61 -0
- package/proto/users.proto +105 -0
package/gen/ts/posts.ts
ADDED
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
2
|
+
// versions:
|
|
3
|
+
// protoc-gen-ts_proto v2.11.2
|
|
4
|
+
// protoc v6.33.2
|
|
5
|
+
// source: posts.proto
|
|
6
|
+
|
|
7
|
+
/* eslint-disable */
|
|
8
|
+
import { GrpcMethod, GrpcStreamMethod } from "@nestjs/microservices";
|
|
9
|
+
import { Observable } from "rxjs";
|
|
10
|
+
import { Timestamp } from "./google/protobuf/timestamp";
|
|
11
|
+
|
|
12
|
+
export const protobufPackage = "posts.v1";
|
|
13
|
+
|
|
14
|
+
export enum PostStatus {
|
|
15
|
+
POST_STATUS_UNSPECIFIED = 0,
|
|
16
|
+
DRAFT = 1,
|
|
17
|
+
PUBLISHED = 2,
|
|
18
|
+
DELETED = 3,
|
|
19
|
+
UNRECOGNIZED = -1,
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export enum MediaType {
|
|
23
|
+
MEDIA_TYPE_UNSPECIFIED = 0,
|
|
24
|
+
PHOTO = 1,
|
|
25
|
+
VIDEO = 2,
|
|
26
|
+
UNRECOGNIZED = -1,
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** === Инициализация поста === */
|
|
30
|
+
export interface CreatePostInitRequest {
|
|
31
|
+
authorId: string;
|
|
32
|
+
caption?:
|
|
33
|
+
| string
|
|
34
|
+
| undefined;
|
|
35
|
+
/** Метаданные файлов (до 10 элементов) */
|
|
36
|
+
files: FileInfo[];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface FileInfo {
|
|
40
|
+
name: string;
|
|
41
|
+
/** Размер в байтах */
|
|
42
|
+
size: number;
|
|
43
|
+
/** MIME type (image/jpeg, video/mp4, etc.) */
|
|
44
|
+
type: string;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface CreatePostInitResponse {
|
|
48
|
+
postId: string;
|
|
49
|
+
status: PostStatus;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** === Получение presigned Urls для загрузки медиа === */
|
|
53
|
+
export interface GetPostUploadUrlsRequest {
|
|
54
|
+
postId: string;
|
|
55
|
+
/** Для проверки прав */
|
|
56
|
+
authorId: string;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface GetPostUploadUrlsResponse {
|
|
60
|
+
postId: string;
|
|
61
|
+
uploadInfo: MediaUploadInfo[];
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface MediaUploadInfo {
|
|
65
|
+
mediaId: string;
|
|
66
|
+
type: MediaType;
|
|
67
|
+
order: number;
|
|
68
|
+
/** Для простого PUT загрузки */
|
|
69
|
+
presignedUrl?:
|
|
70
|
+
| string
|
|
71
|
+
| undefined;
|
|
72
|
+
/** "PUT" */
|
|
73
|
+
method?: string | undefined;
|
|
74
|
+
sizeLimit?: number | undefined;
|
|
75
|
+
contentType?:
|
|
76
|
+
| string
|
|
77
|
+
| undefined;
|
|
78
|
+
/** Для multipart загрузки */
|
|
79
|
+
uploadId?:
|
|
80
|
+
| string
|
|
81
|
+
| undefined;
|
|
82
|
+
/** S3 key */
|
|
83
|
+
key?: string | undefined;
|
|
84
|
+
partUrls: PresignedPartUrl[];
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export interface PresignedPartUrl {
|
|
88
|
+
partNumber: number;
|
|
89
|
+
url: string;
|
|
90
|
+
/** "PUT" */
|
|
91
|
+
method: string;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/** === Финализация поста === */
|
|
95
|
+
export interface FinalizePostRequest {
|
|
96
|
+
postId: string;
|
|
97
|
+
/** Для проверки прав */
|
|
98
|
+
authorId: string;
|
|
99
|
+
/** Информация о загруженных файлах */
|
|
100
|
+
media: MediaFinalizeInfo[];
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export interface MediaFinalizeInfo {
|
|
104
|
+
mediaId: string;
|
|
105
|
+
/** S3 key после загрузки */
|
|
106
|
+
mediaKey: string;
|
|
107
|
+
/** Для multipart upload */
|
|
108
|
+
uploadId?:
|
|
109
|
+
| string
|
|
110
|
+
| undefined;
|
|
111
|
+
/** Для multipart upload */
|
|
112
|
+
parts: CompletedPart[];
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export interface CompletedPart {
|
|
116
|
+
partNumber: number;
|
|
117
|
+
etag: string;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export interface FinalizePostResponse {
|
|
121
|
+
post: Post | undefined;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/** === Получение поста === */
|
|
125
|
+
export interface GetPostRequest {
|
|
126
|
+
postId: string;
|
|
127
|
+
/** Для проверки лайка текущего пользователя */
|
|
128
|
+
userId?: string | undefined;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export interface GetPostResponse {
|
|
132
|
+
post: Post | undefined;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/** === Обновление поста === */
|
|
136
|
+
export interface UpdatePostRequest {
|
|
137
|
+
postId: string;
|
|
138
|
+
/** Для проверки прав */
|
|
139
|
+
authorId: string;
|
|
140
|
+
caption?: string | undefined;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export interface UpdatePostResponse {
|
|
144
|
+
post: Post | undefined;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/** === Удаление поста === */
|
|
148
|
+
export interface DeletePostRequest {
|
|
149
|
+
postId: string;
|
|
150
|
+
/** Для проверки прав */
|
|
151
|
+
authorId: string;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export interface DeletePostResponse {
|
|
155
|
+
ok: boolean;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/** === Лента постов === */
|
|
159
|
+
export interface GetFeedRequest {
|
|
160
|
+
/** Для фильтрации и проверки лайков */
|
|
161
|
+
userId: string;
|
|
162
|
+
page: number;
|
|
163
|
+
/** Максимум 50 */
|
|
164
|
+
limit: number;
|
|
165
|
+
/** Для пагинации */
|
|
166
|
+
cursor?: string | undefined;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
export interface GetFeedResponse {
|
|
170
|
+
posts: Post[];
|
|
171
|
+
nextCursor?: string | undefined;
|
|
172
|
+
hasMore: boolean;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/** === Посты пользователя === */
|
|
176
|
+
export interface GetUserPostsRequest {
|
|
177
|
+
/** ID пользователя, чьи посты запрашиваем */
|
|
178
|
+
userId: string;
|
|
179
|
+
/** Для проверки лайков */
|
|
180
|
+
currentUserId: string;
|
|
181
|
+
page: number;
|
|
182
|
+
limit: number;
|
|
183
|
+
cursor?: string | undefined;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
export interface GetUserPostsResponse {
|
|
187
|
+
posts: Post[];
|
|
188
|
+
nextCursor?: string | undefined;
|
|
189
|
+
hasMore: boolean;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/** === Лайки === */
|
|
193
|
+
export interface LikePostRequest {
|
|
194
|
+
postId: string;
|
|
195
|
+
userId: string;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
export interface LikePostResponse {
|
|
199
|
+
ok: boolean;
|
|
200
|
+
likesCount: number;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
export interface UnlikePostRequest {
|
|
204
|
+
postId: string;
|
|
205
|
+
userId: string;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
export interface UnlikePostResponse {
|
|
209
|
+
ok: boolean;
|
|
210
|
+
likesCount: number;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
export interface GetPostLikesRequest {
|
|
214
|
+
postId: string;
|
|
215
|
+
page: number;
|
|
216
|
+
limit: number;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
export interface GetPostLikesResponse {
|
|
220
|
+
/** Из users-service */
|
|
221
|
+
users: UserLite[];
|
|
222
|
+
totalCount: number;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
export interface CheckLikeRequest {
|
|
226
|
+
postId: string;
|
|
227
|
+
userId: string;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
export interface CheckLikeResponse {
|
|
231
|
+
isLiked: boolean;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/** === Просмотры === */
|
|
235
|
+
export interface TrackViewRequest {
|
|
236
|
+
postId: string;
|
|
237
|
+
/** Может быть пустым для анонимных просмотров */
|
|
238
|
+
userId: string;
|
|
239
|
+
ip?: string | undefined;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
export interface TrackViewResponse {
|
|
243
|
+
ok: boolean;
|
|
244
|
+
viewsCount: number;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
export interface GetPostViewsRequest {
|
|
248
|
+
postId: string;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
export interface GetPostViewsResponse {
|
|
252
|
+
viewsCount: number;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/** === Модель поста === */
|
|
256
|
+
export interface Post {
|
|
257
|
+
id: string;
|
|
258
|
+
authorId: string;
|
|
259
|
+
caption?: string | undefined;
|
|
260
|
+
media: PostMedia[];
|
|
261
|
+
status: PostStatus;
|
|
262
|
+
/** Статистика */
|
|
263
|
+
likesCount: number;
|
|
264
|
+
viewsCount: number;
|
|
265
|
+
/** Для текущего пользователя */
|
|
266
|
+
isLiked: boolean;
|
|
267
|
+
createdAt: Timestamp | undefined;
|
|
268
|
+
updatedAt: Timestamp | undefined;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
export interface PostMedia {
|
|
272
|
+
id: string;
|
|
273
|
+
/** Ключ из S3 */
|
|
274
|
+
mediaKey: string;
|
|
275
|
+
/** PHOTO или VIDEO */
|
|
276
|
+
type: MediaType;
|
|
277
|
+
/** Порядок отображения */
|
|
278
|
+
order: number;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
export interface UserLite {
|
|
282
|
+
id: string;
|
|
283
|
+
name?: string | undefined;
|
|
284
|
+
avatar?: string | undefined;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
export const POSTS_V1_PACKAGE_NAME = "posts.v1";
|
|
288
|
+
|
|
289
|
+
export interface PostsServiceClient {
|
|
290
|
+
/** Инициализация и финализация поста */
|
|
291
|
+
|
|
292
|
+
createPostInit(request: CreatePostInitRequest): Observable<CreatePostInitResponse>;
|
|
293
|
+
|
|
294
|
+
getPostUploadUrls(request: GetPostUploadUrlsRequest): Observable<GetPostUploadUrlsResponse>;
|
|
295
|
+
|
|
296
|
+
finalizePost(request: FinalizePostRequest): Observable<FinalizePostResponse>;
|
|
297
|
+
|
|
298
|
+
/** CRUD постов */
|
|
299
|
+
|
|
300
|
+
getPost(request: GetPostRequest): Observable<GetPostResponse>;
|
|
301
|
+
|
|
302
|
+
updatePost(request: UpdatePostRequest): Observable<UpdatePostResponse>;
|
|
303
|
+
|
|
304
|
+
deletePost(request: DeletePostRequest): Observable<DeletePostResponse>;
|
|
305
|
+
|
|
306
|
+
/** Лента постов */
|
|
307
|
+
|
|
308
|
+
getFeed(request: GetFeedRequest): Observable<GetFeedResponse>;
|
|
309
|
+
|
|
310
|
+
getUserPosts(request: GetUserPostsRequest): Observable<GetUserPostsResponse>;
|
|
311
|
+
|
|
312
|
+
/** Лайки */
|
|
313
|
+
|
|
314
|
+
likePost(request: LikePostRequest): Observable<LikePostResponse>;
|
|
315
|
+
|
|
316
|
+
unlikePost(request: UnlikePostRequest): Observable<UnlikePostResponse>;
|
|
317
|
+
|
|
318
|
+
getPostLikes(request: GetPostLikesRequest): Observable<GetPostLikesResponse>;
|
|
319
|
+
|
|
320
|
+
checkLike(request: CheckLikeRequest): Observable<CheckLikeResponse>;
|
|
321
|
+
|
|
322
|
+
/** Просмотры */
|
|
323
|
+
|
|
324
|
+
trackView(request: TrackViewRequest): Observable<TrackViewResponse>;
|
|
325
|
+
|
|
326
|
+
getPostViews(request: GetPostViewsRequest): Observable<GetPostViewsResponse>;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
export interface PostsServiceController {
|
|
330
|
+
/** Инициализация и финализация поста */
|
|
331
|
+
|
|
332
|
+
createPostInit(
|
|
333
|
+
request: CreatePostInitRequest,
|
|
334
|
+
): Promise<CreatePostInitResponse> | Observable<CreatePostInitResponse> | CreatePostInitResponse;
|
|
335
|
+
|
|
336
|
+
getPostUploadUrls(
|
|
337
|
+
request: GetPostUploadUrlsRequest,
|
|
338
|
+
): Promise<GetPostUploadUrlsResponse> | Observable<GetPostUploadUrlsResponse> | GetPostUploadUrlsResponse;
|
|
339
|
+
|
|
340
|
+
finalizePost(
|
|
341
|
+
request: FinalizePostRequest,
|
|
342
|
+
): Promise<FinalizePostResponse> | Observable<FinalizePostResponse> | FinalizePostResponse;
|
|
343
|
+
|
|
344
|
+
/** CRUD постов */
|
|
345
|
+
|
|
346
|
+
getPost(request: GetPostRequest): Promise<GetPostResponse> | Observable<GetPostResponse> | GetPostResponse;
|
|
347
|
+
|
|
348
|
+
updatePost(
|
|
349
|
+
request: UpdatePostRequest,
|
|
350
|
+
): Promise<UpdatePostResponse> | Observable<UpdatePostResponse> | UpdatePostResponse;
|
|
351
|
+
|
|
352
|
+
deletePost(
|
|
353
|
+
request: DeletePostRequest,
|
|
354
|
+
): Promise<DeletePostResponse> | Observable<DeletePostResponse> | DeletePostResponse;
|
|
355
|
+
|
|
356
|
+
/** Лента постов */
|
|
357
|
+
|
|
358
|
+
getFeed(request: GetFeedRequest): Promise<GetFeedResponse> | Observable<GetFeedResponse> | GetFeedResponse;
|
|
359
|
+
|
|
360
|
+
getUserPosts(
|
|
361
|
+
request: GetUserPostsRequest,
|
|
362
|
+
): Promise<GetUserPostsResponse> | Observable<GetUserPostsResponse> | GetUserPostsResponse;
|
|
363
|
+
|
|
364
|
+
/** Лайки */
|
|
365
|
+
|
|
366
|
+
likePost(request: LikePostRequest): Promise<LikePostResponse> | Observable<LikePostResponse> | LikePostResponse;
|
|
367
|
+
|
|
368
|
+
unlikePost(
|
|
369
|
+
request: UnlikePostRequest,
|
|
370
|
+
): Promise<UnlikePostResponse> | Observable<UnlikePostResponse> | UnlikePostResponse;
|
|
371
|
+
|
|
372
|
+
getPostLikes(
|
|
373
|
+
request: GetPostLikesRequest,
|
|
374
|
+
): Promise<GetPostLikesResponse> | Observable<GetPostLikesResponse> | GetPostLikesResponse;
|
|
375
|
+
|
|
376
|
+
checkLike(request: CheckLikeRequest): Promise<CheckLikeResponse> | Observable<CheckLikeResponse> | CheckLikeResponse;
|
|
377
|
+
|
|
378
|
+
/** Просмотры */
|
|
379
|
+
|
|
380
|
+
trackView(request: TrackViewRequest): Promise<TrackViewResponse> | Observable<TrackViewResponse> | TrackViewResponse;
|
|
381
|
+
|
|
382
|
+
getPostViews(
|
|
383
|
+
request: GetPostViewsRequest,
|
|
384
|
+
): Promise<GetPostViewsResponse> | Observable<GetPostViewsResponse> | GetPostViewsResponse;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
export function PostsServiceControllerMethods() {
|
|
388
|
+
return function (constructor: Function) {
|
|
389
|
+
const grpcMethods: string[] = [
|
|
390
|
+
"createPostInit",
|
|
391
|
+
"getPostUploadUrls",
|
|
392
|
+
"finalizePost",
|
|
393
|
+
"getPost",
|
|
394
|
+
"updatePost",
|
|
395
|
+
"deletePost",
|
|
396
|
+
"getFeed",
|
|
397
|
+
"getUserPosts",
|
|
398
|
+
"likePost",
|
|
399
|
+
"unlikePost",
|
|
400
|
+
"getPostLikes",
|
|
401
|
+
"checkLike",
|
|
402
|
+
"trackView",
|
|
403
|
+
"getPostViews",
|
|
404
|
+
];
|
|
405
|
+
for (const method of grpcMethods) {
|
|
406
|
+
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
|
|
407
|
+
GrpcMethod("PostsService", method)(constructor.prototype[method], method, descriptor);
|
|
408
|
+
}
|
|
409
|
+
const grpcStreamMethods: string[] = [];
|
|
410
|
+
for (const method of grpcStreamMethods) {
|
|
411
|
+
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
|
|
412
|
+
GrpcStreamMethod("PostsService", method)(constructor.prototype[method], method, descriptor);
|
|
413
|
+
}
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
export const POSTS_SERVICE_NAME = "PostsService";
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
2
|
+
// versions:
|
|
3
|
+
// protoc-gen-ts_proto v2.11.2
|
|
4
|
+
// protoc v6.33.2
|
|
5
|
+
// source: session.proto
|
|
6
|
+
|
|
7
|
+
/* eslint-disable */
|
|
8
|
+
import { GrpcMethod, GrpcStreamMethod } from "@nestjs/microservices";
|
|
9
|
+
import { Observable } from "rxjs";
|
|
10
|
+
import { Timestamp } from "./google/protobuf/timestamp";
|
|
11
|
+
|
|
12
|
+
export const protobufPackage = "session.v1";
|
|
13
|
+
|
|
14
|
+
export interface ListSessionsRequest {
|
|
15
|
+
userId: string;
|
|
16
|
+
sessionToken: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface ListSessionsResponse {
|
|
20
|
+
sessions: Session[];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface GetSessionRequest {
|
|
24
|
+
id?: string | undefined;
|
|
25
|
+
userId: string;
|
|
26
|
+
sessionToken?: string | undefined;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface GetSessionResponse {
|
|
30
|
+
session: Session | undefined;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface RevokeSessionRequest {
|
|
34
|
+
id: string;
|
|
35
|
+
userId: string;
|
|
36
|
+
sessionToken?: string | undefined;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface RevokeSessionResponse {
|
|
40
|
+
ok: boolean;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export interface RevokeAllOtherSessionsRequest {
|
|
44
|
+
userId: string;
|
|
45
|
+
sessionToken?: string | undefined;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface RevokeAllOtherSessionsResponse {
|
|
49
|
+
ok: boolean;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export interface Session {
|
|
53
|
+
id: string;
|
|
54
|
+
createdAt: Timestamp | undefined;
|
|
55
|
+
country: string;
|
|
56
|
+
city: string;
|
|
57
|
+
browser: string;
|
|
58
|
+
os: string;
|
|
59
|
+
ip: string;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export const SESSION_V1_PACKAGE_NAME = "session.v1";
|
|
63
|
+
|
|
64
|
+
export interface SessionServiceClient {
|
|
65
|
+
listSessions(request: ListSessionsRequest): Observable<ListSessionsResponse>;
|
|
66
|
+
|
|
67
|
+
revokeSession(request: RevokeSessionRequest): Observable<RevokeSessionResponse>;
|
|
68
|
+
|
|
69
|
+
revokeAllOtherSessions(request: RevokeAllOtherSessionsRequest): Observable<RevokeAllOtherSessionsResponse>;
|
|
70
|
+
|
|
71
|
+
getSession(request: GetSessionRequest): Observable<GetSessionResponse>;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export interface SessionServiceController {
|
|
75
|
+
listSessions(
|
|
76
|
+
request: ListSessionsRequest,
|
|
77
|
+
): Promise<ListSessionsResponse> | Observable<ListSessionsResponse> | ListSessionsResponse;
|
|
78
|
+
|
|
79
|
+
revokeSession(
|
|
80
|
+
request: RevokeSessionRequest,
|
|
81
|
+
): Promise<RevokeSessionResponse> | Observable<RevokeSessionResponse> | RevokeSessionResponse;
|
|
82
|
+
|
|
83
|
+
revokeAllOtherSessions(
|
|
84
|
+
request: RevokeAllOtherSessionsRequest,
|
|
85
|
+
):
|
|
86
|
+
| Promise<RevokeAllOtherSessionsResponse>
|
|
87
|
+
| Observable<RevokeAllOtherSessionsResponse>
|
|
88
|
+
| RevokeAllOtherSessionsResponse;
|
|
89
|
+
|
|
90
|
+
getSession(
|
|
91
|
+
request: GetSessionRequest,
|
|
92
|
+
): Promise<GetSessionResponse> | Observable<GetSessionResponse> | GetSessionResponse;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export function SessionServiceControllerMethods() {
|
|
96
|
+
return function (constructor: Function) {
|
|
97
|
+
const grpcMethods: string[] = ["listSessions", "revokeSession", "revokeAllOtherSessions", "getSession"];
|
|
98
|
+
for (const method of grpcMethods) {
|
|
99
|
+
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
|
|
100
|
+
GrpcMethod("SessionService", method)(constructor.prototype[method], method, descriptor);
|
|
101
|
+
}
|
|
102
|
+
const grpcStreamMethods: string[] = [];
|
|
103
|
+
for (const method of grpcStreamMethods) {
|
|
104
|
+
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
|
|
105
|
+
GrpcStreamMethod("SessionService", method)(constructor.prototype[method], method, descriptor);
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export const SESSION_SERVICE_NAME = "SessionService";
|
package/gen/ts/users.ts
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
|
2
|
+
// versions:
|
|
3
|
+
// protoc-gen-ts_proto v2.11.2
|
|
4
|
+
// protoc v6.33.2
|
|
5
|
+
// source: users.proto
|
|
6
|
+
|
|
7
|
+
/* eslint-disable */
|
|
8
|
+
import { GrpcMethod, GrpcStreamMethod } from "@nestjs/microservices";
|
|
9
|
+
import { Observable } from "rxjs";
|
|
10
|
+
import { Timestamp } from "./google/protobuf/timestamp";
|
|
11
|
+
|
|
12
|
+
export const protobufPackage = "users.v1";
|
|
13
|
+
|
|
14
|
+
export enum Gender {
|
|
15
|
+
UNSPECIFIED = 0,
|
|
16
|
+
MALE = 1,
|
|
17
|
+
FEMALE = 2,
|
|
18
|
+
OTHER = 3,
|
|
19
|
+
UNRECOGNIZED = -1,
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface GetMeRequest {
|
|
23
|
+
id: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface GetMeResponse {
|
|
27
|
+
user: User | undefined;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface CreateUserRequest {
|
|
31
|
+
id: string;
|
|
32
|
+
name?: string | undefined;
|
|
33
|
+
avatar?: string | undefined;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface CreateUserResponse {
|
|
37
|
+
ok: boolean;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface PatchUserRequest {
|
|
41
|
+
userId: string;
|
|
42
|
+
/** Базовые поля */
|
|
43
|
+
name?: string | undefined;
|
|
44
|
+
avatar?:
|
|
45
|
+
| string
|
|
46
|
+
| undefined;
|
|
47
|
+
/** Новые поля профиля */
|
|
48
|
+
bio?: string | undefined;
|
|
49
|
+
birthDate?: Timestamp | undefined;
|
|
50
|
+
gender?:
|
|
51
|
+
| Gender
|
|
52
|
+
| undefined;
|
|
53
|
+
/** Контакты (дополнительные) */
|
|
54
|
+
website?: string | undefined;
|
|
55
|
+
vkUrl?: string | undefined;
|
|
56
|
+
telegramUsername?: string | undefined;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface PatchUserResponse {
|
|
60
|
+
ok: boolean;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface GetUsersByIdsLiteRequest {
|
|
64
|
+
ids: string[];
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export interface GetUsersByIdsLiteResponse {
|
|
68
|
+
users: UserLite[];
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface UserLite {
|
|
72
|
+
id: string;
|
|
73
|
+
name?: string | undefined;
|
|
74
|
+
avatar?: string | undefined;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export interface User {
|
|
78
|
+
id: string;
|
|
79
|
+
name?: string | undefined;
|
|
80
|
+
phone?: string | undefined;
|
|
81
|
+
email?: string | undefined;
|
|
82
|
+
avatar?: string | undefined;
|
|
83
|
+
bio?: string | undefined;
|
|
84
|
+
birthDate?: Timestamp | undefined;
|
|
85
|
+
gender?: Gender | undefined;
|
|
86
|
+
website?: string | undefined;
|
|
87
|
+
vkUrl?: string | undefined;
|
|
88
|
+
telegramUsername?: string | undefined;
|
|
89
|
+
isPremium?: boolean | undefined;
|
|
90
|
+
isBanned?: boolean | undefined;
|
|
91
|
+
banReason?: string | undefined;
|
|
92
|
+
bannedUntil?: Timestamp | undefined;
|
|
93
|
+
lastActiveAt?: Timestamp | undefined;
|
|
94
|
+
registrationSource?: string | undefined;
|
|
95
|
+
createdAt: Timestamp | undefined;
|
|
96
|
+
updatedAt: Timestamp | undefined;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export const USERS_V1_PACKAGE_NAME = "users.v1";
|
|
100
|
+
|
|
101
|
+
export interface UsersServiceClient {
|
|
102
|
+
getMe(request: GetMeRequest): Observable<GetMeResponse>;
|
|
103
|
+
|
|
104
|
+
createUser(request: CreateUserRequest): Observable<CreateUserResponse>;
|
|
105
|
+
|
|
106
|
+
patchUser(request: PatchUserRequest): Observable<PatchUserResponse>;
|
|
107
|
+
|
|
108
|
+
getUsersByIdsLite(request: GetUsersByIdsLiteRequest): Observable<GetUsersByIdsLiteResponse>;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export interface UsersServiceController {
|
|
112
|
+
getMe(request: GetMeRequest): Promise<GetMeResponse> | Observable<GetMeResponse> | GetMeResponse;
|
|
113
|
+
|
|
114
|
+
createUser(
|
|
115
|
+
request: CreateUserRequest,
|
|
116
|
+
): Promise<CreateUserResponse> | Observable<CreateUserResponse> | CreateUserResponse;
|
|
117
|
+
|
|
118
|
+
patchUser(request: PatchUserRequest): Promise<PatchUserResponse> | Observable<PatchUserResponse> | PatchUserResponse;
|
|
119
|
+
|
|
120
|
+
getUsersByIdsLite(
|
|
121
|
+
request: GetUsersByIdsLiteRequest,
|
|
122
|
+
): Promise<GetUsersByIdsLiteResponse> | Observable<GetUsersByIdsLiteResponse> | GetUsersByIdsLiteResponse;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export function UsersServiceControllerMethods() {
|
|
126
|
+
return function (constructor: Function) {
|
|
127
|
+
const grpcMethods: string[] = ["getMe", "createUser", "patchUser", "getUsersByIdsLite"];
|
|
128
|
+
for (const method of grpcMethods) {
|
|
129
|
+
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
|
|
130
|
+
GrpcMethod("UsersService", method)(constructor.prototype[method], method, descriptor);
|
|
131
|
+
}
|
|
132
|
+
const grpcStreamMethods: string[] = [];
|
|
133
|
+
for (const method of grpcStreamMethods) {
|
|
134
|
+
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
|
|
135
|
+
GrpcStreamMethod("UsersService", method)(constructor.prototype[method], method, descriptor);
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export const USERS_SERVICE_NAME = "UsersService";
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@barupost/contracts",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Protobuf definitions and generated TypeScript types",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "tsc -p tsconfig.build.json",
|
|
9
|
+
"generate": "protoc -I ./proto ./proto/*.proto --ts_proto_out=./gen/ts --ts_proto_opt=nestJs=true,esModuleInterop=true,package=omit"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist",
|
|
13
|
+
"proto",
|
|
14
|
+
"gen"
|
|
15
|
+
],
|
|
16
|
+
"publishConfig": {
|
|
17
|
+
"access": "public"
|
|
18
|
+
},
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"@nestjs/microservices": "^11.1.9",
|
|
21
|
+
"rxjs": "^7.8.2",
|
|
22
|
+
"ts-proto": "^2.8.3"
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@types/node": "^25.0.3",
|
|
26
|
+
"typescript": "^5.9.3"
|
|
27
|
+
}
|
|
28
|
+
}
|