- Separa modelos em entidades individuais - Cria camada de serviços para acesso a dados - Implementa controladores para lógica de negócio - Organiza rotas em blueprints por funcionalidade - Adiciona documentação de arquitetura no README - Cria script para preparação da estrutura 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
95 lines
2.9 KiB
Python
95 lines
2.9 KiB
Python
from sqlalchemy.orm import joinedload
|
|
|
|
from models.entities.usuario import Usuario
|
|
from services.database_service import DatabaseService
|
|
|
|
class UsuarioService:
|
|
"""Serviço para operações com usuários"""
|
|
|
|
@staticmethod
|
|
def listar_usuarios():
|
|
"""Lista todos os usuários"""
|
|
db = DatabaseService.get_db_connection()
|
|
try:
|
|
usuarios = db.query(Usuario).options(
|
|
joinedload(Usuario.roles),
|
|
joinedload(Usuario.militante),
|
|
joinedload(Usuario.setor),
|
|
joinedload(Usuario.cr),
|
|
joinedload(Usuario.celula)
|
|
).all()
|
|
return usuarios
|
|
finally:
|
|
db.close()
|
|
|
|
@staticmethod
|
|
def buscar_usuario(user_id):
|
|
"""Busca um usuário pelo ID"""
|
|
db = DatabaseService.get_db_connection()
|
|
try:
|
|
usuario = db.query(Usuario).options(
|
|
joinedload(Usuario.roles),
|
|
joinedload(Usuario.militante),
|
|
joinedload(Usuario.setor),
|
|
joinedload(Usuario.cr),
|
|
joinedload(Usuario.celula)
|
|
).get(user_id)
|
|
return usuario
|
|
finally:
|
|
db.close()
|
|
|
|
@staticmethod
|
|
def buscar_por_username(username):
|
|
"""Busca um usuário pelo nome de usuário"""
|
|
db = DatabaseService.get_db_connection()
|
|
try:
|
|
usuario = db.query(Usuario).filter(Usuario.username == username).first()
|
|
return usuario
|
|
finally:
|
|
db.close()
|
|
|
|
@staticmethod
|
|
def buscar_por_email(email):
|
|
"""Busca um usuário pelo email"""
|
|
db = DatabaseService.get_db_connection()
|
|
try:
|
|
usuario = db.query(Usuario).filter(Usuario.email == email).first()
|
|
return usuario
|
|
finally:
|
|
db.close()
|
|
|
|
@staticmethod
|
|
def salvar_usuario(usuario):
|
|
"""Salva um usuário no banco de dados"""
|
|
db = DatabaseService.get_db_connection()
|
|
try:
|
|
if usuario.id is None: # Novo usuário
|
|
db.add(usuario)
|
|
else: # Usuário existente
|
|
db.merge(usuario)
|
|
db.commit()
|
|
return True
|
|
except Exception as e:
|
|
db.rollback()
|
|
print(f"Erro ao salvar usuário: {e}")
|
|
return False
|
|
finally:
|
|
db.close()
|
|
|
|
@staticmethod
|
|
def excluir_usuario(user_id):
|
|
"""Exclui um usuário pelo ID"""
|
|
db = DatabaseService.get_db_connection()
|
|
try:
|
|
usuario = db.query(Usuario).get(user_id)
|
|
if usuario:
|
|
db.delete(usuario)
|
|
db.commit()
|
|
return True
|
|
return False
|
|
except Exception as e:
|
|
db.rollback()
|
|
print(f"Erro ao excluir usuário: {e}")
|
|
return False
|
|
finally:
|
|
db.close() |