| |
|
| |
|
| | 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.")
|
| |
|