diff --git a/app/db/clientes.py b/app/db/clientes.py index 6899786..265a220 100644 --- a/app/db/clientes.py +++ b/app/db/clientes.py @@ -229,3 +229,17 @@ def excluir_cliente(cliente_id: int) -> bool: return cur.rowcount > 0 finally: conn.close() + + +def alternar_ativo(cliente_id: int) -> bool: + """True se a linha existia (cur.rowcount > 0) — mesma lógica de + excluir_cliente/redefinir_senha pra distinguir "alternou" de "não + tinha nada pra alternar". UPDATE ... SET ATIVO = 1 - ATIVO inverte o + valor atomicamente, sem precisar de um SELECT antes.""" + conn = get_connection() + try: + with conn.cursor() as cur: + cur.execute("UPDATE CLIENTE SET ATIVO = 1 - ATIVO WHERE ID = %s", (cliente_id,)) + return cur.rowcount > 0 + finally: + conn.close() diff --git a/app/db/log.py b/app/db/log.py index 61969d3..0045093 100644 --- a/app/db/log.py +++ b/app/db/log.py @@ -65,3 +65,16 @@ def contar() -> int: return cur.fetchone()["total"] finally: conn.close() + + +def limpar() -> None: + """Apaga todo o histórico de LOG_PAINEL. Quem chama (o router) grava + uma entrada nova logo depois disso, registrando quem limpou — nunca + chamar isso sem seguir com um registrar() depois, senão o rastro da + própria limpeza se perde.""" + conn = get_connection() + try: + with conn.cursor() as cur: + cur.execute("DELETE FROM LOG_PAINEL") + finally: + conn.close() diff --git a/tests/test_db_clientes.py b/tests/test_db_clientes.py index e52d499..eba9c4d 100644 --- a/tests/test_db_clientes.py +++ b/tests/test_db_clientes.py @@ -212,6 +212,18 @@ def test_criar_cliente_grava_ativo(cliente_id): assert cliente["ATIVO"] == 1 +def test_alternar_ativo_inverte_o_valor(cliente_id): + assert db_clientes.obter_cliente(cliente_id)["ATIVO"] == 1 + assert db_clientes.alternar_ativo(cliente_id) is True + assert db_clientes.obter_cliente(cliente_id)["ATIVO"] == 0 + assert db_clientes.alternar_ativo(cliente_id) is True + assert db_clientes.obter_cliente(cliente_id)["ATIVO"] == 1 + + +def test_alternar_ativo_id_inexistente_retorna_false(): + assert db_clientes.alternar_ativo(999999999) is False + + def test_excluir_cliente_com_contato_bloqueia(cliente_id): conn = get_connection() try: diff --git a/tests/test_db_log.py b/tests/test_db_log.py index 3262c76..36b6e19 100644 --- a/tests/test_db_log.py +++ b/tests/test_db_log.py @@ -40,3 +40,12 @@ def test_contar(limpar): db_log.registrar("teste-log", "criar", "cliente", "1", True) depois = db_log.contar() assert depois == antes + 1 + + +def test_limpar_apaga_tudo(limpar): + db_log.registrar("teste-log", "criar", "cliente", "1", True) + assert db_log.contar() > 0 + + db_log.limpar() + + assert db_log.contar() == 0