import uuid import os import sys # This is the crucial part to fix the import error. # We add the 'company-explorer' directory to the path, so imports can be absolute # from the 'backend' module. sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../..'))) from backend.database import Contact, SessionLocal def migrate_existing_contacts(): """ Generates and adds an unsubscribe_token for all existing contacts that do not have one yet. """ db = SessionLocal() try: contacts_to_update = db.query(Contact).filter(Contact.unsubscribe_token == None).all() if not contacts_to_update: print("All contacts already have an unsubscribe token. No migration needed.") return print(f"Found {len(contacts_to_update)} contacts without an unsubscribe token. Generating tokens...") for contact in contacts_to_update: token = str(uuid.uuid4()) contact.unsubscribe_token = token print(f" - Generated token for contact ID {contact.id} ({contact.email})") db.commit() print("\nSuccessfully updated all contacts with new unsubscribe tokens.") except Exception as e: print(f"An error occurred: {e}") db.rollback() finally: db.close() if __name__ == "__main__": print("Starting migration: Populating unsubscribe_token for existing contacts.") migrate_existing_contacts() print("Migration finished.")