def add_threads(forum, title, isClosed, user, date, message, slug, optional): verify(table_name="Users", param="email", val=user) verify(table_name="Forums", param="short_name", val=forum) isDeleted = 0 if "isDeleted" in optional: isDeleted = optional["isDeleted"] thread = selectQuery( 'select date, forum, id, isClosed, isDeleted, message, slug, title, user, dislikes, likes, points, posts ' 'FROM Threads WHERE slug = %s', (slug, ) ) if len(thread) == 0: ins_upd_delQuery( 'INSERT INTO Threads (forum, title, isClosed, user, date, message, slug, isDeleted) ' 'VALUES (%s, %s, %s, %s, %s, %s, %s, %s)', (forum, title, isClosed, user, date, message, slug, isDeleted, ) ) thread = selectQuery( 'select date, forum, id, isClosed, isDeleted, message, slug, title, user, dislikes, likes, points, posts ' 'FROM Threads WHERE slug = %s', (slug, ) ) response = threads_info(thread) del response["dislikes"] del response["likes"] del response["points"] del response["posts"] return response
def vote(id, vote): verify(table_name="Posts", param="id", val=id) if vote == -1: ins_upd_delQuery("UPDATE Posts SET dislikes=dislikes+1, points=points-1 where id = %s", (id, )) else: ins_upd_delQuery("UPDATE Posts SET likes=likes+1, points=points+1 where id = %s", (id, )) return details(id=id, related=[])
def remove_follows(email1, email2): follows = selectQuery('SELECT id FROM Followers WHERE follower = %s AND followee = %s', (email1, email2, )) if len(follows) != 0: ins_upd_delQuery('DELETE FROM Followers WHERE follower = %s AND followee = %s', (email1, email2, )) else: raise Exception("No such following") return users.details(email1)
def remove_restore(thread_id, status): verify(table_name="Threads", param="id", val=thread_id) ins_upd_delQuery("UPDATE Threads SET isDeleted = %s WHERE id = %s", (status, thread_id, )) response = { "thread": thread_id } return response
def open_close_threads(id, isClosed): verify(table_name="Threads", param="id", val=id) ins_upd_delQuery("UPDATE Threads SET isClosed = %s WHERE id = %s", (isClosed, id, )) response = { "thread": id } return response
def add_forum(name, short_name, user): verify(table_name="Users", param="email", val=user) forum = selectQuery('SELECT id, name, short_name, user FROM Forums WHERE short_name = %s', (short_name, )) if len(forum) == 0: ins_upd_delQuery('INSERT INTO Forums (name, short_name, user) VALUES (%s, %s, %s)', (name, short_name, user, )) forum = selectQuery('SELECT id, name, short_name, user FROM Forums WHERE short_name = %s', (short_name, )) return forums_info(forum)
def add_follows(email1, email2): verify(table_name="Users", param="email", val=email1) verify(table_name="Users", param="email", val=email2) if email1 == email2: raise Exception("User with email=" + email1 + " can't follow himself") follows = selectQuery('SELECT id FROM Followers WHERE follower = %s AND followee = %s', (email1, email2, )) if len(follows) == 0: ins_upd_delQuery('INSERT INTO Followers (follower, followee) VALUES (%s, %s)', (email1, email2, )) user = users.details(email1) return user
def add_users(email, username, about, name, optional): isAnonymous = 0 if "isAnonymous" in optional: isAnonymous = optional["isAnonymous"] try: user = select_user('select email, about, isAnonymous, id, name, username FROM Users WHERE email = %s', (email, )) if len(user) == 0: ins_upd_delQuery( 'INSERT INTO Users (email, about, name, username, isAnonymous) VALUES (%s, %s, %s, %s, %s)', (email, about, name, username, isAnonymous, )) user = select_user('select email, about, isAnonymous, id, name, username FROM Users WHERE email = %s', (email, )) except Exception as e: raise Exception(e.message) return users_info(user)
def remove_subscriptions(email, thread_id): verify(table_name="Threads", param="id", val=thread_id) verify(table_name="Users", param="email", val=email) subscriptions = selectQuery( 'SELECT thread, user FROM Subscriptions WHERE user = %s AND thread = %s', (email, thread_id, ) ) if len(subscriptions) == 0: raise Exception("user " + email + " does not subscribe thread #" + str(thread_id)) ins_upd_delQuery('DELETE FROM Subscriptions WHERE user = %s AND thread = %s', (email, thread_id, )) response = { "thread": subscriptions[0][0], "user": subscriptions[0][1] } return response
def add_subscriptions(email, thread_id): verify(table_name="Threads", param="id", val=thread_id) verify(table_name="Users", param="email", val=email) subscription = selectQuery( 'select thread, user FROM Subscriptions WHERE user = %s AND thread = %s', (email, thread_id, ) ) if len(subscription) == 0: ins_upd_delQuery('INSERT INTO Subscriptions (thread, user) VALUES (%s, %s)', (thread_id, email, )) subscription = selectQuery( 'SELECT thread, user FROM Subscriptions WHERE user = %s AND thread = %s', (email, thread_id, ) ) response = { "thread": subscription[0][0], "user": subscription[0][1] } return response
def remove_restore(post_id, status): verify(table_name="Posts", param="id", val=post_id) ins_upd_delQuery("UPDATE Posts SET isDeleted = %s WHERE Posts.id = %s", (status, post_id, )) return { "post": post_id }
def update(id, message): verify(table_name="Posts", param="id", val=id) ins_upd_delQuery('UPDATE Posts SET message = %s WHERE id = %s', (message, id, )) return details(id=id, related=[])
def update_threads(id, slug, message): verify(table_name="Threads", param="id", val=id) ins_upd_delQuery('UPDATE Threads SET slug = %s, message = %s WHERE id = %s',(slug, message, id, )) return details(id=id, related=[])
def update_users(email, about, name): verify(table_name="Users", param="email", val=email) ins_upd_delQuery('UPDATE Users SET email = %s, about = %s, name = %s WHERE email = %s', (email, about, name, email, )) return details(email)