|
|
|
|
| import streamlit as st
|
| from banco import engine
|
| from sqlalchemy import text
|
|
|
|
|
|
|
| SQLS = [
|
| "ALTER TABLE usuarios ADD COLUMN nome VARCHAR(255);",
|
| "ALTER TABLE usuarios ADD COLUMN email VARCHAR(255);",
|
| "CREATE UNIQUE INDEX IF NOT EXISTS ix_usuarios_email ON usuarios (email);"
|
| ]
|
|
|
| def aplicar_alteracoes():
|
| with engine.begin() as conn:
|
| for sql in SQLS:
|
| conn.execute(text(sql))
|
|
|
| def verificar_colunas():
|
|
|
| try:
|
| with engine.begin() as conn:
|
| result = conn.execute(text("PRAGMA table_info(usuarios)"))
|
| cols = [row[1] for row in result.fetchall()]
|
| return cols
|
| except:
|
|
|
| try:
|
| with engine.begin() as conn:
|
| result = conn.execute(text("""
|
| SELECT column_name
|
| FROM information_schema.columns
|
| WHERE table_name = 'usuarios'
|
| ORDER BY ordinal_position;
|
| """))
|
| cols = [row[0] for row in result.fetchall()]
|
| return cols
|
| except:
|
| return None
|
|
|
| def main():
|
| st.title("🛠️ Ferramentas de Banco")
|
|
|
| if st.session_state.get("perfil") != "admin":
|
| st.error("❌ Acesso restrito ao administrador.")
|
| return
|
|
|
| st.info("Este utilitário adiciona as colunas **nome** e **email** na tabela **usuarios** e cria o índice único do **email**.")
|
|
|
| cols = verificar_colunas()
|
| if cols:
|
| st.write("📋 Colunas atuais em `usuarios`:", ", ".join(cols))
|
| else:
|
| st.warning("Não foi possível listar colunas automaticamente. Ainda é possível aplicar as alterações.")
|
|
|
| if st.button("✅ Aplicar alterações (nome/email + índice)"):
|
| try:
|
| aplicar_alteracoes()
|
| st.success("Alterações aplicadas com sucesso! Reinicie a aplicação se necessário.")
|
| except Exception as e:
|
| st.error(f"Erro ao aplicar alterações: {e}")
|
| st.stop()
|
|
|
| st.caption("Dica: após aplicar, confira o cadastro/edição de usuários e o login para ver email/nome funcionando.")
|
|
|