def get_student_by_id(self, student_id: int) -> Optional[Dict]: """ get student info by id :param student_id: :return: student list of dict """ try: self.logger.info("Get student info by student_id:{}".format(student_id)) student = StudentModel.get_student_by_id(student_id) if not student: raise SQLCustomError(description="No data for requested student id: {}".format(student_id)) return student.student_dict() except SQLAlchemyError as error: self.logger.error("Error: {}".format(error)) raise SQLCustomError(description="GET student by ID SQL ERROR")
def update_student_by_id(self, student_id: int, data: Dict) -> bool: """ put student by id :param student_id: :param data: :return: """ if not data: raise RequestDataEmpty("Student data is empty") if not self.input_validate.validate_json(data, student_schema): self.logger.error("All student field input must be required.") raise ValidateFail("Student update validation fail") try: student = StudentModel.get_student_by_id(student_id) self.logger.info( "Update student info by student_id:{}".format(student_id)) old_photo_url = student.photo if data["photo"]: new_photo_url = self.upload_file(data["photo"]) else: new_photo_url = None updated_student = StudentModel.update_student( student_id, StudentModel(name=data["name"], deactivated_at=data["deactivated_at"], birth_date=data["birth_date"], father_name=data["father_name"], mother_name=data["mother_name"], parents_occupation=data["parents_occupation"], gender=data["gender"], photo=new_photo_url or old_photo_url, address_id=data["address_id"])) if new_photo_url and old_photo_url: self.delete_file(old_photo_url) return updated_student except SQLAlchemyError as error: self.logger.error("Error: {}".format(error)) raise SQLCustomError(description="Update student by ID SQL ERROR") except SQLCustomError as error: self.logger.error("Error: {}".format(error)) raise SQLCustomError(description="No record for requested student")