Files
echoes-of-the-ash/old/migrate_interactable_cooldowns.py
2025-11-27 16:27:01 +01:00

44 lines
1.5 KiB
Python

#!/usr/bin/env python3
"""
Migration script to update interactable_cooldowns table schema.
Changes from single instance_id to instance_id + action_id composite key.
"""
import asyncio
from api.database import engine
from sqlalchemy import text
async def migrate():
"""Drop and recreate interactable_cooldowns table with new schema."""
async with engine.begin() as conn:
print("🔄 Migrating interactable_cooldowns table...")
# Drop old table
await conn.execute(text("DROP TABLE IF EXISTS interactable_cooldowns CASCADE"))
print("✅ Dropped old interactable_cooldowns table")
# Create new table with updated schema
await conn.execute(text("""
CREATE TABLE interactable_cooldowns (
id SERIAL PRIMARY KEY,
interactable_instance_id VARCHAR NOT NULL,
action_id VARCHAR NOT NULL,
expiry_timestamp DOUBLE PRECISION NOT NULL,
CONSTRAINT uix_interactable_action UNIQUE (interactable_instance_id, action_id)
)
"""))
print("✅ Created new interactable_cooldowns table with per-action cooldowns")
# Create index for faster lookups
await conn.execute(text("""
CREATE INDEX IF NOT EXISTS idx_interactable_cooldowns_expiry
ON interactable_cooldowns(expiry_timestamp)
"""))
print("✅ Created index on expiry_timestamp")
print("✨ Migration complete!")
if __name__ == "__main__":
asyncio.run(migrate())