def persist_entity(self, obj, table_name, columns): args_values=map(lambda x: obj.__getattribute__(x), columns) set_string = " SET " + ( ", ".join( map(lambda x: x + '=%s', columns) ) ) if hasattr(obj, 'id'): args_values.append(obj.id) db.execute("UPDATE " + table_name + set_string +" WHERE id = %s", *args_values) else: obj.id = db.execute_lastrowid("INSERT INTO " + table_name + set_string, *args_values)
def persist_contact(self, contact): if contact.is_canceled: db.execute("DELETE FROM " + CONTACT_TABLE_NAME +" WHERE id = %s", contact.id) return if not contact.is_active: contact.game.add_used_word(contact.word) if contact.is_accepted: contact.connected_user_id = contact.connected_user.id else: contact.connected_user_id = None contact.author_id = contact.author.id contact.game_id = contact.game.id columns = ('game_id', 'word', 'description', 'author_id', 'connected_user_id', 'connected_word', 'connected_at', 'is_active', 'is_successful', 'created_at') self.persist_entity(contact, CONTACT_TABLE_NAME, columns)