@mediaryorg/contracts 1.0.8 → 2.0.0

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.
@@ -0,0 +1,223 @@
1
+ // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
+ // versions:
3
+ // protoc-gen-ts_proto v2.11.6
4
+ // protoc v3.21.12
5
+ // source: media_request/v1/media_request.proto
6
+
7
+ /* eslint-disable */
8
+ import { GrpcMethod, GrpcStreamMethod } from "@nestjs/microservices";
9
+ import { Observable } from "rxjs";
10
+ import { MediaData, MediaSource } from "../../media/v1/media";
11
+
12
+ export const protobufPackage = "media_request.v1";
13
+
14
+ /** Mirrors prisma enum ModerationType. */
15
+ export enum ModerationStatus {
16
+ MODERATION_STATUS_UNSPECIFIED = 0,
17
+ MODERATION_STATUS_PENDING = 1,
18
+ MODERATION_STATUS_APPROVED = 2,
19
+ MODERATION_STATUS_REJECTED = 3,
20
+ UNRECOGNIZED = -1,
21
+ }
22
+
23
+ /**
24
+ * Lightweight reference to the user who acted on the request.
25
+ * Populated by the gateway / user-service when needed; kept self-contained.
26
+ */
27
+ export interface MediaRequestUserRef {
28
+ id: string;
29
+ displayName: string;
30
+ picture: string;
31
+ }
32
+
33
+ export interface MediaRequest {
34
+ id: string;
35
+ status: ModerationStatus;
36
+ mediaData: MediaData | undefined;
37
+ searchableTitle: string;
38
+ externalIdsJson: string;
39
+ comment: string;
40
+ moderatorNote: string;
41
+ duplicateCheckStatus: string;
42
+ possibleDuplicatesJson: string;
43
+ requestedById: string;
44
+ requestedBy: MediaRequestUserRef | undefined;
45
+ moderatedById: string;
46
+ moderatedBy: MediaRequestUserRef | undefined;
47
+ approvedMediaId: string;
48
+ collectionId: string;
49
+ createdAt: string;
50
+ updatedAt: string;
51
+ }
52
+
53
+ export interface CreateMediaRequestRequest {
54
+ userId: string;
55
+ /** Currently only CUSTOM is accepted (TMDB content goes through search flow). */
56
+ source?: MediaSource | undefined;
57
+ mediaData: MediaData | undefined;
58
+ collectionId: string;
59
+ comment?: string | undefined;
60
+ }
61
+
62
+ export interface CreateMediaRequestResponse {
63
+ request: MediaRequest | undefined;
64
+ }
65
+
66
+ export interface GetUserRequestsRequest {
67
+ userId: string;
68
+ status?: ModerationStatus | undefined;
69
+ }
70
+
71
+ export interface GetUserRequestsResponse {
72
+ items: MediaRequest[];
73
+ }
74
+
75
+ export interface GetMediaRequestByIdRequest {
76
+ requestId: string;
77
+ }
78
+
79
+ export interface GetMediaRequestByIdResponse {
80
+ request: MediaRequest | undefined;
81
+ }
82
+
83
+ export interface ListMediaRequestsRequest {
84
+ status?: ModerationStatus | undefined;
85
+ source?: MediaSource | undefined;
86
+ collectionId?: string | undefined;
87
+ search?: string | undefined;
88
+ requestedById?: string | undefined;
89
+ moderatedById?: string | undefined;
90
+ year?: number | undefined;
91
+ page: number;
92
+ limit: number;
93
+ sortBy: string;
94
+ sortOrder: string;
95
+ }
96
+
97
+ export interface MediaRequestPaginationMeta {
98
+ page: number;
99
+ limit: number;
100
+ total: number;
101
+ totalPages: number;
102
+ hasNextPage: boolean;
103
+ hasPrevPage: boolean;
104
+ }
105
+
106
+ export interface ListMediaRequestsResponse {
107
+ data: MediaRequest[];
108
+ meta: MediaRequestPaginationMeta | undefined;
109
+ }
110
+
111
+ export interface UpdateMediaRequestRequest {
112
+ requestId: string;
113
+ /** Only PENDING requests can be updated. */
114
+ mediaData?: MediaData | undefined;
115
+ }
116
+
117
+ export interface UpdateMediaRequestResponse {
118
+ request: MediaRequest | undefined;
119
+ }
120
+
121
+ export interface ModerateMediaRequestRequest {
122
+ requestId: string;
123
+ moderatorId: string;
124
+ /** APPROVED or REJECTED. */
125
+ status: ModerationStatus;
126
+ moderatorNote?: string | undefined;
127
+ }
128
+
129
+ export interface ModerateMediaRequestResponse {
130
+ request:
131
+ | MediaRequest
132
+ | undefined;
133
+ /** Populated when status == APPROVED. References media in media-service. */
134
+ approvedMediaId: string;
135
+ }
136
+
137
+ export interface DeleteMediaRequestRequest {
138
+ requestId: string;
139
+ }
140
+
141
+ export interface DeleteMediaRequestResponse {
142
+ }
143
+
144
+ export const MEDIA_REQUEST_V1_PACKAGE_NAME = "media_request.v1";
145
+
146
+ export interface MediaRequestServiceClient {
147
+ /** User-facing endpoints. */
148
+
149
+ createMediaRequest(request: CreateMediaRequestRequest): Observable<CreateMediaRequestResponse>;
150
+
151
+ getUserRequests(request: GetUserRequestsRequest): Observable<GetUserRequestsResponse>;
152
+
153
+ getMediaRequestById(request: GetMediaRequestByIdRequest): Observable<GetMediaRequestByIdResponse>;
154
+
155
+ /** Admin / moderator endpoints. */
156
+
157
+ listMediaRequests(request: ListMediaRequestsRequest): Observable<ListMediaRequestsResponse>;
158
+
159
+ updateMediaRequest(request: UpdateMediaRequestRequest): Observable<UpdateMediaRequestResponse>;
160
+
161
+ moderateMediaRequest(request: ModerateMediaRequestRequest): Observable<ModerateMediaRequestResponse>;
162
+
163
+ deleteMediaRequest(request: DeleteMediaRequestRequest): Observable<DeleteMediaRequestResponse>;
164
+ }
165
+
166
+ export interface MediaRequestServiceController {
167
+ /** User-facing endpoints. */
168
+
169
+ createMediaRequest(
170
+ request: CreateMediaRequestRequest,
171
+ ): Promise<CreateMediaRequestResponse> | Observable<CreateMediaRequestResponse> | CreateMediaRequestResponse;
172
+
173
+ getUserRequests(
174
+ request: GetUserRequestsRequest,
175
+ ): Promise<GetUserRequestsResponse> | Observable<GetUserRequestsResponse> | GetUserRequestsResponse;
176
+
177
+ getMediaRequestById(
178
+ request: GetMediaRequestByIdRequest,
179
+ ): Promise<GetMediaRequestByIdResponse> | Observable<GetMediaRequestByIdResponse> | GetMediaRequestByIdResponse;
180
+
181
+ /** Admin / moderator endpoints. */
182
+
183
+ listMediaRequests(
184
+ request: ListMediaRequestsRequest,
185
+ ): Promise<ListMediaRequestsResponse> | Observable<ListMediaRequestsResponse> | ListMediaRequestsResponse;
186
+
187
+ updateMediaRequest(
188
+ request: UpdateMediaRequestRequest,
189
+ ): Promise<UpdateMediaRequestResponse> | Observable<UpdateMediaRequestResponse> | UpdateMediaRequestResponse;
190
+
191
+ moderateMediaRequest(
192
+ request: ModerateMediaRequestRequest,
193
+ ): Promise<ModerateMediaRequestResponse> | Observable<ModerateMediaRequestResponse> | ModerateMediaRequestResponse;
194
+
195
+ deleteMediaRequest(
196
+ request: DeleteMediaRequestRequest,
197
+ ): Promise<DeleteMediaRequestResponse> | Observable<DeleteMediaRequestResponse> | DeleteMediaRequestResponse;
198
+ }
199
+
200
+ export function MediaRequestServiceControllerMethods() {
201
+ return function (constructor: Function) {
202
+ const grpcMethods: string[] = [
203
+ "createMediaRequest",
204
+ "getUserRequests",
205
+ "getMediaRequestById",
206
+ "listMediaRequests",
207
+ "updateMediaRequest",
208
+ "moderateMediaRequest",
209
+ "deleteMediaRequest",
210
+ ];
211
+ for (const method of grpcMethods) {
212
+ const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
213
+ GrpcMethod("MediaRequestService", method)(constructor.prototype[method], method, descriptor);
214
+ }
215
+ const grpcStreamMethods: string[] = [];
216
+ for (const method of grpcStreamMethods) {
217
+ const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
218
+ GrpcStreamMethod("MediaRequestService", method)(constructor.prototype[method], method, descriptor);
219
+ }
220
+ };
221
+ }
222
+
223
+ export const MEDIA_REQUEST_SERVICE_NAME = "MediaRequestService";
@@ -0,0 +1,73 @@
1
+ // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
+ // versions:
3
+ // protoc-gen-ts_proto v2.11.6
4
+ // protoc v3.21.12
5
+ // source: profile/v1/profile.proto
6
+
7
+ /* eslint-disable */
8
+ import { GrpcMethod, GrpcStreamMethod } from "@nestjs/microservices";
9
+ import { Observable } from "rxjs";
10
+
11
+ export const protobufPackage = "profile.v1";
12
+
13
+ export interface Profile {
14
+ id: string;
15
+ userId: string;
16
+ displayName: string;
17
+ picture: string;
18
+ createdAt: string;
19
+ updatedAt: string;
20
+ }
21
+
22
+ export interface GetProfileByUserIdRequest {
23
+ userId: string;
24
+ }
25
+
26
+ export interface GetProfileByUserIdResponse {
27
+ profile: Profile | undefined;
28
+ }
29
+
30
+ export interface UpdateProfileRequest {
31
+ userId: string;
32
+ displayName?: string | undefined;
33
+ picture?: string | undefined;
34
+ }
35
+
36
+ export interface UpdateProfileResponse {
37
+ profile: Profile | undefined;
38
+ }
39
+
40
+ export const PROFILE_V1_PACKAGE_NAME = "profile.v1";
41
+
42
+ export interface ProfileServiceClient {
43
+ getProfileByUserId(request: GetProfileByUserIdRequest): Observable<GetProfileByUserIdResponse>;
44
+
45
+ updateProfile(request: UpdateProfileRequest): Observable<UpdateProfileResponse>;
46
+ }
47
+
48
+ export interface ProfileServiceController {
49
+ getProfileByUserId(
50
+ request: GetProfileByUserIdRequest,
51
+ ): Promise<GetProfileByUserIdResponse> | Observable<GetProfileByUserIdResponse> | GetProfileByUserIdResponse;
52
+
53
+ updateProfile(
54
+ request: UpdateProfileRequest,
55
+ ): Promise<UpdateProfileResponse> | Observable<UpdateProfileResponse> | UpdateProfileResponse;
56
+ }
57
+
58
+ export function ProfileServiceControllerMethods() {
59
+ return function (constructor: Function) {
60
+ const grpcMethods: string[] = ["getProfileByUserId", "updateProfile"];
61
+ for (const method of grpcMethods) {
62
+ const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
63
+ GrpcMethod("ProfileService", method)(constructor.prototype[method], method, descriptor);
64
+ }
65
+ const grpcStreamMethods: string[] = [];
66
+ for (const method of grpcStreamMethods) {
67
+ const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
68
+ GrpcStreamMethod("ProfileService", method)(constructor.prototype[method], method, descriptor);
69
+ }
70
+ };
71
+ }
72
+
73
+ export const PROFILE_SERVICE_NAME = "ProfileService";
@@ -0,0 +1,126 @@
1
+ // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
+ // versions:
3
+ // protoc-gen-ts_proto v2.11.6
4
+ // protoc v3.21.12
5
+ // source: recommendation/v1/recommendation.proto
6
+
7
+ /* eslint-disable */
8
+ import { GrpcMethod, GrpcStreamMethod } from "@nestjs/microservices";
9
+ import { Observable } from "rxjs";
10
+ import { SearchMediaType } from "../../search/v1/search";
11
+
12
+ export const protobufPackage = "recommendation.v1";
13
+
14
+ export interface MediaRecommendationItem {
15
+ mediaType: SearchMediaType;
16
+ title: string;
17
+ year?: number | undefined;
18
+ genres: string[];
19
+ rating?:
20
+ | number
21
+ | undefined;
22
+ /** Absolute HTTPS poster URL (already passed through ImageService). */
23
+ posterUrl: string;
24
+ }
25
+
26
+ export interface RecommendationBlock {
27
+ visible: boolean;
28
+ items: MediaRecommendationItem[];
29
+ }
30
+
31
+ export interface GetHomeRecommendationsRequest {
32
+ /** Empty string => anonymous request (only trending + topRated are filled). */
33
+ userId: string;
34
+ }
35
+
36
+ export interface GetHomeRecommendationsResponse {
37
+ trending: RecommendationBlock | undefined;
38
+ topRated: RecommendationBlock | undefined;
39
+ recommendedForYou: RecommendationBlock | undefined;
40
+ fromYourLibrary: RecommendationBlock | undefined;
41
+ }
42
+
43
+ export interface RefreshGlobalBlocksRequest {
44
+ }
45
+
46
+ export interface RefreshGlobalBlocksResponse {
47
+ trendingCount: number;
48
+ topRatedCount: number;
49
+ }
50
+
51
+ export interface RefreshUserRecommendationsRequest {
52
+ userId: string;
53
+ }
54
+
55
+ export interface RefreshUserRecommendationsResponse {
56
+ itemsCount: number;
57
+ }
58
+
59
+ export const RECOMMENDATION_V1_PACKAGE_NAME = "recommendation.v1";
60
+
61
+ export interface RecommendationServiceClient {
62
+ /**
63
+ * Bundles all four blocks shown on the home screen (trending / topRated /
64
+ * recommendedForYou / fromYourLibrary). When `user_id` is empty only the
65
+ * global blocks are populated.
66
+ */
67
+
68
+ getHomeRecommendations(request: GetHomeRecommendationsRequest): Observable<GetHomeRecommendationsResponse>;
69
+
70
+ /** Force-refresh the global cached blocks (used by the cron job). */
71
+
72
+ refreshGlobalBlocks(request: RefreshGlobalBlocksRequest): Observable<RefreshGlobalBlocksResponse>;
73
+
74
+ /** Force-refresh a personal block for a given user. */
75
+
76
+ refreshUserRecommendations(
77
+ request: RefreshUserRecommendationsRequest,
78
+ ): Observable<RefreshUserRecommendationsResponse>;
79
+ }
80
+
81
+ export interface RecommendationServiceController {
82
+ /**
83
+ * Bundles all four blocks shown on the home screen (trending / topRated /
84
+ * recommendedForYou / fromYourLibrary). When `user_id` is empty only the
85
+ * global blocks are populated.
86
+ */
87
+
88
+ getHomeRecommendations(
89
+ request: GetHomeRecommendationsRequest,
90
+ ):
91
+ | Promise<GetHomeRecommendationsResponse>
92
+ | Observable<GetHomeRecommendationsResponse>
93
+ | GetHomeRecommendationsResponse;
94
+
95
+ /** Force-refresh the global cached blocks (used by the cron job). */
96
+
97
+ refreshGlobalBlocks(
98
+ request: RefreshGlobalBlocksRequest,
99
+ ): Promise<RefreshGlobalBlocksResponse> | Observable<RefreshGlobalBlocksResponse> | RefreshGlobalBlocksResponse;
100
+
101
+ /** Force-refresh a personal block for a given user. */
102
+
103
+ refreshUserRecommendations(
104
+ request: RefreshUserRecommendationsRequest,
105
+ ):
106
+ | Promise<RefreshUserRecommendationsResponse>
107
+ | Observable<RefreshUserRecommendationsResponse>
108
+ | RefreshUserRecommendationsResponse;
109
+ }
110
+
111
+ export function RecommendationServiceControllerMethods() {
112
+ return function (constructor: Function) {
113
+ const grpcMethods: string[] = ["getHomeRecommendations", "refreshGlobalBlocks", "refreshUserRecommendations"];
114
+ for (const method of grpcMethods) {
115
+ const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
116
+ GrpcMethod("RecommendationService", method)(constructor.prototype[method], method, descriptor);
117
+ }
118
+ const grpcStreamMethods: string[] = [];
119
+ for (const method of grpcStreamMethods) {
120
+ const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
121
+ GrpcStreamMethod("RecommendationService", method)(constructor.prototype[method], method, descriptor);
122
+ }
123
+ };
124
+ }
125
+
126
+ export const RECOMMENDATION_SERVICE_NAME = "RecommendationService";
@@ -0,0 +1,103 @@
1
+ // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
+ // versions:
3
+ // protoc-gen-ts_proto v2.11.6
4
+ // protoc v3.21.12
5
+ // source: search/v1/search.proto
6
+
7
+ /* eslint-disable */
8
+ import { GrpcMethod, GrpcStreamMethod } from "@nestjs/microservices";
9
+ import { Observable } from "rxjs";
10
+
11
+ export const protobufPackage = "search.v1";
12
+
13
+ /** Logical media types accepted by `mediaType` filter and returned in `type`. */
14
+ export enum SearchMediaType {
15
+ SEARCH_MEDIA_TYPE_UNSPECIFIED = 0,
16
+ SEARCH_MEDIA_TYPE_MOVIE = 1,
17
+ SEARCH_MEDIA_TYPE_SERIES = 2,
18
+ SEARCH_MEDIA_TYPE_BOOK = 3,
19
+ SEARCH_MEDIA_TYPE_ANIME = 4,
20
+ SEARCH_MEDIA_TYPE_MANGA = 5,
21
+ SEARCH_MEDIA_TYPE_MANHWA = 6,
22
+ SEARCH_MEDIA_TYPE_GAME = 7,
23
+ SEARCH_MEDIA_TYPE_KDRAMA = 8,
24
+ UNRECOGNIZED = -1,
25
+ }
26
+
27
+ /** Origin of the result. "local" means the row already lives in our database. */
28
+ export enum SearchSource {
29
+ SEARCH_SOURCE_UNSPECIFIED = 0,
30
+ SEARCH_SOURCE_TMDB = 1,
31
+ SEARCH_SOURCE_GOOGLE_BOOKS = 2,
32
+ SEARCH_SOURCE_OPEN_LIBRARY = 3,
33
+ SEARCH_SOURCE_ANILIST = 4,
34
+ SEARCH_SOURCE_MANGADEX = 5,
35
+ SEARCH_SOURCE_IGDB = 6,
36
+ SEARCH_SOURCE_RAWG = 7,
37
+ SEARCH_SOURCE_LOCAL = 8,
38
+ UNRECOGNIZED = -1,
39
+ }
40
+
41
+ export interface SearchResult {
42
+ /** External id (or local Media.id when source == LOCAL). */
43
+ id: string;
44
+ title: string;
45
+ subtitle: string;
46
+ description: string;
47
+ imageUrl: string;
48
+ /** Year as string because some sources return imprecise dates ("2020-.."). */
49
+ year: string;
50
+ rating?: number | undefined;
51
+ genres: string[];
52
+ type: SearchMediaType;
53
+ source: SearchSource;
54
+ externalId: string;
55
+ }
56
+
57
+ export interface SearchRequest {
58
+ query: string;
59
+ mediaType?: SearchMediaType | undefined;
60
+ }
61
+
62
+ export interface SearchResponse {
63
+ results: SearchResult[];
64
+ totalResults: number;
65
+ hasMore: boolean;
66
+ }
67
+
68
+ export const SEARCH_V1_PACKAGE_NAME = "search.v1";
69
+
70
+ export interface SearchServiceClient {
71
+ /**
72
+ * Cross-source search aggregator (TMDB, Google Books, AniList, MangaDex, IGDB,
73
+ * RAWG, Open Library + local db). Mirrors GET /search?query=&mediaType=.
74
+ */
75
+
76
+ search(request: SearchRequest): Observable<SearchResponse>;
77
+ }
78
+
79
+ export interface SearchServiceController {
80
+ /**
81
+ * Cross-source search aggregator (TMDB, Google Books, AniList, MangaDex, IGDB,
82
+ * RAWG, Open Library + local db). Mirrors GET /search?query=&mediaType=.
83
+ */
84
+
85
+ search(request: SearchRequest): Promise<SearchResponse> | Observable<SearchResponse> | SearchResponse;
86
+ }
87
+
88
+ export function SearchServiceControllerMethods() {
89
+ return function (constructor: Function) {
90
+ const grpcMethods: string[] = ["search"];
91
+ for (const method of grpcMethods) {
92
+ const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
93
+ GrpcMethod("SearchService", method)(constructor.prototype[method], method, descriptor);
94
+ }
95
+ const grpcStreamMethods: string[] = [];
96
+ for (const method of grpcStreamMethods) {
97
+ const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
98
+ GrpcStreamMethod("SearchService", method)(constructor.prototype[method], method, descriptor);
99
+ }
100
+ };
101
+ }
102
+
103
+ export const SEARCH_SERVICE_NAME = "SearchService";
@@ -16,12 +16,22 @@ export interface User {
16
16
  displayName: string;
17
17
  picture: string;
18
18
  role: string;
19
- authProvider: string;
20
19
  isVerified: boolean;
21
20
  createdAt: string;
22
21
  updatedAt: string;
23
22
  }
24
23
 
24
+ export interface CreateUserRequest {
25
+ email: string;
26
+ displayName: string;
27
+ picture: string;
28
+ isVerified: boolean;
29
+ }
30
+
31
+ export interface CreateUserResponse {
32
+ user: User | undefined;
33
+ }
34
+
25
35
  export interface GetUserByIdRequest {
26
36
  userId: string;
27
37
  }
@@ -30,21 +40,112 @@ export interface GetUserByIdResponse {
30
40
  user: User | undefined;
31
41
  }
32
42
 
43
+ export interface GetUserByEmailRequest {
44
+ email: string;
45
+ }
46
+
47
+ export interface GetUserByEmailResponse {
48
+ user: User | undefined;
49
+ }
50
+
51
+ export interface UpdateUserRequest {
52
+ userId: string;
53
+ email?: string | undefined;
54
+ displayName?: string | undefined;
55
+ picture?: string | undefined;
56
+ role?: string | undefined;
57
+ }
58
+
59
+ export interface UpdateUserResponse {
60
+ user: User | undefined;
61
+ }
62
+
63
+ export interface MarkUserVerifiedRequest {
64
+ userId: string;
65
+ }
66
+
67
+ export interface MarkUserVerifiedResponse {
68
+ user: User | undefined;
69
+ }
70
+
71
+ export interface DeleteUserRequest {
72
+ userId: string;
73
+ }
74
+
75
+ export interface DeleteUserResponse {
76
+ }
77
+
78
+ export interface UpsertUserFromOAuthRequest {
79
+ email: string;
80
+ displayName: string;
81
+ picture: string;
82
+ isVerified: boolean;
83
+ }
84
+
85
+ export interface UpsertUserFromOAuthResponse {
86
+ user: User | undefined;
87
+ created: boolean;
88
+ }
89
+
33
90
  export const USER_V1_PACKAGE_NAME = "user.v1";
34
91
 
35
92
  export interface UserServiceClient {
93
+ createUser(request: CreateUserRequest): Observable<CreateUserResponse>;
94
+
36
95
  getUserById(request: GetUserByIdRequest): Observable<GetUserByIdResponse>;
96
+
97
+ getUserByEmail(request: GetUserByEmailRequest): Observable<GetUserByEmailResponse>;
98
+
99
+ updateUser(request: UpdateUserRequest): Observable<UpdateUserResponse>;
100
+
101
+ markUserVerified(request: MarkUserVerifiedRequest): Observable<MarkUserVerifiedResponse>;
102
+
103
+ deleteUser(request: DeleteUserRequest): Observable<DeleteUserResponse>;
104
+
105
+ upsertUserFromOAuth(request: UpsertUserFromOAuthRequest): Observable<UpsertUserFromOAuthResponse>;
37
106
  }
38
107
 
39
108
  export interface UserServiceController {
109
+ createUser(
110
+ request: CreateUserRequest,
111
+ ): Promise<CreateUserResponse> | Observable<CreateUserResponse> | CreateUserResponse;
112
+
40
113
  getUserById(
41
114
  request: GetUserByIdRequest,
42
115
  ): Promise<GetUserByIdResponse> | Observable<GetUserByIdResponse> | GetUserByIdResponse;
116
+
117
+ getUserByEmail(
118
+ request: GetUserByEmailRequest,
119
+ ): Promise<GetUserByEmailResponse> | Observable<GetUserByEmailResponse> | GetUserByEmailResponse;
120
+
121
+ updateUser(
122
+ request: UpdateUserRequest,
123
+ ): Promise<UpdateUserResponse> | Observable<UpdateUserResponse> | UpdateUserResponse;
124
+
125
+ markUserVerified(
126
+ request: MarkUserVerifiedRequest,
127
+ ): Promise<MarkUserVerifiedResponse> | Observable<MarkUserVerifiedResponse> | MarkUserVerifiedResponse;
128
+
129
+ deleteUser(
130
+ request: DeleteUserRequest,
131
+ ): Promise<DeleteUserResponse> | Observable<DeleteUserResponse> | DeleteUserResponse;
132
+
133
+ upsertUserFromOAuth(
134
+ request: UpsertUserFromOAuthRequest,
135
+ ): Promise<UpsertUserFromOAuthResponse> | Observable<UpsertUserFromOAuthResponse> | UpsertUserFromOAuthResponse;
43
136
  }
44
137
 
45
138
  export function UserServiceControllerMethods() {
46
139
  return function (constructor: Function) {
47
- const grpcMethods: string[] = ["getUserById"];
140
+ const grpcMethods: string[] = [
141
+ "createUser",
142
+ "getUserById",
143
+ "getUserByEmail",
144
+ "updateUser",
145
+ "markUserVerified",
146
+ "deleteUser",
147
+ "upsertUserFromOAuth",
148
+ ];
48
149
  for (const method of grpcMethods) {
49
150
  const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
50
151
  GrpcMethod("UserService", method)(constructor.prototype[method], method, descriptor);
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@mediaryorg/contracts",
3
- "version": "1.0.8",
3
+ "version": "2.0.0",
4
4
  "description": "Protobuf definitions and generated TypeScript types",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "scripts": {
8
8
  "generate": "npm run generate:win",
9
- "generate:win": "protoc -I .\\proto .\\proto\\auth\\v1\\auth.proto .\\proto\\user\\v1\\user.proto --plugin=protoc-gen-ts_proto=.\\node_modules\\.bin\\protoc-gen-ts_proto.cmd --ts_proto_out=.\\generated --ts_proto_opt=nestJs=true,package=omit",
10
- "generate:ci": "protoc -I ./proto ./proto/auth/v1/auth.proto ./proto/user/v1/user.proto --plugin=protoc-gen-ts_proto=./node_modules/.bin/protoc-gen-ts_proto --ts_proto_out=./generated --ts_proto_opt=nestJs=true,package=omit",
9
+ "generate:win": "protoc -I .\\proto .\\proto\\auth\\v1\\auth.proto .\\proto\\user\\v1\\user.proto .\\proto\\profile\\v1\\profile.proto .\\proto\\media\\v1\\media.proto .\\proto\\collection\\v1\\collection.proto .\\proto\\library\\v1\\library.proto .\\proto\\favorite\\v1\\favorite.proto .\\proto\\media_request\\v1\\media_request.proto .\\proto\\image\\v1\\image.proto .\\proto\\search\\v1\\search.proto .\\proto\\recommendation\\v1\\recommendation.proto --plugin=protoc-gen-ts_proto=.\\node_modules\\.bin\\protoc-gen-ts_proto.cmd --ts_proto_out=.\\generated --ts_proto_opt=nestJs=true,package=omit",
10
+ "generate:ci": "protoc -I ./proto ./proto/auth/v1/auth.proto ./proto/user/v1/user.proto ./proto/profile/v1/profile.proto ./proto/media/v1/media.proto ./proto/collection/v1/collection.proto ./proto/library/v1/library.proto ./proto/favorite/v1/favorite.proto ./proto/media_request/v1/media_request.proto ./proto/image/v1/image.proto ./proto/search/v1/search.proto ./proto/recommendation/v1/recommendation.proto --plugin=protoc-gen-ts_proto=./node_modules/.bin/protoc-gen-ts_proto --ts_proto_out=./generated --ts_proto_opt=nestJs=true,package=omit",
11
11
  "build": "tsc -p tsconfig.build.json"
12
12
  },
13
13
  "files": [