diff --git a/gen/ts/hall.ts b/gen/ts/hall.ts new file mode 100644 index 0000000..5904179 --- /dev/null +++ b/gen/ts/hall.ts @@ -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; + + getHall(request: GetHallRequest): Observable; + + listHallsByTheater(request: ListHallsByTheaterRequest): Observable; +} + +export interface HallServiceController { + createHall( + request: CreateHallRequest, + ): Promise | Observable | CreateHallResponse; + + getHall(request: GetHallRequest): Promise | Observable | GetHallResponse; + + listHallsByTheater( + request: ListHallsByTheaterRequest, + ): Promise | Observable | 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"; diff --git a/gen/ts/movie.ts b/gen/ts/movie.ts index 0815f0e..75efe60 100644 --- a/gen/ts/movie.ts +++ b/gen/ts/movie.ts @@ -35,8 +35,8 @@ export interface Movie { title: string; slug: string; poster: string; - ratingAge: string; - timestamp: Timestamp | undefined; + ratingAge: number; + releaseDate: Timestamp | undefined; } export interface MovieDetails { @@ -47,9 +47,9 @@ export interface MovieDetails { poster: string; banner: string; duration: number; - ratingAge: string; + ratingAge: number; country: string; - timestamp: Timestamp | undefined; + releaseDate: Timestamp | undefined; } export const MOVIE_V1_PACKAGE_NAME = "movie.v1"; diff --git a/gen/ts/screening.ts b/gen/ts/screening.ts new file mode 100644 index 0000000..95b7c20 --- /dev/null +++ b/gen/ts/screening.ts @@ -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; + + getScreening(request: GetScreeningRequest): Observable; + + getScreenings(request: GetScreeningsRequest): Observable; + + getScreeningsByMovie(request: GetScreeningsByMovieRequest): Observable; +} + +export interface ScreeningServiceController { + createScreening( + request: CreateScreeningRequest, + ): Promise | Observable | CreateScreeningResponse; + + getScreening( + request: GetScreeningRequest, + ): Promise | Observable | GetScreeningResponse; + + getScreenings( + request: GetScreeningsRequest, + ): Promise | Observable | GetScreeningsResponse; + + getScreeningsByMovie( + request: GetScreeningsByMovieRequest, + ): Promise | Observable | 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"; diff --git a/gen/ts/seat.ts b/gen/ts/seat.ts new file mode 100644 index 0000000..89565fd --- /dev/null +++ b/gen/ts/seat.ts @@ -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; + + listSeatsByHall(request: ListSeatsByHallRequest): Observable; +} + +export interface SeatServiceController { + getSeat(request: GetSeatRequest): Promise | Observable | GetSeatResponse; + + listSeatsByHall( + request: ListSeatsByHallRequest, + ): Promise | Observable | 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"; diff --git a/gen/ts/theater.ts b/gen/ts/theater.ts new file mode 100644 index 0000000..78e7fb5 --- /dev/null +++ b/gen/ts/theater.ts @@ -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; + + getTheater(request: GetTheaterRequest): Observable; + + createTheater(request: CreateTheaterRequest): Observable; +} + +export interface TheaterServiceController { + listTheater(request: Empty): Promise | Observable | ListTheaterResponse; + + getTheater( + request: GetTheaterRequest, + ): Promise | Observable | GetTheaterResponse; + + createTheater( + request: CreateTheaterRequest, + ): Promise | Observable | 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"; diff --git a/proto/payment.proto b/proto/payment.proto new file mode 100644 index 0000000..fd09490 --- /dev/null +++ b/proto/payment.proto @@ -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; +} diff --git a/src/proto/paths.ts b/src/proto/paths.ts index 6a82245..2254c3d 100644 --- a/src/proto/paths.ts +++ b/src/proto/paths.ts @@ -42,4 +42,6 @@ export const PROTO_PATHS = { 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