def save(self): if self.id is None: with Config().get_db_connection().cursor() as cursor: cursor.execute('INSERT INTO atores VALUES(NULL)') cursor.execute('SELECT LAST_INSERT_ID();') self.actor = cursor.fetchone()[0] cursor.execute('INSERT INTO publicaveis VALUES(NULL)') cursor.execute('SELECT LAST_INSERT_ID()') self.publishable = cursor.fetchone()[0] cursor.execute( 'INSERT INTO usuarios (email, nome, data_nascimento, sexo, senha, codigo_ator, codigo_publicavel)' 'VALUES("{}", "{}", "{}", "{}", "{}", {}, {});'.format(self.email, self.name, self.birthdate, self.gender, self.password, self.actor, self.publishable)) cursor.execute('SELECT LAST_INSERT_ID();') self.id = cursor.fetchone()[0] Config().get_db_connection().commit() else: with Config().get_db_connection().cursor() as cursor: cursor.execute( 'UPDATE usuarios SET email="{}", nome="{}", data_nascimento="{}", sexo="{}", senha="{}" WHERE usuarios.codigo = {}' .format(self.email, self.name, self.birthdate, self.gender, self.password, self.id)) Config().get_db_connection().commit() return self.id
def save(self): with Config().get_db_connection().cursor() as cursor: cursor.execute( 'INSERT INTO interacoes (codigo_ator, codigo_interativo, data) ' 'VALUES("{}", "{}", "{}")'.format(self.actor, self.interactable, self.date)) Config().get_db_connection().commit()
def make_friendship(friend1, friend2): if friend1.id == friend2.id: return False with Config().get_db_connection().cursor() as cursor: cursor.execute('INSERT INTO sao_amigos (codigo_usuario_1, codigo_usuario_2) ' 'VALUES ("{}", "{}")'.format(friend1.id, friend2.id)) Config().get_db_connection().commit() return True
def make_internal_friendship(self, new_friend): if new_friend.id == self.id: return False with Config().get_db_connection().cursor() as cursor: cursor.execute('INSERT INTO sao_amigos (codigo_usuario_1, codigo_usuario_2) ' 'VALUES ("{}", "{}")'.format(self.id, new_friend.id)) Config().get_db_connection().commit() return True
def find_users(name): with Config().get_db_connection().cursor() as cursor: cursor.execute('SELECT codigo, email, nome, data_nascimento, sexo, senha, codigo_ator, codigo_publicavel ' 'FROM usuarios ' 'WHERE UPPER(nome) LIKE UPPER(\'%{}%\')' .format(name)) for u in cursor.fetchall(): yield UserModel(id=u[0], email=u[1], name=u[2], birthdate=u[3], gender=u[4], password=u[5], actor=u[6], publishable=u[7], friends=list(UserModel.find_friends(u[0])))
def find_by_email_and_password(email, password): with Config().get_db_connection().cursor() as cursor: cursor.execute('SELECT codigo, email, nome, data_nascimento, sexo, senha, codigo_ator, codigo_publicavel ' 'FROM usuarios ' 'WHERE usuarios.email = \'{}\' AND usuarios.senha = \'{}\''.format(email, password)) u = cursor.fetchone() if u is not None: return UserModel(id=u[0], email=u[1], name=u[2], birthdate=u[3], gender=u[4], password=u[5], actor=u[6], publishable=u[7], friends=list(UserModel.find_friends(u[0]))) return None
def find_friends(uid): with Config().get_db_connection().cursor() as cursor: cursor.execute( 'SELECT u.codigo, u.email, u.nome, u.data_nascimento, u.sexo, u.senha, u.codigo_ator, u.codigo_publicavel ' 'FROM usuarios as u WHERE u.codigo IN' '(SELECT s.codigo_usuario_2 from sao_amigos as s' ' WHERE s.codigo_usuario_1 = {})'.format(uid)) for u in cursor.fetchall(): yield UserModel(id=u[0], email=u[1], name=u[2], birthdate=u[3], gender=u[4], password=u[5], actor=u[6], publishable=u[7])
def find_by_actor(uid): with Config().get_db_connection().cursor() as cursor: cursor.execute('SELECT codigo, data_publicacao, conteudo, codigo_ator, codigo_publicavel, ' 'codigo_interativo, codigo_pertence ' 'FROM publicacoes ' 'WHERE publicacoes.codigo_ator = {} ' 'ORDER BY data_publicacao DESC ' .format(uid)) for p in cursor.fetchall(): yield PostModel(id=p[0], created_at=p[1], content=p[2], actor=p[3], publishable=p[4], interactable=p[5], belong=p[6], likes=PostModel.get_likes(p[5]))
def save(self): if self.id is None: with Config().get_db_connection().cursor() as cursor: cursor.execute('INSERT INTO interativos VALUES(NULL)') cursor.execute('SELECT LAST_INSERT_ID()') self.interactable = cursor.fetchone()[0] cursor.execute('INSERT INTO publicaveis VALUES(NULL)') cursor.execute('SELECT LAST_INSERT_ID()') self.publishable = cursor.fetchone()[0] self.belong = 'NULL' if self.belong is None else self.belong cursor.execute('INSERT INTO publicacoes (data_publicacao, conteudo, codigo_ator, codigo_publicavel, ' 'codigo_interativo, codigo_pertence) ' 'VALUES("{}", "{}", {}, {}, {}, {})' .format(self.created_at, self.content, self.actor, self.publishable, self.interactable, self.belong)) cursor.execute('SELECT LAST_INSERT_ID()') self.id = cursor.fetchone()[0] Config().get_db_connection().commit() return self.id
def find_by_actor_and_interactable(actor, interactable): with Config().get_db_connection().cursor() as cursor: cursor.execute( 'SELECT codigo_ator, codigo_interativo, data ' 'FROM interacoes ' 'WHERE interacoes.codigo_ator = {} and interacoes.codigo_interativo = {}' .format(actor, interactable)) u = cursor.fetchone() if u is not None: return InteractionModel(actor=u[0], interactable=u[1], date=u[2]) return None
def get_likes(pid): with Config().get_db_connection().cursor() as cursor: cursor.execute('SELECT COUNT(codigo_interativo) FROM interacoes WHERE interacoes.codigo_interativo = {}' .format(pid)) return cursor.fetchone()[0]
def check_if_actor_liked(self, actor): with Config().get_db_connection().cursor() as cursor: cursor.execute('SELECT COUNT(codigo_interativo) FROM interacoes WHERE interacoes.codigo_interativo = {} and interacoes.codigo_ator = {}}' .format(self.interactable, actor)) return cursor.fetchone()[0] > 0