Compare commits

..

16 Commits
v1.2.2 ... main

Author SHA1 Message Date
0f7e7c6058 1.6.0
All checks were successful
Publish / Publish npm package action (push) Successful in 46s
Publish Go Bondings / Publish Go package action (push) Successful in 1m55s
2026-04-26 08:13:12 +03:00
96174b4d5d feat: add payment proto 2026-04-26 08:13:05 +03:00
b406d316db 1.5.0
All checks were successful
Publish / Publish npm package action (push) Successful in 58s
Publish Go Bondings / Publish Go package action (push) Successful in 1m53s
2026-04-22 06:23:22 +03:00
f6e360d58d feat: add screening proto 2026-04-22 06:23:11 +03:00
27d9310118 1.4.1
All checks were successful
Publish / Publish npm package action (push) Successful in 39s
Publish Go Bondings / Publish Go package action (push) Successful in 1m18s
2026-04-18 19:20:25 +03:00
7eb5a02a2d fix: fix hall type 2026-04-18 19:20:15 +03:00
2a1a909138 1.4.0
All checks were successful
Publish / Publish npm package action (push) Successful in 53s
Publish Go Bondings / Publish Go package action (push) Successful in 1m32s
2026-04-18 08:35:51 +03:00
bb9ff65861 feat: add hall and seat proto 2026-04-18 08:35:24 +03:00
a735405b7e 1.3.2
All checks were successful
Publish / Publish npm package action (push) Successful in 45s
Publish Go Bondings / Publish Go package action (push) Successful in 20m54s
2026-04-17 06:41:55 +03:00
a517282198 feat: change CreateTheaterResponse 2026-04-17 06:41:38 +03:00
eead3d5078 1.3.1
All checks were successful
Publish / Publish npm package action (push) Successful in 40s
Publish Go Bondings / Publish Go package action (push) Successful in 1m24s
2026-04-15 07:26:47 +03:00
276e1bb7e7 fix: add theater proto paths 2026-04-15 07:26:38 +03:00
67f2fc6472 1.3.0
All checks were successful
Publish / Publish npm package action (push) Successful in 45s
Publish Go Bondings / Publish Go package action (push) Successful in 1m22s
2026-04-15 07:24:22 +03:00
8dd77c9969 feat: add theater proto 2026-04-15 07:24:12 +03:00
db123f7162 1.2.3
All checks were successful
Publish / Publish npm package action (push) Successful in 36s
Publish Go Bondings / Publish Go package action (push) Successful in 1m20s
2026-04-10 06:06:03 +03:00
6a9e991782 fix: fix release date type 2026-04-10 06:05:56 +03:00
13 changed files with 620 additions and 7 deletions

89
gen/ts/hall.ts Normal file
View File

@ -0,0 +1,89 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.11.0
// protoc v6.33.4
// source: hall.proto
/* eslint-disable */
import { GrpcMethod, GrpcStreamMethod } from "@nestjs/microservices";
import { Observable } from "rxjs";
export const protobufPackage = "hall.v1";
export interface CreateHallRequest {
name: string;
theaterId: string;
layout: RowLayout[];
}
export interface CreateHallResponse {
hall: Hall | undefined;
}
export interface ListHallsByTheaterRequest {
theaterId: string;
}
export interface ListHallsByTheaterResponse {
halls: Hall[];
}
export interface GetHallRequest {
id: string;
}
export interface GetHallResponse {
hall: Hall | undefined;
}
export interface Hall {
id: string;
name: string;
theaterId: string;
}
export interface RowLayout {
row: number;
columns: number;
type: string;
price: number;
}
export const HALL_V1_PACKAGE_NAME = "hall.v1";
export interface HallServiceClient {
createHall(request: CreateHallRequest): Observable<CreateHallResponse>;
getHall(request: GetHallRequest): Observable<GetHallResponse>;
listHallsByTheater(request: ListHallsByTheaterRequest): Observable<ListHallsByTheaterResponse>;
}
export interface HallServiceController {
createHall(
request: CreateHallRequest,
): Promise<CreateHallResponse> | Observable<CreateHallResponse> | CreateHallResponse;
getHall(request: GetHallRequest): Promise<GetHallResponse> | Observable<GetHallResponse> | GetHallResponse;
listHallsByTheater(
request: ListHallsByTheaterRequest,
): Promise<ListHallsByTheaterResponse> | Observable<ListHallsByTheaterResponse> | ListHallsByTheaterResponse;
}
export function HallServiceControllerMethods() {
return function (constructor: Function) {
const grpcMethods: string[] = ["createHall", "getHall", "listHallsByTheater"];
for (const method of grpcMethods) {
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
GrpcMethod("HallService", method)(constructor.prototype[method], method, descriptor);
}
const grpcStreamMethods: string[] = [];
for (const method of grpcStreamMethods) {
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
GrpcStreamMethod("HallService", method)(constructor.prototype[method], method, descriptor);
}
};
}
export const HALL_SERVICE_NAME = "HallService";

View File

@ -35,8 +35,8 @@ export interface Movie {
title: string; title: string;
slug: string; slug: string;
poster: string; poster: string;
ratingAge: string; ratingAge: number;
timestamp: Timestamp | undefined; releaseDate: Timestamp | undefined;
} }
export interface MovieDetails { export interface MovieDetails {
@ -47,9 +47,9 @@ export interface MovieDetails {
poster: string; poster: string;
banner: string; banner: string;
duration: number; duration: number;
ratingAge: string; ratingAge: number;
country: string; country: string;
timestamp: Timestamp | undefined; releaseDate: Timestamp | undefined;
} }
export const MOVIE_V1_PACKAGE_NAME = "movie.v1"; export const MOVIE_V1_PACKAGE_NAME = "movie.v1";

129
gen/ts/screening.ts Normal file
View File

@ -0,0 +1,129 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.11.0
// protoc v6.33.4
// source: screening.proto
/* eslint-disable */
import { GrpcMethod, GrpcStreamMethod } from "@nestjs/microservices";
import { Observable } from "rxjs";
export const protobufPackage = "screening.v1";
export interface CreateScreeningRequest {
movieId: string;
hallId: string;
startAt: string;
endAt: string;
}
export interface CreateScreeningResponse {
ok: boolean;
}
export interface GetScreeningRequest {
id: string;
}
export interface GetScreeningResponse {
screening: Screening | undefined;
}
export interface GetScreeningsRequest {
theaterId?: string | undefined;
date?: string | undefined;
}
export interface GetScreeningsResponse {
screenings: Screening[];
}
export interface GetScreeningsByMovieRequest {
movieId: string;
date?: string | undefined;
}
export interface GetScreeningsByMovieResponse {
screenings: Screening[];
}
export interface Screening {
id: string;
startAt: string;
endAt: string;
theater: Theater | undefined;
hall: Hall | undefined;
movie: Movie | undefined;
seatTypes: SeatType[];
}
export interface Movie {
id: string;
title: string;
slug: string;
duration: number;
banner: string;
}
export interface Theater {
id: string;
name: string;
adress: string;
}
export interface Hall {
id: string;
name: string;
}
export interface SeatType {
type: string;
price: number;
}
export const SCREENING_V1_PACKAGE_NAME = "screening.v1";
export interface ScreeningServiceClient {
createScreening(request: CreateScreeningRequest): Observable<CreateScreeningResponse>;
getScreening(request: GetScreeningRequest): Observable<GetScreeningResponse>;
getScreenings(request: GetScreeningsRequest): Observable<GetScreeningsResponse>;
getScreeningsByMovie(request: GetScreeningsByMovieRequest): Observable<GetScreeningsByMovieResponse>;
}
export interface ScreeningServiceController {
createScreening(
request: CreateScreeningRequest,
): Promise<CreateScreeningResponse> | Observable<CreateScreeningResponse> | CreateScreeningResponse;
getScreening(
request: GetScreeningRequest,
): Promise<GetScreeningResponse> | Observable<GetScreeningResponse> | GetScreeningResponse;
getScreenings(
request: GetScreeningsRequest,
): Promise<GetScreeningsResponse> | Observable<GetScreeningsResponse> | GetScreeningsResponse;
getScreeningsByMovie(
request: GetScreeningsByMovieRequest,
): Promise<GetScreeningsByMovieResponse> | Observable<GetScreeningsByMovieResponse> | GetScreeningsByMovieResponse;
}
export function ScreeningServiceControllerMethods() {
return function (constructor: Function) {
const grpcMethods: string[] = ["createScreening", "getScreening", "getScreenings", "getScreeningsByMovie"];
for (const method of grpcMethods) {
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
GrpcMethod("ScreeningService", method)(constructor.prototype[method], method, descriptor);
}
const grpcStreamMethods: string[] = [];
for (const method of grpcStreamMethods) {
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
GrpcStreamMethod("ScreeningService", method)(constructor.prototype[method], method, descriptor);
}
};
}
export const SCREENING_SERVICE_NAME = "ScreeningService";

71
gen/ts/seat.ts Normal file
View File

@ -0,0 +1,71 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.11.0
// protoc v6.33.4
// source: seat.proto
/* eslint-disable */
import { GrpcMethod, GrpcStreamMethod } from "@nestjs/microservices";
import { Observable } from "rxjs";
export const protobufPackage = "seat.v1";
export interface GetSeatRequest {
id: string;
}
export interface GetSeatResponse {
seat: Seat | undefined;
}
export interface ListSeatsByHallRequest {
hallId: string;
screeningId: string;
}
export interface ListSeatsByHallResponse {
seats: Seat[];
}
export interface Seat {
id: string;
row: number;
number: number;
price: number;
status: string;
type: string;
hallId: string;
}
export const SEAT_V1_PACKAGE_NAME = "seat.v1";
export interface SeatServiceClient {
getSeat(request: GetSeatRequest): Observable<GetSeatResponse>;
listSeatsByHall(request: ListSeatsByHallRequest): Observable<ListSeatsByHallResponse>;
}
export interface SeatServiceController {
getSeat(request: GetSeatRequest): Promise<GetSeatResponse> | Observable<GetSeatResponse> | GetSeatResponse;
listSeatsByHall(
request: ListSeatsByHallRequest,
): Promise<ListSeatsByHallResponse> | Observable<ListSeatsByHallResponse> | ListSeatsByHallResponse;
}
export function SeatServiceControllerMethods() {
return function (constructor: Function) {
const grpcMethods: string[] = ["getSeat", "listSeatsByHall"];
for (const method of grpcMethods) {
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
GrpcMethod("SeatService", method)(constructor.prototype[method], method, descriptor);
}
const grpcStreamMethods: string[] = [];
for (const method of grpcStreamMethods) {
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
GrpcStreamMethod("SeatService", method)(constructor.prototype[method], method, descriptor);
}
};
}
export const SEAT_SERVICE_NAME = "SeatService";

78
gen/ts/theater.ts Normal file
View File

@ -0,0 +1,78 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.11.0
// protoc v6.33.4
// source: theater.proto
/* eslint-disable */
import { GrpcMethod, GrpcStreamMethod } from "@nestjs/microservices";
import { Observable } from "rxjs";
import { Empty } from "./google/protobuf/empty";
export const protobufPackage = "theater.v1";
export interface ListTheaterResponse {
theaters: Theater[];
}
export interface GetTheaterRequest {
id: string;
}
export interface GetTheaterResponse {
theater: Theater | undefined;
}
export interface CreateTheaterRequest {
name: string;
address: string;
}
export interface CreateTheaterResponse {
theater: Theater | undefined;
}
export interface Theater {
id: string;
name: string;
address: string;
}
export const THEATER_V1_PACKAGE_NAME = "theater.v1";
export interface TheaterServiceClient {
listTheater(request: Empty): Observable<ListTheaterResponse>;
getTheater(request: GetTheaterRequest): Observable<GetTheaterResponse>;
createTheater(request: CreateTheaterRequest): Observable<CreateTheaterResponse>;
}
export interface TheaterServiceController {
listTheater(request: Empty): Promise<ListTheaterResponse> | Observable<ListTheaterResponse> | ListTheaterResponse;
getTheater(
request: GetTheaterRequest,
): Promise<GetTheaterResponse> | Observable<GetTheaterResponse> | GetTheaterResponse;
createTheater(
request: CreateTheaterRequest,
): Promise<CreateTheaterResponse> | Observable<CreateTheaterResponse> | CreateTheaterResponse;
}
export function TheaterServiceControllerMethods() {
return function (constructor: Function) {
const grpcMethods: string[] = ["listTheater", "getTheater", "createTheater"];
for (const method of grpcMethods) {
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
GrpcMethod("TheaterService", method)(constructor.prototype[method], method, descriptor);
}
const grpcStreamMethods: string[] = [];
for (const method of grpcStreamMethods) {
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
GrpcStreamMethod("TheaterService", method)(constructor.prototype[method], method, descriptor);
}
};
}
export const THEATER_SERVICE_NAME = "TheaterService";

View File

@ -1,6 +1,6 @@
{ {
"name": "@teacinema/contracts", "name": "@teacinema/contracts",
"version": "1.2.2", "version": "1.6.0",
"description": "Protocol Buffers contracts for microservices", "description": "Protocol Buffers contracts for microservices",
"scripts": { "scripts": {
"build": "tsc -p tsconfig.build.json", "build": "tsc -p tsconfig.build.json",

48
proto/hall.proto Normal file
View File

@ -0,0 +1,48 @@
syntax = "proto3";
package hall.v1;
service HallService {
rpc CreateHall (CreateHallRequest) returns (CreateHallResponse);
rpc GetHall (GetHallRequest) returns (GetHallResponse);
rpc ListHallsByTheater (ListHallsByTheaterRequest) returns (ListHallsByTheaterResponse);
}
message CreateHallRequest {
string name = 1;
string theater_id = 2;
repeated RowLayout layout = 3;
}
message CreateHallResponse {
Hall hall = 1;
}
message ListHallsByTheaterRequest {
string theater_id = 1;
}
message ListHallsByTheaterResponse {
repeated Hall halls = 1;
}
message GetHallRequest {
string id = 1;
}
message GetHallResponse {
Hall hall = 1;
}
message Hall {
string id = 1;
string name = 2;
string theater_id = 3;
}
message RowLayout {
int32 row = 1;
int32 columns = 2;
string type = 3;
int32 price = 4;
}

View File

@ -36,7 +36,7 @@ message Movie {
string slug = 3; string slug = 3;
string poster = 4; string poster = 4;
int32 rating_age = 5; int32 rating_age = 5;
google.protobuf.Timestamp timestamp = 6; google.protobuf.Timestamp release_date = 6;
} }
message MovieDetails { message MovieDetails {
@ -49,5 +49,5 @@ message MovieDetails {
int32 duration = 7; int32 duration = 7;
int32 rating_age = 8; int32 rating_age = 8;
string country = 9; string country = 9;
google.protobuf.Timestamp timestamp = 10; google.protobuf.Timestamp release_date = 10;
} }

39
proto/payment.proto Normal file
View File

@ -0,0 +1,39 @@
syntax = "proto3";
package payment.v1;
service PaymentService {
rpc CreatePayment(CreatePaymentRequest) returns (CreatePaymentResponse);
rpc ProcessPaymentEvent (ProcessPaymentEventRequest) returns (ProcessPaymentEventResponse);
}
message CreatePaymentRequest {
string user_id = 1;
string screening_id = 2;
repeated SeatInput seats = 3;
optional string payment_method_id = 4;
bool save_payment_method = 5;
}
message CreatePaymentResponse {
string url = 1;
}
message ProcessPaymentEventRequest {
string event = 1;
string payment_id = 2;
string booking_id = 3;
string user_id = 4;
bool save_payment_method = 5;
string provider_payment_id = 6;
string card_first6 = 7;
string lat4 = 8;
}
message ProcessPaymentEventResponse {
bool ok = 1;
}
message SeatInput {
string seat_id = 1;
int32 price = 2;
}

79
proto/screening.proto Normal file
View File

@ -0,0 +1,79 @@
syntax = "proto3";
package screening.v1;
service ScreeningService {
rpc CreateScreening (CreateScreeningRequest) returns (CreateScreeningResponse);
rpc GetScreening (GetScreeningRequest) returns (GetScreeningResponse);
rpc GetScreenings (GetScreeningsRequest) returns (GetScreeningsResponse);
rpc GetScreeningsByMovie (GetScreeningsByMovieRequest) returns (GetScreeningsByMovieResponse);
}
message CreateScreeningRequest {
string movie_id = 1;
string hall_id = 2;
string start_at = 3;
string end_at = 4;
}
message CreateScreeningResponse {
bool ok = 1;
}
message GetScreeningRequest {
string id = 1;
}
message GetScreeningResponse {
Screening screening = 1;
}
message GetScreeningsRequest {
optional string theater_id = 1;
optional string date = 2;
}
message GetScreeningsResponse {
repeated Screening screenings = 1;
}
message GetScreeningsByMovieRequest {
string movie_id = 1;
optional string date = 2;
}
message GetScreeningsByMovieResponse {
repeated Screening screenings = 1;
}
message Screening {
string id = 1;
string start_at = 2;
string end_at = 3;
Theater theater = 4;
Hall hall = 5;
Movie movie = 6;
repeated SeatType seat_types = 7;
}
message Movie {
string id = 1;
string title = 2;
string slug = 3;
int32 duration = 4;
string banner = 5;
}
message Theater {
string id = 1;
string name = 2;
string adress = 3;
}
message Hall {
string id = 1;
string name = 2;
}
message SeatType {
string type = 1;
int32 price = 2;
}

33
proto/seat.proto Normal file
View File

@ -0,0 +1,33 @@
syntax = "proto3";
package seat.v1;
service SeatService {
rpc GetSeat (GetSeatRequest) returns (GetSeatResponse);
rpc ListSeatsByHall (ListSeatsByHallRequest) returns (ListSeatsByHallResponse);
}
message GetSeatRequest {
string id = 1;
}
message GetSeatResponse {
Seat seat = 1;
}
message ListSeatsByHallRequest {
string hall_id = 1;
string screening_id = 2;
}
message ListSeatsByHallResponse {
repeated Seat seats = 1;
}
message Seat {
string id = 1;
int32 row = 2;
int32 number = 3;
int32 price = 4;
string status = 5;
string type = 6;
string hall_id = 7;
}

37
proto/theater.proto Normal file
View File

@ -0,0 +1,37 @@
syntax = "proto3";
package theater.v1;
import "google/protobuf/empty.proto";
service TheaterService {
rpc ListTheater(google.protobuf.Empty) returns (ListTheaterResponse);
rpc GetTheater(GetTheaterRequest) returns (GetTheaterResponse);
rpc CreateTheater(CreateTheaterRequest) returns (CreateTheaterResponse);
}
message ListTheaterResponse {
repeated Theater theaters = 1;
}
message GetTheaterRequest {
string id = 1;
}
message GetTheaterResponse {
Theater theater = 1;
}
message CreateTheaterRequest {
string name = 1;
string address = 2;
}
message CreateTheaterResponse {
Theater theater = 1;
}
message Theater {
string id = 1;
string name = 2;
string address = 3;
}

View File

@ -34,4 +34,14 @@ export const PROTO_PATHS = {
MOVIE: join(__dirname, '../../proto/movie.proto'), MOVIE: join(__dirname, '../../proto/movie.proto'),
/** Путь к `category.proto` (пакет `category.v1`) */ /** Путь к `category.proto` (пакет `category.v1`) */
CATEGORY: join(__dirname, '../../proto/category.proto'), CATEGORY: join(__dirname, '../../proto/category.proto'),
/** Путь к `theater.proto` (пакет `theater.v1`) */
THEATER: join(__dirname, '../../proto/theater.proto'),
/** Путь к `hall.proto` (пакет `hall.v1`) */
HALL: join(__dirname, '../../proto/hall.proto'),
/** Путь к `seat.proto` (пакет `seat.v1`) */
SEAT: join(__dirname, '../../proto/seat.proto'),
/** Путь к `screening.proto` (пакет `screening.v1`) */
SCREENING: join(__dirname, '../../proto/screening.proto'),
/** Путь к `payment.proto` (пакет `payment.v1`) */
PAYMENT: join(__dirname, '../../proto/payment.proto'),
} as const } as const