mirror of
https://github.com/basicmachines-co/basic-memory
synced 2026-06-21 13:47:35 +00:00
migrate entities to folders
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
"""Script to migrate entity files into type-based folders."""
|
||||
import re
|
||||
import asyncio
|
||||
from pathlib import Path
|
||||
|
||||
from basic_memory.models import Entity
|
||||
|
||||
async def migrate_files(entities_path: Path):
|
||||
"""Move entity files into type-based directories."""
|
||||
|
||||
# Get all markdown files
|
||||
files = list(entities_path.glob("*.md"))
|
||||
print(f"Found {len(files)} markdown files")
|
||||
|
||||
# Track progress
|
||||
moved = []
|
||||
errors = []
|
||||
|
||||
for file in files:
|
||||
try:
|
||||
# Read file
|
||||
content = file.read_text()
|
||||
|
||||
# Extract type using regex
|
||||
type_match = re.search(r'^type:\s*(.+?)$', content, re.MULTILINE)
|
||||
if not type_match:
|
||||
errors.append((file, "No type found"))
|
||||
continue
|
||||
|
||||
entity_type = type_match.group(1).strip()
|
||||
|
||||
# Create type directory
|
||||
type_dir = entities_path / entity_type
|
||||
type_dir.mkdir(exist_ok=True)
|
||||
|
||||
# Move the file
|
||||
new_path = type_dir / file.name
|
||||
file.rename(new_path)
|
||||
|
||||
moved.append((file, new_path))
|
||||
print(f"Moved {file.name} to {entity_type}/")
|
||||
|
||||
except Exception as e:
|
||||
errors.append((file, str(e)))
|
||||
print(f"Error processing {file}: {e}")
|
||||
|
||||
# Print summary
|
||||
print("\nMigration complete!")
|
||||
print(f"Successfully moved: {len(moved)}")
|
||||
if errors:
|
||||
print("\nErrors:")
|
||||
for file, error in errors:
|
||||
print(f" {file.name}: {error}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
|
||||
if len(sys.argv) != 2:
|
||||
print("Usage: python migrate_to_folders.py <entities_path>")
|
||||
sys.exit(1)
|
||||
|
||||
entities_path = Path(sys.argv[1])
|
||||
if not entities_path.exists():
|
||||
print(f"Entities directory not found: {entities_path}")
|
||||
sys.exit(1)
|
||||
|
||||
asyncio.run(migrate_files(entities_path))
|
||||
Reference in New Issue
Block a user