async def add_exam(r: str, u: int): """Add exam to database :param r: Request :param u: User ID who added the exam. :return: Operation result. Success or fail (with error description) """ user = await get_user(u) if not user: # This is case is mostly impossible but still there return r_exam_add_fail_not_reg # Must be 2 parameters examDate and examGroup request = r.split('=') if len(request) < 2: return r_exam_add_fail_params # Max length of text snackbar is 90, # so we need to limit name of the exam (about 25 symbols for date, time and id of the exam) if len(request[1]) > 65: return r_exam_add_fail_name.format(len(request[1])) try: exam_date = datetime.strptime( request[0], "%d-%m-%Y %H:%M" ) # Convert into datetime to be sure it has no errors except ValueError: return r_exam_add_fail_date sql = "INSERT INTO exams (examDate, examName, examGroup, examUser) VALUES (?, ?, ?, ?)" cur.execute( sql, (exam_date.strftime('%Y%m%d%H%M'), request[1], user.group_peer_id, u)) db.commit() return r_exam_add_success
async def delete_exam(r: str, u: int): """Delete exam from database :param r: Request :param u: User ID who added the exam :return: Result of operation. Success or fail as string """ sql = db.cursor().execute( "DELETE FROM exams WHERE examId = ? AND examUser = ?", (r, u)).rowcount db.commit() return r_exam_delete_success if (sql != 0) else r_exam_delete_fail
def delete_teacher(req: int, user_id: int): """ Delete teacher from database :param req: Request, class name :param user_id: User id :return: Result (success or fail) """ sql = db.cursor().execute( "DELETE FROM teachers WHERE teacherId = ? AND userId = ?", (req, user_id)).rowcount db.commit() return r_teacher_delete_success if ( sql != 0) else r_teacher_delete_fail # Not 0 means deleted
def register_user(user_id: int, group_id: int): """ Register user or chat. Add it to database :param user_id: User id (peer_id if it's called in group') :param group_id: Group name in database """ find_res = cur.execute("SELECT * FROM groups WHERE groupId=?", (group_id,)).fetchone() # First we check if requested group exists in database if find_res is not None: # Requested group is in database sql = "INSERT INTO users (userId, userGroupId) VALUES (?, ?)" values = (user_id, group_id) cur.execute(sql, values) db.commit() stats.uincr() return find_res['groupName']
def add_teacher(req: str, user_id: int): """ Add teacher to database :param user_id: User id, who is adding :param req: Request :return: Result """ if req.lower() == "имя=предмет": return "🤬 Чел, ты... [Имя=Предмет это лишь пример]" # We create list, where 0 is Teacher, and 1 is Class try: req = req.split("=") req = (req[0], req[1], req[1].lower(), user_id ) # Teacher, Class, Searchable(we search in this column), User except IndexError: return r_teacher_add_help sql = "INSERT INTO teachers (teacherName, teacherClass, teacherClassSearchable, userId) VALUES (?, ?, ?, ?)" db.cursor().execute(sql, req) db.commit() return r_teacher_add_success.format(req[0], req[1])