import subprocess from pathlib import Path from datetime import datetime def create_baseline(): """Create baseline migration in deploy/migrations""" try: # Get paths root_dir = Path(__file__).parent.parent deploy_dir = root_dir / "deploy" migrations_dir = deploy_dir / "migrations" schema_path = root_dir / "schema.prisma" # Create migrations directory migrations_dir.mkdir(parents=True, exist_ok=True) # Create migration_lock.toml if it doesn't exist lock_file = migrations_dir / "migration_lock.toml" if not lock_file.exists(): lock_file.write_text('provider = "postgresql"\n') # Create timestamp-based migration directory timestamp = datetime.now().strftime("%Y%m%d%H%M%S") migration_dir = migrations_dir / f"{timestamp}_baseline" migration_dir.mkdir(parents=True, exist_ok=True) # Generate migration SQL result = subprocess.run( [ "prisma", "migrate", "diff", "--from-empty", "--to-schema-datamodel", str(schema_path), "--script", ], capture_output=True, text=True, check=True, ) # Write the SQL to migration.sql migration_file = migration_dir / "migration.sql" migration_file.write_text(result.stdout) print(f"Created baseline migration in {migration_dir}") return True except subprocess.CalledProcessError as e: print(f"Error running prisma command: {e.stderr}") return False except Exception as e: print(f"Error creating baseline migration: {str(e)}") return False if __name__ == "__main__": create_baseline()