| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- # Generated by hand on 2026-01-01
- # Converges machine app for 0.8.6rc0 → 0.9.x migration path
- # Drops old InstalledBinary table and ensures Binary table exists
- from django.db import migrations, connection
- def converge_binary_table(apps, schema_editor):
- """
- Drop machine_installedbinary if it exists (0.8.6rc0 path).
- Create machine_binary if it doesn't exist (needed by Process model).
- """
- cursor = connection.cursor()
- # Check what tables exist
- cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name IN ('machine_installedbinary', 'machine_binary')")
- existing_tables = {row[0] for row in cursor.fetchall()}
- print(f'DEBUG 0005: Existing tables: {existing_tables}')
- # Drop old InstalledBinary table if it exists (0.8.6rc0 path)
- if 'machine_installedbinary' in existing_tables:
- print('✓ Dropping machine_installedbinary table (0.8.6rc0 divergence)')
- cursor.execute("DROP TABLE IF EXISTS machine_installedbinary")
- # Create Binary table if it doesn't exist
- # This handles the case where 0.8.6rc0's 0001_initial didn't create it
- if 'machine_binary' not in existing_tables:
- print('✓ Creating machine_binary table with correct schema')
- cursor.execute("""
- CREATE TABLE machine_binary (
- id TEXT PRIMARY KEY NOT NULL,
- created_at DATETIME NOT NULL,
- modified_at DATETIME NOT NULL,
- num_uses_succeeded INTEGER NOT NULL DEFAULT 0,
- num_uses_failed INTEGER NOT NULL DEFAULT 0,
- machine_id TEXT NOT NULL REFERENCES machine_machine(id) ON DELETE CASCADE,
- name VARCHAR(63) NOT NULL,
- binproviders VARCHAR(255) NOT NULL DEFAULT 'env',
- overrides TEXT NOT NULL DEFAULT '{}',
- binprovider VARCHAR(63) NOT NULL DEFAULT 'env',
- abspath VARCHAR(255) NOT NULL,
- version VARCHAR(128) NOT NULL,
- sha256 VARCHAR(64) NOT NULL DEFAULT '',
- status VARCHAR(16) NOT NULL DEFAULT 'succeeded',
- retry_at DATETIME NULL,
- output_dir VARCHAR(255) NOT NULL DEFAULT ''
- )
- """)
- # Create indexes
- cursor.execute("CREATE INDEX machine_binary_machine_id_idx ON machine_binary(machine_id)")
- cursor.execute("CREATE INDEX machine_binary_name_idx ON machine_binary(name)")
- cursor.execute("CREATE INDEX machine_binary_abspath_idx ON machine_binary(abspath)")
- print('✓ machine_binary table created')
- else:
- print('✓ machine_binary table already exists')
- class Migration(migrations.Migration):
- dependencies = [
- ('machine', '0001_initial'),
- ]
- operations = [
- migrations.RunPython(
- converge_binary_table,
- reverse_code=migrations.RunPython.noop,
- ),
- ]
|