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