def delete_by_id(genre_id: int): genre = GenreModel.get_by_id(genre_id) if not genre: return custom_response({'error': 'genre not found'}, 404) genre.delete() return custom_response({'message': 'deleted'}, 204)
def get_by_title(title: str): if not title: return custom_response({'error': 'no title provided'}, 400) movie = MovieModel.get_by_title(title) if not movie: return custom_response({'error': 'movie not found'}, 404) data = movie_schema.dump(movie, many=True) return custom_response(data, 200)
def get_by_id(rental_id: int): rental = RentalModel.get_by_id(rental_id) if not rental: return custom_response({'error': 'not found'}, 404) data = rental_schema.dump(rental) if data.get('user_id') != RentalService.get_user(): return custom_response({'error': 'permission denied'}, 400) return custom_response(data, 200)
def update(movie_id: int, data): movie = MovieModel.get_by_id(movie_id) if not movie: return custom_response({'error': 'not found'}, 404) movie.update(data) data = movie_schema.dump(movie) return custom_response(data, 200)
def update(genre_id: int, data): genre = GenreModel.get_by_id(genre_id) if not genre: return custom_response({'error': 'not found'}, 404) genre.update(data) data = genre_schema.dump(genre) return custom_response(data, 200)
def create(req_data): req_data['user_id'] = RentalService.get_user() try: data = rental_schema.load(req_data) except ValidationError as e: return custom_response(e.messages, 400) rental = RentalModel(data) rental.save() data = rental_schema.dump(rental) return custom_response(data, 201)
def return_movie(req_data): rental = RentalModel.get_by_id(req_data["rental_id"]) if not rental: return custom_response({'error': 'rental not found'}, 404) data = rental_schema.dump(rental) if data.get('user_id') != RentalService.get_user(): return custom_response({'error': 'permission denied'}, 400) rental = rental.return_movie() data = rental_schema.dump(rental) return custom_response(data, 200)
def login(data): if not data.get('email') or not data.get('password'): return custom_response( {'error': 'you need email and password to sign in'}, 400) user = UserModel.get_user_by_email(data.get('email')) if not user: return custom_response({'error': 'invalid credentials'}, 400) if not user.check_hash(data.get('password')): return custom_response({'error': 'invalid credentials'}, 400) ser_data = user_schema.dump(user) token = Auth.generate_token(ser_data.get('id')) return custom_response({'jwt_token': token}, 200)
def create(data): user_in_db = UserModel.get_user_by_email(data.get('email')) if user_in_db: message = { 'error': 'User already exist, please supply another email address' } return custom_response(message, 400) user = UserModel(data) user.save() ser_data = user_schema.dump(user) token = Auth.generate_token(ser_data.get('id')) return custom_response({'jwt_token': token}, 201)
def update(rental_id: int, req_data): rental = RentalModel.get_by_id(rental_id) if not rental: return custom_response({'error': 'not found'}, 404) data = rental_schema.dump(rental) if data.get('user_id') != RentalService.get_user(): return custom_response({'error': 'permission denied'}, 400) try: data = rental_schema.load(req_data, partial=True) except ValidationError as e: return custom_response(e.messages, 400) rental.update(data) data = rental_schema.dump(rental) return custom_response(data, 200)
def delete(): user = UserModel.get_one_user(UserService.get_user()) user.delete() return custom_response({'message': 'deleted'}, 204)
def update(data): user = UserModel.get_one_user(UserService.get_user()) user.update(data) ser_user = user_schema.dump(user) return custom_response(ser_user, 200)
def get_logged_in_user(): user = UserModel.get_one_user(UserService.get_user()) ser_user = user_schema.dump(user) return custom_response(ser_user, 200)
def get_all(): movies = MovieModel.get_all_movies() data = movie_schema.dump(movies, many=True) return custom_response(data, 200)
def create(data): movie = MovieModel(data) movie.save() data = movie_schema.dump(movie) return custom_response(data, 201)
def delete_by_id(movie_id: int): movie = MovieModel.get_by_id(movie_id) if not movie: return custom_response({'error': 'movie not found'}, 404) movie.delete() return custom_response({'message': 'deleted'}, 204)
def get_all(): rentals = RentalModel.get_all_rentals() data = rental_schema.dump(rentals, many=True) return custom_response(data, 200)
def create(data): genre = GenreModel(data) genre.save() data = genre_schema.dump(genre) return custom_response(data, 201)
def get_all(): genres = GenreModel.get_all_genres() data = genre_schema.dump(genres, many=True) return custom_response(data, 200)
def get_movies(genre_id: int): genre = GenreModel.get_by_id(genre_id) if not genre: return custom_response({'error': 'not found'}, 404) data = movie_schema.dump(genre.movies, many=True) return custom_response(data, 200)