├── .gitignore ├── .travis.yml ├── README.md ├── pom.xml ├── problem-statement.md └── src ├── main └── java │ └── com │ └── uditagarwal │ ├── api │ ├── BookingController.java │ ├── MovieController.java │ ├── PaymentsController.java │ ├── ShowController.java │ └── TheatreController.java │ ├── exceptions │ ├── AlreadyExistsException.java │ ├── BadRequestException.java │ ├── InvalidStateException.java │ ├── NotFoundException.java │ ├── ScreenAlreadyOccupiedException.java │ ├── SeatPermanentlyUnavailableException.java │ └── SeatTemporaryUnavailableException.java │ ├── model │ ├── Booking.java │ ├── BookingStatus.java │ ├── Movie.java │ ├── Screen.java │ ├── Seat.java │ ├── SeatLock.java │ ├── Show.java │ └── Theatre.java │ ├── providers │ ├── InMemorySeatLockProvider.java │ └── SeatLockProvider.java │ └── services │ ├── BookingService.java │ ├── MovieService.java │ ├── PaymentsService.java │ ├── SeatAvailabilityService.java │ ├── ShowService.java │ └── TheatreService.java └── test └── java └── com └── uditagarwal ├── api └── BookingControllerTest.java └── scenarios ├── BaseTest.java ├── Case1Tests.java ├── Case2Tests.java └── Case3Tests.java /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | *.iml 3 | target 4 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: java 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/README.md -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/pom.xml -------------------------------------------------------------------------------- /problem-statement.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/problem-statement.md -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/api/BookingController.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/api/BookingController.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/api/MovieController.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/api/MovieController.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/api/PaymentsController.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/api/PaymentsController.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/api/ShowController.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/api/ShowController.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/api/TheatreController.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/api/TheatreController.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/exceptions/AlreadyExistsException.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/exceptions/AlreadyExistsException.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/exceptions/BadRequestException.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/exceptions/BadRequestException.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/exceptions/InvalidStateException.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/exceptions/InvalidStateException.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/exceptions/NotFoundException.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/exceptions/NotFoundException.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/exceptions/ScreenAlreadyOccupiedException.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/exceptions/ScreenAlreadyOccupiedException.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/exceptions/SeatPermanentlyUnavailableException.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/exceptions/SeatPermanentlyUnavailableException.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/exceptions/SeatTemporaryUnavailableException.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/exceptions/SeatTemporaryUnavailableException.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/model/Booking.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/model/Booking.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/model/BookingStatus.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/model/BookingStatus.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/model/Movie.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/model/Movie.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/model/Screen.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/model/Screen.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/model/Seat.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/model/Seat.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/model/SeatLock.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/model/SeatLock.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/model/Show.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/model/Show.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/model/Theatre.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/model/Theatre.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/providers/InMemorySeatLockProvider.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/providers/InMemorySeatLockProvider.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/providers/SeatLockProvider.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/providers/SeatLockProvider.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/services/BookingService.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/services/BookingService.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/services/MovieService.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/services/MovieService.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/services/PaymentsService.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/services/PaymentsService.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/services/SeatAvailabilityService.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/services/SeatAvailabilityService.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/services/ShowService.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/services/ShowService.java -------------------------------------------------------------------------------- /src/main/java/com/uditagarwal/services/TheatreService.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/main/java/com/uditagarwal/services/TheatreService.java -------------------------------------------------------------------------------- /src/test/java/com/uditagarwal/api/BookingControllerTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/test/java/com/uditagarwal/api/BookingControllerTest.java -------------------------------------------------------------------------------- /src/test/java/com/uditagarwal/scenarios/BaseTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/test/java/com/uditagarwal/scenarios/BaseTest.java -------------------------------------------------------------------------------- /src/test/java/com/uditagarwal/scenarios/Case1Tests.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/test/java/com/uditagarwal/scenarios/Case1Tests.java -------------------------------------------------------------------------------- /src/test/java/com/uditagarwal/scenarios/Case2Tests.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/test/java/com/uditagarwal/scenarios/Case2Tests.java -------------------------------------------------------------------------------- /src/test/java/com/uditagarwal/scenarios/Case3Tests.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anomaly2104/ticket-booking-low-level-system-design/HEAD/src/test/java/com/uditagarwal/scenarios/Case3Tests.java --------------------------------------------------------------------------------