def delete_post(post_id): """ Удаляет в БД открытый на редактирование пост с номером post_id :param post_id: :return: Словарь {"code_error": "Deleted_post"} """ conn = get_conn_db() cur = conn.cursor() cur.execute("DELETE FROM post WHERE id = %s", (post_id, )) cur.close() conn.commit() conn.close() return json_response(json.dumps({"code_error": "Deleted_post"}))
def get_author_id(author_id): """ По запросу GET с author_id автора найти его в базе и вернуть словарь с данными :param author_id: :return: Dictionary author_dic """ conn = get_conn_db() cur = conn.cursor() cur.execute("SELECT * FROM author WHERE id = %s", (author_id, )) auth_cur = cur.fetchone() if auth_cur is not None: author_dic = tp_to_dict(auth_cur, cur) return json_response(json.dumps(author_dic)) cur.close() conn.close() return json_response(json.dumps({"author_id": "Not_Found"}))
def create_author(): """ Запросом POST принимаем параметры для нового пользователя из request.json и добавляем его в базу """ req = request.json username = req["username"] password_hash = req["password_hash"] conn = get_conn_db() cur = conn.cursor() cur.execute( "INSERT INTO author (username, password) VALUES (%s, %s)", (username, password_hash), ) cur.close() conn.commit() conn.close() return json_response(json.dumps({"code_error": "Created_new_author"}))
def update_post(post_id): """ Записывает в БД измененный пост с номером post_id :param post_id: :return: """ req = request.get_json() title = req["title"] body = req["body"] conn = get_conn_db() cur = conn.cursor() cur.execute("UPDATE post SET title = %s, body = %s WHERE id = %s", (title, body, post_id)) cur.close() conn.commit() conn.close() return json_response(json.dumps({"code_error": "Updated_post"}))
def get_post_id(post_id): """ Возвращает пост на GET запрос к URL "/posts/<int:post_id>" :param post_id: :return: json с одной записью """ conn = get_conn_db() cur = conn.cursor() cur.execute( "SELECT post.id, title, body, created, author_id, username" " FROM post JOIN author ON post.author_id = author.id" " WHERE post.id = %s", (post_id, ), ) cur_post = cur.fetchone() post = tp_to_dict(cur_post, cur) cur.close() conn.commit() conn.close() return json_response(json.dumps(post, default=convert_dt))
def get_posts(): """ Возвращает все записи базы на запром к УРЛу "/" в json.damp изменена выдача datetime на строчное представлние заменой default метода на свой в виде вызова строчного представлние объекта! Гениальное решение! Надеюсь :return: json со всеми записями. """ conn = get_conn_db() cur = conn.cursor() cur.execute(''' SELECT post.id, title, body, created, author_id, username FROM post JOIN author ON post.author_id = author.id ORDER BY created DESC; ''') post_cur = cur.fetchall() tp_bd = list_tp_to_list_dict(post_cur, cur) cur.close() conn.commit() conn.close() return json_response(json.dumps(tp_bd, default=convert_dt))
def create_post(): """ Добавляет новый пост в БД, с содержанием, полученным в теле запроса title body author_id :return: dictionary {"code_error": "Created_new_post"} """ req = request.json title = req["title"] body = req["body"] author_id = req["author_id"] conn = get_conn_db() cur = conn.cursor() cur.execute( "INSERT INTO post (title, body, author_id)" " VALUES (%s, %s, %s)", (title, body, author_id), ) cur.close() conn.commit() conn.close() return json_response(json.dumps({"code_error": "Created_new_post"}))