from extensions import db from models.user import User from sqlalchemy.exc import IntegrityError def seed_users(): # Lista de usuários para criar users_data = [ #---login farmacia 1----- { "username": "admin", "email": "admin@exemplo.com", "phone": "123456789", "password": "senha123" }, { "username": "user1", "email": "user1@exemplo.com", "phone": "987654321", "password": "senha456" }, #-----login farmacia 2-------- { "username": "fogo_admin", "email": "fogodechaoadmin@exemplo.com", "phone": "983749265", "password": "senha123" }, { "username": "fogo_user_2", "email": "fogodechaouser2@exemplo.com", "phone": "983084637", "password": "senha456" }, #----------login farmacia 3---------- { "username": "sabin_admin", "email": "sabinadmin@exemplo.com", "phone": "983749265", "password": "senha123" }, { "username": "sabin_user_2", "email": "sabinuser2@exemplo.com", "phone": "983086725", "password": "senha456" }, ] users_added = False # Flag para verificar se algum usuário foi adicionado for user_data in users_data: try: # Verifica se o usuário já existe pelo username ou email existing_user = User.query.filter( (User.username == user_data["username"]) | (User.email == user_data["email"]) ).first() if existing_user: print(f"Usuário com username '{user_data['username']}' ou email '{user_data['email']}' já existe!") continue # Pula para o próximo usuário caso já exista # Caso o usuário não exista, cria um novo user = User( username=user_data["username"], email=user_data["email"], phone=user_data["phone"], ) user.set_password(user_data["password"]) # Gerar o hash da senha db.session.add(user) print(f"Usuário {user_data['username']} criado com sucesso!") users_added = True # Marca que um usuário foi adicionado except IntegrityError as e: db.session.rollback() # Reverte a transação em caso de erro if 'phone' in str(e.orig): print(f"Erro: O número de telefone '{user_data['phone']}' já está registrado. Tente outro número.") elif 'email' in str(e.orig): print(f"Erro: O email '{user_data['email']}' já está registrado. Tente outro email.") else: print(f"Erro ao criar o usuário {user_data['username']}. Ocorreu um erro interno.") except Exception as e: db.session.rollback() # Reverte a transação em caso de erro print(f"Erro ao criar o usuário {user_data['username']}: {e}") # Commit só se algum usuário foi realmente adicionado if users_added: try: db.session.commit() # Commit após adicionar os novos usuários print("Usuários criados com sucesso!") except Exception as e: print(f"Erro ao salvar os dados. Tente novamente mais tarde.") db.session.rollback() else: print("Nenhum usuário foi adicionado, nada para salvar.")